[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
parent 1c64b36c78
commit daec74fbc1
5 changed files with 130 additions and 10 deletions

View File

@@ -1,15 +1,17 @@
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { registerTools } from "../tools/index.js";
import { registerResources } from "../resources/index.js";
import { dirname, join } from "path";
import { readFileSync } from "fs";
import { fileURLToPath } from "url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const instructions = readInstructions();
import { registerTools } from "../tools/index.js";
import { registerResources } from "../resources/index.js";
import { registerPrompts } from "../prompts/index.js";
// Create the MCP resource server
// Everything Server factory
export const createServer = () => {
// Read the server instructions
const instructions = readInstructions();
// Create the server
const server = new McpServer(
{
name: "mcp-servers/everything",
@@ -35,6 +37,9 @@ export const createServer = () => {
// Register the resources
registerResources(server);
// Register the prompts
registerPrompts(server);
return {
server,
cleanup: () => {},
@@ -42,14 +47,15 @@ export const createServer = () => {
};
};
// Read the server instructions from a file
function readInstructions(): string {
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const filePath = join(__dirname, "..", "docs", "server-instructions.md");
let instructions;
try {
instructions = readFileSync(
join(__dirname, "..", "docs", "server-instructions.md"),
"utf-8"
);
instructions = readFileSync(filePath, "utf-8");
} catch (e) {
instructions = "Server instructions not loaded: " + e;
}