使用说明
快速MCP自动仪表示例
此存储库包含使用Express.js的MCP(模型上下文协议)服务器的三个示例实现,演示了Sentry仪器和传输机制的不同方法。
概述
该项目展示了如何将哨兵监控和性能跟踪与MCP服务器集成,提供了完整仪器、部分仪器和SSE传输的示例。
安装
# Clone the repository
git clone <repository-url>
cd express-mcp-auto-instrumentation
# Install dependencies
yarn install
三台服务器
1.具有全仪器的流式HTTP服务器
文件: mcp-express-streamable-http.mjs
端口: 3005
这是具有完整Sentry仪器的功能最丰富的实现。
特征:
- 通过以下方式进行全面的哨兵错误跟踪和性能监控
wrapMcpServerWithSentry - 支持POST(JSON-RPC)和GET(SSE)端点
- 无状态设计(每个请求都有新的服务器实例)
- 高级工具:
add-带有进度通知的基础数学add-dynamic-tool-动态创建新工具create-resource-动态创建新资源update-resource-更新现有资源log-message-发送自定义日志消息add-dynamic-prompt-动态创建提示
- 资源和提示支持
- 综合测井系统
运行:
node mcp-express-streamable-http.mjs
2.带仪器的SSE服务器
文件: mcp-express-sse.mjs
端口: 3006
使用带有Sentry检测的服务器发送事件(SSE)传输的更简单的实现。
特征:
- 通过以下方式安装完整的哨兵仪器
wrapMcpServerWithSentry - 仅基于苏格兰和南方能源公司的运输
- 会话管理(维护请求之间的状态)
- 基础
add数学运算工具 - SSE流的独立端点(
/mcp)和消息(/messages)
运行:
node mcp-express-sse.mjs
3.无包装器的流式HTTP服务器
文件: mcp-express-no-instrumentation.js
端口: 3005
一个导入Sentry但不使用MCP特定包装器的最小实现。
特征:
- 导入Sentry仪器,但不包装MCP服务器
- 使用较旧的
registerToolAPI - 无状态设计
- 基础
add包含天气API调用的工具(用于测试子跨度) - 演示基本MCP功能
运行:
node mcp-express-no-instrumentation.js
API使用
基本工具调用示例
发布 /mcp
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "add",
"arguments": {
"a": 5,
"b": 3
}
},
"id": 1
}
SSE连接(仅限服务器2)
获取 /mcp -建立SSE流
发布 /messages?sessionId={sessionId} -向已建立的会话发送消息
测试哨兵集成
所有服务器都包含一个测试端点:
获取 /sentry-error -触发哨兵验证的测试错误
主要区别
| 功能 | 可流式HTTP(完整) | SSE服务器 | 无包装器 |
|---|---|---|---|
| 哨兵包装 | ✅ wrapMcpServerWithSentry |
✅ wrapMcpServerWithSentry |
❌ 仅基本导入 |
| 传输 | StreamableHTTP | SSE | StreamableHTTP |
| 工具 | 6高级工具 | 1基本工具 | 1基础工具 |
| 资源 | ✅ | ❌ | ❌ |
| 提示 | ✅ | ❌ | ❌ |
| 州 | 无国籍 | 有状态 | 无国籍 |
| API风格 | 现代 tool() |
现代 tool() |
遗产 registerTool() |
开发说明
- 这
instrument.mjs必须使用Node的--import用于正确初始化哨兵的标志 - 所有服务器都演示了MCP服务器实现的不同方面
- 全仪器服务器(可流式传输的http)是最全面的示例
- SSE服务器展示了如何跨请求维护会话状态
- 无包装服务器演示了没有MCP特定Sentry功能的基线功能
许可证
[在此处添加您的许可证]