Skip to content
Merged
4 changes: 4 additions & 0 deletions packages/mcp/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import { dirname, resolve } from "node:path";
import { readFileSync } from "node:fs";
import { fileURLToPath } from "node:url";

import { registerTools } from "./tools/index.js";

const currentFilePath = fileURLToPath(import.meta.url);
const currentDirectoryPath = dirname(currentFilePath);
const packageJsonPath = resolve(currentDirectoryPath, "../package.json");
Expand Down Expand Up @@ -37,6 +39,8 @@ const buildServer = (): McpServer => {
version: getServerVersion(),
});

registerTools(server);

return server;
};

Expand Down
10 changes: 10 additions & 0 deletions packages/mcp/src/tools/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { McpTool } from "./types.js";

const TOOLS: McpTool[] = [];
Comment thread
zamoore marked this conversation as resolved.

export function registerTools(server: McpServer) {
for (const tool of TOOLS) {
server.registerTool(tool.name, tool.config, tool.executeCallback);
}
}
27 changes: 27 additions & 0 deletions packages/mcp/src/tools/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import type { ToolCallback } from "@modelcontextprotocol/sdk/server/mcp.js";
import type {
AnySchema,
ZodRawShapeCompat,
} from "@modelcontextprotocol/sdk/server/zod-compat.js";
import type { ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";

export interface McpTool<
InputArgs extends ZodRawShapeCompat | AnySchema | undefined =
| ZodRawShapeCompat
| AnySchema
| undefined,
OutputArgs extends ZodRawShapeCompat | AnySchema =
| ZodRawShapeCompat
| AnySchema,
> {
Comment thread
Copilot marked this conversation as resolved.
name: string;
config: {
title?: string;
description?: string;
inputSchema?: InputArgs;
outputSchema?: OutputArgs;
annotations?: ToolAnnotations;
_meta?: Record<string, unknown>;
};
executeCallback: ToolCallback<InputArgs>;
}