import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import { type CallToolResult, type GetPromptResult, type ReadResourceResult } from "@modelcontextprotocol/sdk/types.js";
export const getServer = (): McpServer => {
const server = new McpServer(
{
name: "mcp-server-template",
version: "0.0.1",
},
{ capabilities: {} },
);
// Register a simple prompt
server.prompt(
"greeting-template",
"A simple greeting prompt template",
{
name: z.string().describe("Name to include in greeting"),
},
async ({ name }): Promise<GetPromptResult> => {
return {
messages: [
{
role: "user",
content: {
type: "text",
text: `Please greet ${name} in a friendly manner.`,
},
},
],
};
},
);
server.tool(
"greet",
"A simple greeting tool",
{
name: z.string().describe("Name to greet"),
},
async ({ name }): Promise<CallToolResult> => {
return {
content: [
{
type: "text",
text: `Hello, ${name}!`,
},
],
};
},
);
server.resource(
"greeting-resource",
"https://example.com/greetings/default",
{ mimeType: "text/plain" },
async (): Promise<ReadResourceResult> => {
return {
contents: [
{
uri: "https://example.com/greetings/default",
text: "Hello, world!",
},
],
};
},
);
return server;
};