使用说明(Markdown要点摘要)
-
项目简介
- Sentinel 提供一个透明的 MCP 观测中间件(侧车式代理)。它在 LLM 客户端与 MCP 服务器之间拦截并透传 MCP 的 JSON-RPC 流量,同时产出可视化图谱和审计日志,便于调试、监控和安全审计。
- 它不是一个执行引擎或策略控制器,而是坚持“观察、记录、不干预、失败时也不阻塞”的设计原则。
-
主要功能点
- 零拷贝的 MCP 行为透传:把 MCP 的请求与响应在前后端之间直接转发,不修改执行逻辑。
- 实时日志与可视化:通过 WebSocket 将事件以结构化日志推送到前端仪表盘,支持会话、跟踪和时序关系。
- 审计日志与可验证性:可选开启的签名与加密审计日志,提供哈希链和数字签名,便于事后校验与回放。
- 会话与追踪:对请求/响应对进行 span、trace、session 级别的关联,便于溯源。
- 多传输与前端仪表盘:内置 WebSocket 服务和前端 React 仪表盘,便于在浏览器中查看图形化关系与详情。
-
安装步骤(简化)
- 预备条件:需要安装 Rust 工具链与 Node.js,后续将前端打包并编译成二进制。
- 构建与安装:
- 获取源码后,在项目根目录执行构建:先构建前端,再构建 Rust 二进制。
- 生成的二进制名为 sentinel,可直接运行。
- 运行示例(最简场景)
- 将一个 MCP 服务作为后端服务器,使用 Sentinel 作为代理执行并启动:
- cargo run -- run -- npx -y @modelcontextprotocol/server-filesystem
- 运行后打开仪表盘:
- 浏览器访问 http://localhost:3000
- 如果要测试不同的 MCP 服务器,例如 SQLite 服务或自定义 Python 服务,可以替换后端服务器命令:
- cargo run -- run -- npx -y @modelcontextprotocol/server-sqlite path/to/database.db
- cargo run -- run -- python -m my_mcp_server
- 将一个 MCP 服务作为后端服务器,使用 Sentinel 作为代理执行并启动:
-
服务器配置(配置信息以 JSON 格式给出,供 MCP 客户端使用;注意:MCP 客户端并不需要直接修改 Sentinel 的配置,这些信息用于集成场景的参考)
- 服务器名称:filesystem
- command:npx
- args:["-y", "@modelcontextprotocol/server-filesystem"]
参考配置示意(JSON 结构,适用于 MCP 客户端在本地进行集成时作为说明,实际客户端无需直接运行 Sentinel 的命令): { "server_name": "filesystem", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem"] } 说明:
- 该配置信息用于 MCP 客户端在接入 Sentinel 时向后端服务器提供启动命令及参数。Sentinel 的工作方式是在启动时将该后端命令通过 Sentinel 打包并替换为 Sentinel 自身的启动命令,以实现透明代理。客户端无需理解或管理 Sentinel 的内部实现。
-
基本使用方法(简明操作步骤)
- 启动 Sentinel:执行包含 MCP 服务器的前置命令即可,Sentinel 会在后台启动并作为代理,前端仪表盘用于可观测视图。
- 连接仪表盘:打开浏览器访问 http://localhost:3000 查看实时图谱、节点状态和详细请求/响应内容。
- 观察与排错:仪表盘会显示请求/响应的延迟、错误状态以及每个工具/服务器的交互情况,异常情况在界面中以红色高亮标注。
- 安全与审计:若开启审计日志,日志文件将以 NDJSON 形式输出,支持可验证的哈希链和可选的端到端加密。关于密钥及审计配置,请参考官方文档与示例命令。
-
重要说明
- MCP 客户端在接入时通常需要对服务器进行配置信息化连结描述(如 server_name、command、args),以便在运行时通过 Sentinel 进行代理。
- Sentinel 的核心设计是观测和记录,避免对 MCP 的执行流程产生干扰,确保代理失败时仍能继续传递请求/响应(Fail-Open)。
信息
分类
开发者工具