内容
<div align="center">
<img src="assets/social-preview.png" alt="MCP Observatory — 本地优先的代理和跟踪查看器,用于模型上下文协议" width="100%" />
# MCP Observatory
**查看您的 AI 代理发送的每个消息。**
用于[模型上下文协议](https://modelcontextprotocol.io)的本地优先代理和跟踪查看器。将其放置在您的客户端(Claude Desktop,Cursor,Cline,Continue,Windsurf)和您的 MCP 服务器之间。每个 JSON-RPC 消息都会实时显示在时间轴中,您可以回放和对比。
[](https://github.com/vnmoorthy/mcpobservatory/actions/workflows/ci.yml)
[](https://github.com/vnmoorthy/mcpobservatory/releases/latest)
[](LICENSE)
[](Cargo.toml)
[](https://github.com/vnmoorthy/mcpobservatory/releases)
[](https://github.com/vnmoorthy/mcpobservatory/stargazers)
[安装](#安装) · [快速入门](#快速入门) · [为什么使用 mcpobs?](#为什么使用mcpobs?) · [工作原理](#工作原理) · [比较](#比较) · [路线图](#路线图)
</div>
---
## 安装
```bash
# curl(推荐)
curl -sSL https://raw.githubusercontent.com/vnmoorthy/mcpobservatory/main/scripts/install.sh | sh
# npm
npm install -g @vnmoorthy/mcpobs
# cargo
cargo install --git https://github.com/vnmoorthy/mcpobservatory mcpobs-cli
```
单个二进制文件。macOS(arm64/x64),Linux(arm64/x64),Windows(x64)。无需守护进程,无需 sudo,无需注册。npm 包是一个薄包装器,在安装时从匹配的 GitHub 版本中下载预构建的二进制文件(sha256 验证)。
## 快速入门
```bash
mcpobs init # ~/.mcpobs/config.toml
mcpobs start & # 守护进程在 :7890
mcpobs add filesystem --command npx \
--args '@modelcontextprotocol/server-filesystem,/Users/me' # 添加上游
open http://localhost:7890 # 浏览器 UI
```
复制 `mcpobs add` 打印的代码片段到您的 MCP 客户端配置中,重启客户端,您的下一个工具调用将显示在时间轴中。
详细演练:[`docs/quickstart.md`](docs/quickstart.md)。
## 为什么使用 mcpobs?
您正在编写一个代理。它调用一个工具。该工具返回空值。请求是否格式错误?服务器是否超时?模式是否漂移?今天,您通过在 MCP 服务器上添加 `print` 语句来查找问题,重启客户端,希望错误重复出现。
`mcpobs` 使电线可见。每个 JSON-RPC 帧,每个传输,每个会话,都有时间戳和延迟。您可以选择一个请求,对其进行重放,并与原始响应进行对比。无需重现测试,无需手动记录。
代理故意保持简单:它解析每个帧以记录方法/ID/方向,并逐字节转发原始数据。如果上游返回格式错误的数据,您将看到格式错误的数据。我们永远不会合成消息。
## 功能
- **代理** 每个 MCP 传输 — stdio,Streamable HTTP,SSE — 而不修改线路上的单个字节。
- **记录** 每个 JSON-RPC 消息到 `~/.mcpobs/traces.db`,带有时间戳,延迟,方向,会话 ID 和完整有效载荷。
- **检查** 主从 UI 中的任何帧,带有可折叠的 JSON,配对请求/响应和右键上下文菜单(重放,差异,复制为 cURL,复制原始数据)。
- **重放** 任何请求到实时上游并与原始响应进行对比。
- **编辑** 密钥名称(`password`,`token`,`secret`,`api_key`,`Authorization`)在它们到达磁盘之前。可配置。
- **保持静默。** 无遥测,无注册,无云。单个二进制文件,单个配置文件,单个本地 SQLite 数据库。
## 截图
| 仪表盘 | 会话时间线 | 差异视图 |
|---|---|---|
|  |  |  |
## 工作原理
```
┌────────────────┐ stdio / HTTP / SSE ┌──────────────────┐ same transport ┌──────────────┐
│ MCP 客户端 │ ───────────────────► │ mcpobs 代理 │ ───────────────► │ 上游服务器 │
│ (Claude/Cursor│ ◄─────────────────── │ (透明) │ ◄─────────────── │ MCP 服务器 │
└────────────────┘ └─────────┬────────┘ └──────────────┘
│ 观察结果
▼
~/.mcpobs/traces.db (SQLite, WAL)
▲
│
┌─────────┴────────┐
│ mcpobs 服务器 │ ◄── 浏览器访问 http://localhost:7890
│ axum + UI │
└──────────────────┘
```
更多细节请参见 [`docs/architecture.md`](docs/architecture.md)。
## 比较
| | mcpobs | MCP Inspector | Langfuse / Helicone | `print` |
|--- |--- |--- |--- |--- |
| 透明地位于每个服务器前面 | 是 | 单个服务器 | 否 | 不适用 |
| 跨会话的历史视图 | 是 | 否 | 是 | 否 |
| 重放请求 | 是 | 部分 | 否 | 否 |
| 两个运行之间的差异 | 是 | 否 | 否 | 否 |
| MCP 原生(会话,功能,传输) | 是 | 是 | 否 | 不适用 |
| 本地优先,无注册,无遥测 | 是 | 是 | 否 | 是 |
| 开源 | Apache 2.0 | MIT | 混合 | 不适用 |
## 性能
在 localhost stdio 上针对真实的 MCP 服务器,我们测量:
- p50 增加延迟:**0.4 ms**
- p99 增加延迟:**3.8 ms**
- 稳态 RSS:**48 MB**,带有 7 天的跟踪记录
- SQLite 编写器吞吐量:**~14k msgs/sec**,在商品 SSD 上
使用 `cargo bench -p mcpobs-core` 复制。
## 规格修订
固定到 MCP 规格修订版 **2025-06-18**。升级日志:[`docs/spec-revisions.md`](docs/spec-revisions.md)。
## 路线图
- **v0.1(现在)** — stdio + HTTP + SSE 代理,Web UI,重放,差异,密钥名称编辑。
- **v0.2** — Homebrew 软件包,pcap 样式的会话导出,延迟预算,浏览器扩展,在 Cursor 和 Claude Desktop 中显示跟踪记录。
- **v0.3** — 内置 MCP 服务器,暴露 Observatory 自己的数据(以便 Claude 可以回答“过去一小时哪些工具调用失败?”),OTel 相关性,正则表达式编辑。
- **未来** — 托管版本,带有团队共享,警报和生产跟踪。
## 星级历史
[](https://star-history.com/#vnmoorthy/mcpobservatory&Date)
## 社区
- **[GitHub Discussions](https://github.com/vnmoorthy/mcpobservatory/discussions)** — 问题,想法,展示和讲述。
- **[Issues](https://github.com/vnmoorthy/mcpobservatory/issues)** — 错误和功能请求。
- **[Security](SECURITY.md)** — 私密报告漏洞。
如果 `mcpobs` 为您节省了时间,感谢您最简单的方式是 [⭐ 星级按钮](https://github.com/vnmoorthy/mcpobservatory/stargazers)。这是一个强烈的信号,表明其他人正在决定是否尝试使用它。
## 贡献
PRs 欢迎。标准很高(透明性,无遥测,单个二进制文件),路径很短。参见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
## 许可证
[Apache License 2.0](LICENSE) — 任意使用,商业或其他用途。
<div align="center">
为代理调试的长尾而构建。
如果 `print` 是您唯一的工具,您将在第二天就会超越它。
<sub>由 <a href="https://github.com/vnmoorthy">@vnmoorthy</a> 制作 · <a href="https://github.com/vnmoorthy/mcpobservatory/issues/new">发现错误?</a></sub>
</div>
连接信息
猜你喜欢
暂无推荐服务器