混合模式MCP服务器

一个支持stdio和HTTP两种模式的MCP服务器,适用于Claude Desktop和Web开发。

  • by lbrenman
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 lbrenman/my-mcp-server

使用说明

混合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
      

🌐 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客户端使用情况

  1. 启动HTTP服务器: npm run start:http
  2. 打开web客户端:导航到 http://localhost:3000
  3. 连接:客户端将自动连接到 http://localhost:3000/mcp
  4. 测试工具:使用快速操作或手动执行工具

📡 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密钥:

  1. 从获取免费API密钥 OpenWeatherMap
  2. 替换中的占位符 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 -环境模式

🔄 扩展服务器

要添加新工具,请执行以下操作:

  1. 将工具定义添加到 TOOLS 数组
  2. 添加案例 executeTool 函数
  3. 执行工具逻辑
  4. 如果需要,更新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开发工作流! 🎉