模型上下文协议回显服务器

一个最小化的模型上下文协议(MCP)服务器,用于回显客户端消息,适用于测试、调试和展示MCP集成。

  • by shizhMSFT
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 shizhMSFT/echo-mcp

使用说明

回声mcp

回显客户端消息的最小模型上下文协议(MCP)服务器。设计用于测试、调试和演示具有简单请求-响应行为的MCP集成。

特性

  • 回声工具:接受消息并原封不动地返回,以测试MCP客户端实现
  • 双重运输:支持本地(stdio)和远程(HTTP)通信模式
  • 请求日志记录:将所有包含原始数据的请求记录到stdout进行调试
  • MCP协议合规性:基于JSON-RPC 2.0的MCP规范的全面实现
  • 高性能:<100ms p95延迟,1000+请求/秒吞吐量,<100MB内存使用率

先决条件

  • 去:1.21或更高版本
  • 码头工人:用于容器化部署(可选)

安装

来源

# Clone repository
git clone https://github.com/shizhMSFT/echo-mcp.git
cd echo-mcp

# Download dependencies
go mod download

# Build binary
make build

# Or use go directly
go build -o echo-mcp ./cmd/echo-mcp

使用Docker

# Build Docker image
make docker-build

# Or use docker directly
docker build -t echo-mcp:latest .

快速开始

本地模式(标准运输)

# Start server in local mode
./echo-mcp --mode=local

# Send test message
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0"},"capabilities":{}}}' | ./echo-mcp --mode=local

远程模式(HTTP传输)

# Start server in remote mode (default port 8080)
./echo-mcp --mode=remote --port=8080

# Send test message via HTTP
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"echo","arguments":{"message":"Hello, MCP!"}}}'

配置

使用命令行标志或环境变量配置服务器:

标志 环境变量 默认值 描述
--mode ECHO_MCP_MODE local 运输方式: local (stdio)或 remote (HTTP)
--port ECHO_MCP_PORT 8080 HTTP服务器端口(仅远程模式)
--log-format ECHO_MCP_LOG_FORMAT text 日志格式: text 或 json
--log-level ECHO_MCP_LOG_LEVEL info 日志级别: debug, info, warn, error

用法示例

列出可用工具

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | ./echo-mcp --mode=local

呼叫回声工具

echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"echo","arguments":{"message":"test"}}}' | ./echo-mcp --mode=local

Docker示例

# Local mode
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"docker-test","version":"1.0"},"capabilities":{}}}' | docker run -i echo-mcp:latest --mode=local

# Remote mode
docker run -p 8080:8080 echo-mcp:latest --mode=remote

发展

构建和测试

# Run all tests
make test

# Run linters
make lint

# Build binary
make build

# Run all checks (lint + test + build)
make all

测试覆盖率

# Generate coverage report
make coverage

# View coverage in browser
open coverage.html

建筑

服务器遵循Go标准项目布局:

  • cmd/echo-mcp/ -主要应用入口点
  • internal/protocol/ -MCP协议类型和处理程序
  • internal/server/ -核心服务器逻辑和echo工具实现
  • internal/transport/ -传输层(stdio和HTTP)
  • tests/ -合同、集成和单元测试

许可证

看 许可证 文件以获取详细信息。

贡献

欢迎投稿!请确保:

  1. 所有测试均通过: make test
  2. 代码的格式为: gofmt -s -w .
  3. 林特斯传球: make lint
  4. 覆盖率保持≥80%

故障排除

服务器未在远程模式下启动

  • 检查端口是否已在使用中: netstat -an | grep 8080
  • 尝试其他端口: ./echo-mcp --mode=remote --port=8081

测试失败

  • 确保已安装Go 1.21+
  • 跑 go mod download 获取依赖关系
  • 检查测试端口上是否存在冲突的进程

演出

该服务器专为高性能而设计:

  • 延迟:对于小于1KB的消息,p95小于100ms
  • 吞吐量:1000+请求/秒
  • 记忆:正常负载下<100MB
  • 并发:支持100多个并发HTTP连接

更新日志

v0.1.0(初始版本)

  • Echo工具实施
  • 标准(当地)运输
  • HTTP(远程)传输
  • 请求记录原始数据
  • MCP协议合规性
  • Docker支持
  • 所有测试均通过(make test)
  • 代码已格式化(gofmt -s -w .)
  • 林特斯传球(make lint)
  • 测试覆盖率≥80%