index.tsā¢2.44 kB
#!/usr/bin/env node
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
CallToolRequest,
} from '@modelcontextprotocol/sdk/types.js';
// Create the server instance
const server = new Server(
{
name: 'hello-world-mcp',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
// Define available tools
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: 'hello',
description: 'Say hello to someone',
inputSchema: {
type: 'object',
properties: {
name: {
type: 'string',
description: 'The name of the person to greet',
default: 'World',
},
},
},
},
{
name: 'add',
description: 'Add two numbers together',
inputSchema: {
type: 'object',
properties: {
a: {
type: 'number',
description: 'First number',
},
b: {
type: 'number',
description: 'Second number',
},
},
required: ['a', 'b'],
},
},
],
};
});
// Handle tool calls
server.setRequestHandler(CallToolRequestSchema, async (request: CallToolRequest) => {
const { name, arguments: args } = request.params;
switch (name) {
case 'hello': {
const targetName = (args as { name?: string }).name || 'World';
return {
content: [
{
type: 'text',
text: `Hello, ${targetName}! š Welcome to the HelloWorld MCP server!`,
},
],
};
}
case 'add': {
const { a, b } = args as { a: number; b: number };
const result = a + b;
return {
content: [
{
type: 'text',
text: `${a} + ${b} = ${result}`,
},
],
};
}
default:
throw new Error(`Unknown tool: ${name}`);
}
});
// Start the server
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('HelloWorld MCP server running on stdio');
}
main().catch((error) => {
console.error('Server error:', error);
process.exit(1);
});