使用说明
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访问你的本地服务器,你需要:
- 使用ngrok或类似工具将本地服务器暴露到公网:
# 安装ngrok (如果还没有)
brew install ngrok # macOS
# 或者从 https://ngrok.com 下载
# 启动隧道
ngrok http 3000
-
ngrok会提供一个公网URL,例如:
https://abc123.ngrok.io -
在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无法连接
- 确保服务器正在运行
- 确保使用的是公网可访问的URL(本地服务器需要使用ngrok等工具)
- 检查CORS设置
- 查看服务器日志以获取错误信息
工具调用失败
- 检查工具定义的inputSchema是否正确
- 确保tools/call处理器正确实现了工具逻辑
- 查看错误返回信息
许可证
MIT