使用说明
演示MCP服务器
无服务器模型上下文协议(MCP)服务器,使用Hono为AWS Lambda部署提供MCP-over-HTTP和REST API端点。
特性
- 双协议支持:MCP-over-HTTP和REST API终结点
- 无服务器架构:针对AWS Lambda部署进行了优化
- 高性能:采用Hono制造,冷启动时间最短
- 交互式文档:用于API勘探的Swagger UI
- 综合测试:具有覆盖率报告的完整测试套件
- 生产就绪:完成监控、日志记录和错误处理
可用工具
| 工具 | 说明 | 参数 |
|---|---|---|
echo |
回显输入文本 | message (字符串,必填) |
get_time |
获取当前日期和时间 | 无 |
calculate |
进行基本的数学计算 | expression (字符串,必填) |
get_system_info |
获取基本系统信息 | 无 |
api_stats |
获取API使用情况统计 | 无 |
快速开始
地方发展
-
安装依赖项:
npm install -
启动开发服务器:
npm run dev -
运行测试:
npm test -
查看测试覆盖率:
npm run test:coverage
AWS Lambda部署
-
全局安装无服务器框架:
npm install -g serverless -
配置AWS凭据:
aws configure # or export AWS_ACCESS_KEY_ID=your-key export AWS_SECRET_ACCESS_KEY=your-secret -
部署到AWS Lambda:
# Deploy to development stage npm run deploy:dev # Deploy to production stage npm run deploy:prod -
监控日志:
npm run logs
API终点
REST API
- 获取
/-服务器信息和可用端点 - 获取
/api/tools-列出具有模式的可用工具 - 发布
/api/tools/:name-执行特定工具 - 获取
/api/stats-获取API使用情况统计信息 - 获取
/api/health-健康检查端点 - 获取
/docs-交互式Swagger UI文档 - 获取
/openapi.json-OpenAPI规范
MCP协议
- 获取
/mcp-服务器发现和功能 - 发布
/mcp-MCP JSON-RPC 2.0端点
现场演示
🚀 已部署服务器: https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com
📖 交互式文档: https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/docs
使用示例
测试实时服务器
服务器信息
curl https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/
健康检查
curl https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/api/health
REST API示例
回声工具
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/api/tools/echo \
-H "Content-Type: application/json" \
-d '{"message": "Hello from AWS Lambda!"}'
计算工具
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/api/tools/calculate \
-H "Content-Type: application/json" \
-d '{"expression": "2 + 2 * 3"}'
获取时间工具
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/api/tools/get_time \
-H "Content-Type: application/json" \
-d '{}'
获取系统信息
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/api/tools/get_system_info \
-H "Content-Type: application/json" \
-d '{}'
获取API统计信息
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/api/tools/api_stats \
-H "Content-Type: application/json" \
-d '{}'
MCP协议示例
服务器发现
curl https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp
列出工具
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
初始化MCP会话
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "test-client",
"version": "1.0.0"
}
}
}'
通过MCP调用工具
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "echo",
"arguments": {
"message": "Hello from MCP!"
}
}
}'
项目结构
demo-mcp-server/
├── src/
│ └── index.js # Main server implementation
├── tests/
│ ├── tools.test.js # Tool implementation tests
│ ├── api.test.js # REST API endpoint tests
│ └── mcp.test.js # MCP protocol compliance tests
├── package.json # Dependencies and scripts
├── serverless.yml # AWS Lambda deployment config
├── README.md # Project documentation
├── CLAUDE.md # Claude Code configuration
├── .gitignore # Git ignore rules
└── .env.example # Environment variables template
MCP客户端配置
Claude代码配置
对于Claude Code和其他支持直接HTTP传输的MCP客户端:
{
"mcpServers": {
"demo-mcp-server": {
"url": "https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp"
}
}
}
备注:运行后,将URL替换为您自己部署的服务器URL npm run deploy:dev 或 npm run deploy:prod.
光标配置
对于Cursor IDE,请将以下内容添加到MCP配置文件中:
{
"mcpServers": {
"demo-mcp-server": {
"url": "https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp"
}
}
}
手动MCP客户端测试
您还可以使用任何JSON-RPC 2.0客户端手动测试MCP服务器:
# Test with curl (Initialize)
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "curl", "version": "1.0.0"}
}
}'
# List available tools
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}'
# Call a tool
curl -X POST https://idm0cr9p5c.execute-api.us-east-1.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "calculate",
"arguments": {"expression": "2 * Math.PI * 5"}
}
}'
发展
可用脚本
npm start-在本地启动服务器npm run dev-使用热重新加载启动开发服务器npm test-运行测试套件npm run test:watch-在监视模式下运行测试npm run test:coverage-生成测试覆盖率报告npm run lint-运行ESLintnpm run lint:fix-自动修复ESLint问题npm run format-使用Prettier格式化代码
测试
该项目包括全面的测试,包括:
- 工具测试:所有MCP工具的单元测试
- API测试:REST端点的集成测试
- MCP测试:协议合规性和JSON-RPC 2.0验证
使用以下工具运行测试:
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # With coverage report
环境变量
创建一个 .env 文件基于 .env.example:
# Optional environment variables
NODE_ENV=development
LOG_LEVEL=debug
AWS_REGION=us-east-1
部署
无服务器框架配置
这 serverless.yml 文件包括:
- 运行时:Node.js 18.x
- 记忆:512MB(可配置)
- 超时:30秒
- API网关:具有代理集成的HTTP API
- 云监控:自动创建日志组
- 国际机械师协会:所需的最小权限
部署阶段
- 发展:
npm run deploy:dev - 生产:
npm run deploy:prod
监控
部署后,监控您的功能:
# View logs
npm run logs
# Invoke function directly
npm run invoke
# Remove deployment
npm run remove
安全
- 输入消毒:对数学表达式进行净化,以防止代码注入
- 错误处理:使用适当的HTTP状态码进行全面的错误处理
- 跨域资源共享:已配置用于跨源请求
- 速率限制:考虑增加生产使用的速率限制
贡献
- 分叉存储库
- 创建要素分支:
git checkout -b feature-name - 进行更改
- 运行测试:
npm test - 提交更改:
git commit -m "Description" - 推送到分支:
git push origin feature-name - 创建拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
支持
更新日志
v1.0.0(初始版本)
- MCP-over-HTTP和REST API支持
- 五个核心工具(echo、get_time、compute、get_system_info、api_stats)
- AWS Lambda部署就绪
- 全面的测试套件
- 交互式API文档
- 生产记录和监测
