MCP服务器自动检测示例

该项目展示了如何使用Express.js实现MCP服务器,并集成Sentry监控和性能跟踪,提供完整检测、部分检测和SSE传输的示例。

  • by betegon
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 betegon/express-mcp-server

使用说明

快速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服务器
  • 使用较旧的 registerTool API
  • 无状态设计
  • 基础 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功能的基线功能

许可证

[在此处添加您的许可证]