使用说明(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
  • 服务器配置(配置信息以 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)。

信息

分类

开发者工具