1import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
2import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3import { z } from "zod";
4
5// Create an MCP server
6const server = new McpServer({
7 name: "Demo",
8 version: "1.0.0"
9});
10
11// Add an addition tool
12server.tool("add",
13 { a: z.number(), b: z.number() },
14 async ({ a, b }) => ({
15 content: [{ type: "text", text: String(a + b) }]
16 })
17);
18
19// Add a dynamic greeting resource
20server.resource(
21 "greeting",
22 new ResourceTemplate("greeting://{name}", { list: undefined }),
23 async (uri, { name }) => ({
24 contents: [{
25 uri: uri.href,
26 text: `Hello, ${name}!`
27 }]
28 })
29);
30
31
32export default {
33 run: async () => {
34 const transport = new StdioServerTransport();
35 await server.connect(transport);
36 }
37}