[WIP] Refactor everything server to be more modular and use recommended APIs.

* Adding prompts (simple, complex, with completions)

* Add prompts/simple.ts
  - in addSimplePrompt()
    - register a simple prompt with no arguments

* Add prompts/complex.ts
  - in addComplexPrompt()
    - define promptArgsSchema containing a required city arg of type string and an optional state arg of type state
    - register the complex prompt with a prompt callback that combines the city and state into a prompt asking for the weather in that location

* Add prompts/completions.ts
  - in addPromptWithCompletions()
    - define promptArgsSchema containing department and name string fields with completion handlers
    - register the completable prompt with a prompt callback that combines the inputs into a prompt asking to promote the selected name to head of the selected department

* Add prompts/index.ts
  - import addSimplePrompt, addComplexPrompt, and addPromptWithCompletions
  - export registerPrompts function
  - in registerPrompts()
    - call addSimplePrompt
    - call addComplexPrompt
    - call addPromptWithCompletions

* In package.json
  - add prettier devDependency
  - add prettier:check script
  - add prettier:fix script
  - in build script, copy docs folder to dist

* All other changes were prettier formatting
This commit is contained in:
cliffhall 2025-12-05 16:09:35 -05:00
commit daec74fbc1

View file

@ -0,0 +1,32 @@
import { z } from "zod";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
export const addComplexPrompt = (server: McpServer) => {
const promptArgsSchema = {
city: z.string().describe("Name of the city"),
state: z.string().describe("Name of the state").optional(),
};
server.registerPrompt(
"complex-prompt",
{
title: "Complex Prompt",
description: "A prompt with two arguments, one required and one optional",
argsSchema: promptArgsSchema,
},
(args) => {
const location = `${args?.city}${args?.state ? `, ${args?.state}` : ""}`;
return {
messages: [
{
role: "user",
content: {
type: "text",
text: `What's weather in ${location}?`,
},
},
],
};
}
);
};