流式HTTP服务器

一个支持流式HTTP(SSE)传输的MCP服务器,适用于ChatGPT或其他MCP客户端,提供跨域访问、健康检查和易于扩展的功能。

  • by Shirakawa11111
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Shirakawa11111/mac_mcp

使用说明

MCP Streamable HTTP Server

这是一个支持streamable HTTP (SSE) 传输的MCP(Model Context Protocol)服务器,可以被ChatGPT或其他MCP客户端使用。

功能特性

  • ✅ 支持HTTP SSE(Server-Sent Events)传输
  • ✅ CORS支持,允许跨域访问
  • ✅ 示例工具实现(获取时间、计算器)
  • ✅ 健康检查端点
  • ✅ 易于扩展和自定义

快速开始

1. 安装依赖

npm install

2. 启动服务器

npm start

服务器将在 http://localhost:3000 上运行。

3. 开发模式(自动重启)

npm run dev

端点说明

  • GET / - 服务器信息
  • GET /sse - SSE连接端点(MCP客户端连接这里)
  • POST /message - 消息接收端点
  • GET /health - 健康检查

在ChatGPT中使用

方法1: 本地测试(需要公网访问)

如果你想让ChatGPT访问你的本地服务器,你需要:

  1. 使用ngrok或类似工具将本地服务器暴露到公网:
# 安装ngrok (如果还没有)
brew install ngrok  # macOS
# 或者从 https://ngrok.com 下载

# 启动隧道
ngrok http 3000
  1. ngrok会提供一个公网URL,例如:https://abc123.ngrok.io

  2. 在ChatGPT中配置MCP服务器URL为:https://abc123.ngrok.io/sse

方法2: 部署到云服务

将此服务器部署到云平台(如Railway、Render、Fly.io等),然后使用公网URL。

自定义工具

在 server.js 中,你可以添加自己的工具:

// 在 tools/list 处理器中添加工具定义
server.setRequestHandler('tools/list', async () => {
  return {
    tools: [
      {
        name: 'your_tool',
        description: '你的工具描述',
        inputSchema: {
          type: 'object',
          properties: {
            // 定义参数
          },
        },
      },
    ],
  };
});

// 在 tools/call 处理器中实现工具逻辑
server.setRequestHandler('tools/call', async (request) => {
  const { name, arguments: args } = request.params;

  if (name === 'your_tool') {
    // 实现你的工具逻辑
    return {
      content: [
        {
          type: 'text',
          text: '结果',
        },
      ],
    };
  }
});

环境变量

创建 .env 文件(可以从 .env.example 复制):

cp .env.example .env

然后编辑 .env 设置端口等配置。

测试连接

服务器启动后,可以访问:

# 查看服务器信息
curl http://localhost:3000/

# 健康检查
curl http://localhost:3000/health

技术栈

  • Node.js
  • Express.js
  • @modelcontextprotocol/sdk
  • Server-Sent Events (SSE)

故障排除

ChatGPT无法连接

  1. 确保服务器正在运行
  2. 确保使用的是公网可访问的URL(本地服务器需要使用ngrok等工具)
  3. 检查CORS设置
  4. 查看服务器日志以获取错误信息

工具调用失败

  1. 检查工具定义的inputSchema是否正确
  2. 确保tools/call处理器正确实现了工具逻辑
  3. 查看错误返回信息

许可证

MIT