5分钟内构建您的第一个 Model Context Protocol 服务器
pip install mcp
mcp_server.py
from mcp import McpServer, Resource, Tool from mcp.types import TextContent # 创建 MCP 服务器实例 server = McpServer("my-first-server") @server.resource("greeting/{name}") async def get_greeting(name: str) -> Resource: """返回个性化问候消息""" content = f"Hello, {name}! Welcome to MCP!" return Resource( uri=f"greeting/{name}", name=f"Greeting for {name}", mimeType="text/plain", text=content ) @server.tool("calculate") async def calculate(expression: str) -> str: """计算简单的数学表达式""" try: result = eval(expression) # 注意:生产环境请使用安全的计算方法 return f"计算结果: {expression} = {result}" except Exception as e: return f"计算错误: {str(e)}" if __name__ == "__main__": server.run()
python mcp_server.py
npm install @modelcontextprotocol/sdk # 或者使用 yarn yarn add @modelcontextprotocol/sdk
server.ts
import { McpServer } from '@modelcontextprotocol/sdk'; const server = new McpServer({ name: 'my-first-server', version: '1.0.0' }); // 注册资源 server.resource('greeting/{name}', async (name: string) => { return { uri: `greeting/${name}`, name: `Greeting for ${name}`, mimeType: 'text/plain', text: `Hello, ${name}! Welcome to MCP!` }; }); // 注册工具 server.tool('calculate', { description: '计算简单的数学表达式', parameters: { type: 'object', properties: { expression: { type: 'string', description: '要计算的数学表达式' } }, required: ['expression'] } }, async (args) => { try { const result = eval(args.expression); // 注意:生产环境请使用安全的计算方法 return `计算结果: ${args.expression} = ${result}`; } catch (error) { return `计算错误: ${error.message}`; } }); // 启动服务器 server.start();
npx ts-node server.ts # 或者先编译再运行 tsc server.ts && node server.js
{ "mcpServers": { "my-first-server": { "command": "python", "args": ["path/to/your/mcp_server.py"] } } }
@greeting/Alice
2 + 2
npx @modelcontextprotocol/inspector python mcp_server.py
服务器无法启动
Claude Desktop 无法连接
工具调用失败