使用说明
回声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/-合同、集成和单元测试
许可证
看 许可证 文件以获取详细信息。
贡献
欢迎投稿!请确保:
- 所有测试均通过:
make test - 代码的格式为:
gofmt -s -w . - 林特斯传球:
make lint - 覆盖率保持≥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%
