使用说明
混合MCP服务器设置指南
此设置同时提供 标准 (适用于克劳德桌面)和 超文本传输协议 (对于web界面)支持您的MCP服务器。
🚀 快速开始
- 再进行
npm install
- 运行服务器
- 适用于克劳德桌面(stdio模式)
# Default mode - runs in stdio mode for Claude Desktop npm start # Or explicitly specify stdio mode npm run start:stdio - 用于Web开发(HTTP模式)
# Run in HTTP mode for web clients npm run start:http # Or with auto-reload for development npm run dev - 自动检测模式
# Automatically detects mode based on environment # Uses HTTP if PORT env var is set, otherwise stdio PORT=3000 npm start
- 适用于克劳德桌面(stdio模式)
🌐 Claude桌面配置
将此添加到您的Claude Desktop MCP设置中:
{
"mcpServers": {
"my-mcp-server": {
"command": "node",
"args": ["/path/to/your/server.js"],
"env": {}
}
}
}
例如:
{
"mcpServers": {
"my-mcp-server": {
"command": "/Users/leorbrenman/.nvm/versions/node/v20.15.0/bin/node",
"args": ["/Users/leorbrenman/Dropbox/Work/Current Projects/AI/MCP/Nodejs_Tutorial/my-mcp-server/server.js"],
"env": {
"OPENWEATHER_API_KEY": "MY OPENWEATHERAPI KEY"
}
}
}
}
🔗 Web客户端使用情况
- 启动HTTP服务器:
npm run start:http - 打开web客户端:导航到
http://localhost:3000 - 连接:客户端将自动连接到
http://localhost:3000/mcp - 测试工具:使用快速操作或手动执行工具
📡 API终点
在HTTP模式下运行时,服务器会公开以下端点:
GET /health-健康检查POST /mcp-主MCP端点(处理所有MCP方法)POST /mcp/initialize-初始化MCP会话POST /mcp/tools/list-列出可用工具POST /mcp/tools/call-执行工具GET /-为web客户端提供服务
🛠️ 可用工具
您的服务器包括以下内置工具:
- 你好 -用个性化信息测试问候语
- get_weather -天气数据(需要API密钥设置)
- get_joke -随机编程笑话
- fetch_url -从任何URL获取内容
- calculate_tip -提示计算器
- 美国国家航空航天局 -美国国家航空航天局当天的天文图片
- fetch_json_enhanced -具有格式化功能的增强型JSON提取器
🔑 API密钥设置
对于天气数据,请替换 'your_api_key_here' 在……里面 server.js 使用OpenWeatherMap API密钥:
- 从获取免费API密钥 OpenWeatherMap
- 替换中的占位符
getWeather函数
🌍 GitHub代码空间
这种混合方法在GitHub Codespace中非常有效:
对于Web开发:
PORT=3000 npm run start:http
然后通过Codespace端口转发使用web客户端。
对于Claude Desktop:
使用带有Codespace扩展的VS Code Desktop通过stdio进行连接。
🐛 故障排除
连接问题
- Web客户端无法连接:确保服务器在HTTP模式下运行
- Claude桌面问题:验证stdio模式和文件路径
- CORS错误:检查一下
cors()中间件已启用
代码空间中的端口问题
- 确保Codespace中的端口3000是公共的
- 使用HTTPS URL(
https://your-codespace-url.app.github.dev) - 检查代码空间端口转发设置
工具执行错误
- 检查工具参数格式(必须是有效的JSON)
- 验证是否提供了所需的参数
- 检查服务器日志以获取详细的错误消息
📝 示例用法
使用Web客户端
// Connect to server
await mcpClient.connect('http://localhost:3000/mcp');
// List tools
const tools = await mcpClient.listTools();
// Call a tool
const result = await mcpClient.callTool('hello', { name: 'World' });
直接HTTP请求
# Initialize session
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}}}}'
# List tools
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
# Call a tool
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"hello","arguments":{"name":"World"}}}'
🚢 部署
地方发展
npm run dev # Auto-reload enabled
生产
npm run start:http
环境变量
PORT-HTTP服务器端口(默认值:3000)NODE_ENV-环境模式
🔄 扩展服务器
要添加新工具,请执行以下操作:
- 将工具定义添加到
TOOLS数组 - 添加案例
executeTool函数 - 执行工具逻辑
- 如果需要,更新web客户端示例
例子:
// Add to TOOLS array
{
name: 'my_new_tool',
description: 'Does something cool',
inputSchema: {
type: 'object',
properties: {
input: { type: 'string', description: 'Input parameter' }
},
required: ['input']
}
}
// Add to executeTool function
case 'my_new_tool':
return await myNewToolFunction(args.input);
您的MCP服务器现在支持Claude Desktop和web开发工作流! 🎉
