AI通信协议服务器

一个基于TypeScript和Express的MCP服务器实现,支持HTTP流式传输,用于AI助手与外部数据源和工具的实时通信。

  • by Shreedhar73
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 shreedhar73/mcp-client-server-demo

使用说明

解释聊天MCP

使用TypeScript和Express构建的具有HTTP流功能的模型上下文协议(MCP)服务器实现。该项目演示了如何创建一个MCP服务器,该服务器可以使用流式响应通过HTTP与AI客户端通信。

什么是MCP?

模型上下文协议(MCP)是人工智能助手与外部数据源和工具通信的标准。该实施提供了:

  • HTTP流传输:客户端和MCP服务器之间的实时通信
  • 会话管理:具有可恢复性支持的持续会话
  • 工具集成:易于使用的工具注册和调用系统
  • 快速集成:基于Express.js构建,易于部署

特性

  • ✅ 用于实时通信的HTTP流传输
  • ✅ 会话持久性和可恢复性
  • ✅ 工具注册和执行
  • ✅ Express.js服务器集成
  • ✅ TypeScript支持
  • ✅ Docker支持(即将推出)

先决条件

  • Node.js 18+
  • npm或纱线
  • TypeScript知识(用于开发)

安装

  1. 克隆存储库:
git clone <repository-url>
cd explain-chat-mcp
  1. 安装依赖项:
npm install
  1. 构建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=<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<CallToolResult> => {
    // 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

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

ISC许可证

故障排除

常见问题

  1. 端口已在使用中:更改PORT环境变量
  2. TypeScript编译错误:运行 npm run build 检查类型错误
  3. 连接被拒绝:启动客户端之前,请确保服务器正在运行

调试模式

通过设置启用调试日志记录 DEBUG 环境变量:

DEBUG=* npm run server

相关链接