解释聊天MCP
使用TypeScript和Express构建的具有HTTP流功能的模型上下文协议(MCP)服务器实现。该项目演示了如何创建一个MCP服务器,该服务器可以使用流式响应通过HTTP与AI客户端通信。
什么是MCP?
模型上下文协议(MCP)是人工智能助手与外部数据源和工具通信的标准。该实施提供了:
- HTTP流传输:客户端和MCP服务器之间的实时通信
- 会话管理:具有可恢复性支持的持续会话
- 工具集成:易于使用的工具注册和调用系统
- 快速集成:基于Express.js构建,易于部署
特性
- ✅ 用于实时通信的HTTP流传输
- ✅ 会话持久性和可恢复性
- ✅ 工具注册和执行
- ✅ Express.js服务器集成
- ✅ TypeScript支持
- ✅ Docker支持(即将推出)
先决条件
- Node.js 18+
- npm或纱线
- TypeScript知识(用于开发)
安装
- 克隆存储库:
git clone
cd explain-chat-mcp- 安装依赖项:
npm install- 构建TypeScript代码:
npm run build运行服务器
发展模式
在开发模式下启动MCP服务器:
npm run server默认情况下,服务器将在端口3000上启动。您可以通过设置 PORT 环境变量:
PORT=8080 npm run server生产模式
对于生产,首先构建项目:
npm run build
npm run server运行客户端
该项目包括一个测试客户端,演示如何连接到MCP服务器:
npm run client这将启动一个连接到MCP服务器的客户端,并在端口4000上提供一个简单的HTTP API。
API终点
MCP服务器(端口3000)
POST /mcp-处理MCP请求(客户端到服务器)GET /mcp-服务器发送了服务器到客户端通信的事件DELETE /mcp-终止MCP会话
测试客户端API(端口4000)
GET /greet?name=-测试问候工具
可用工具
服务器当前包括:
- 问候 -一个简单的问候工具,它接受一个名称参数并返回一个个性化的问候
添加新工具
要添加新工具,请在中修改服务器设置 src/index.ts:
server.tool(
"your-tool-name",
"Description of your tool",
{
// Define your tool parameters using Zod schemas
param1: z.string().describe("Description of param1"),
param2: z.number().describe("Description of param2"),
},
async ({ param1, param2 }): Promise => {
// Your tool implementation here
return {
content: [
{
type: "text",
text: `Your tool result: ${param1}, ${param2}`,
},
],
};
}
);测试
该项目包括几个测试脚本:
# Test the MCP server
npm test
# Test the API endpoints
npm run test:api
# Test the MCP client
npm run test:client发展
项目结构
src/
├── index.ts # Main server entry point
├── client/
│ └── mcp-client.ts # Test client implementation
├── server/
│ └── server_runner.ts # Express server setup
└── methods/ # Custom MCP methods (empty for now)关键组件
- ExpressHttpStreamableMcpServer:主服务器工厂功能
- 流式HTTP服务器传输:处理HTTP流传输
- McpServer:核心MCP服务器实现
- InMemory事件存储:提供会话可恢复性
环境变量
PORT-服务器端口(默认值:3000)
Docker支持
容器化部署包含一个Dockerfile:
# Build the Docker image
docker build -t explain-chat-mcp .
# Run the container
docker run -p 3000:3000 explain-chat-mcp贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
ISC许可证
故障排除
常见问题
- 端口已在使用中:更改PORT环境变量
- TypeScript编译错误:运行
npm run build检查类型错误 - 连接被拒绝:启动客户端之前,请确保服务器正在运行
调试模式
通过设置启用调试日志记录 DEBUG 环境变量:
DEBUG=* npm run server