关于 Xmp4
Xmp4 是托管 MCP 服务,为编码 Agent 提供基于 SCIP 索引的开源库语义代码查询。它提供真实源码、调用关系和类型层级,减少本地克隆与文本搜索需求。
主要功能
- 01搜索预索引开源库
- 02查询符号信息与源码
- 03查找调用者和被调用者
- 04分析类型层级与符号用法
- 05查找相关测试和依赖
- 06按源码行查看片段
适用场景
- 01查找某个函数的真实调用者
- 02查看库中符号定义及源码
- 03追踪类型层级和符号使用
- 04为符号定位相关测试
MCP 相关
Xmp4 通过托管 MCP 服务向客户端提供 17 种代码查询工具,包括搜索、源码、调用关系、用法、层级和测试查询。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.example4.ai/mcpclaude mcp add --transport http lsai-xmp4.public https://mcp.example4.ai/mcp{"mcpServers":{"lsai-xmp4.public":{"type":"http","url":"https://mcp.example4.ai/mcp"}}}在 Cursor 中打开{"servers":{"lsai-xmp4.public":{"type":"http","url":"https://mcp.example4.ai/mcp"}}}在 VS Code 中打开{"mcpServers":{"lsai-xmp4.public":{"type":"http","url":"https://mcp.example4.ai/mcp"}}}{"mcpServers":{"lsai-xmp4.public":{"serverUrl":"https://mcp.example4.ai/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
17| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| docs | string | 否 | 包含文档:none(默认)| summary | full(仅限 xmp4_info) |
| file_path | string | 否 | 用于消除歧义的文件路径 |
| output_format | string | 否 | 输出格式:Compact(默认)或 Verbose |
| page | integer | 否 | 页码(从 1 开始,默认为 1;xmp4_info/xmp4_source 会忽略此参数) |
| page_size | integer | 否 | 每页结果数(默认 20,最多 100) |
| project | string | 是 | 来自 xmp4_projects 的项目(例如 'requests/requests') |
| symbol_name | string | 是 | 符号名称 |
详细介绍
xmp4
别再用 grep 搜索库源码。
你的 AI 可通过 MCP 获取 856 个开源库的编译器视图。
真实调用者。真实源码。真实层级。只需 3 次工具调用。
30 秒快速介绍
你的 AI 编码 Agent 正在浪费 token,用 grep 搜索它几乎不会用到的开源库。xmp4 是一个托管的 MCP 服务,使用 Sourcegraph 采用的语义代码格式 SCIP,预先为 856 个热门开源库建立索引,并通过 17 个工具提供服务。无需克隆。无需 grep。没有误报。
ASK: "Who calls Flask.wsgi_app in the flask repo and what does it do?"
with grep + local clone:
git clone flask/flask ~40 MB, ~2 min
grep -rn "wsgi_app" . 200+ matches, mostly noise
cat src/flask/app.py | sed ... read 1000+ lines to find the body
filter false positives model spends tokens deciding what's real
──────────────────────────────────────
total: ~15,000 tokens + disk + wall time
with xmp4:
xmp4_info(symbol_name="Flask", file_path="src/flask/app.py") → signature, 20 tok
xmp4_source(symbol_name="wsgi_app", file_path="src/flask/app.py") → body, 180 tok
xmp4_callers(symbol_name="wsgi_app", file_path="src/flask/app.py") → 1 caller, 50 tok
──────────────────────────────────────
total: ~250 tokens
xmp4 is 60× cheaper here — and every result is SCIP-resolved, not text-matched.
实测数据(4 个大型开源库 · 可复现)
针对 spring-boot · tokio · django · efcore,提出同一个真实问题:“给我 X 的签名、函数体和真实调用者。”
| xmp4 | grep + 克隆 | GitMCP | Context7 | |
|---|---|---|---|---|
| 总 token 数(同一个问题) | 1 558 | 2 978 | 65 629 | — |
| 与 xmp4 对比 | 1× | 多 1.9× | 多 42× | 无法回答 |
| 返回真实源码函数体? | ✅ | ✅ 但噪声多 | ✗ 仅文件路径 | ✗ 仅精选文档 |
| 语义调用者? | ✅ | ✗ | ✗ | ✗ |
| 类型层级? | ✅ | ✗ | ✗ | ✗ |
| 设置成本 | 0 | 数 GB 的克隆内容 | 0 | 0 |
GitMCP 和 Context7 每次调用看起来更便宜,因为它们返回的内容更少。要得到相同答案,GitMCP 会膨胀到 42× 的 token 数,而且仍无法生成语义调用者列表。Context7 无论花多少成本都做不到。完整白皮书及 Python 测试脚本 →
30 秒内完成连接
// Claude Code / Cursor / Claude Desktop — project `.mcp.json` or client config
{
"mcpServers": {
"xmp4": {
"type": "http",
"url": "https://mcp.example4.ai/mcp"
}
}
}
(可直接粘贴的配置也位于此代码库的 .mcp.json 中。)
教 Claude 如何使用 xmp4(可选但推荐)
每个版本安装一次 xmp4 技能 — Claude 会自动选择成本最低的工具路径(tests_for + view,而不是 grep):
# Claude Code
mkdir -p ~/.claude/skills/xmp4 && \
curl -sfL https://example4.ai/xmp4-skill.md -o ~/.claude/skills/xmp4/SKILL.md
# Other clients: just tell Claude to read the URL when using xmp4 tools
# https://example4.ai/xmp4-skill.md
重启客户端。然后试试(每个步骤都已于 2026-04-24 在线验证):
“使用 xmp4,找到
flask/Flask中的 Flask 类,并列出它的用法。”
你应该会看到 Type Flask src/flask/app.py:81,以及分布在 33 个结果页中的 165 处用法。每个问题只需一次语义调用。无需反复 grep。
Cursor · Claude Desktop · Continue · Windsurf 设置指南 → docs/connect-instructions.md
17 个工具
语义核心(价值所在)
xmp4_projects · xmp4_search · xmp4_info · xmp4_usages · xmp4_callers · xmp4_callees · xmp4_hierarchy · xmp4_outline · xmp4_source · xmp4_tests_for · xmp4_deps · xmp4_symbol_at
便捷工具
xmp4_view(按行范围查看原始文件片段) · xmp4_grep(语义搜索不够时使用服务端正则表达式)
元信息
xmp4_guide(返回指向 https://example4.ai/xmp4-skill.md 的带版本技能指针 — 每个版本获取一次,并保存为本地 Claude Code 技能;内含精简速查表,可在离线时作为备用) · xmp4_server(版本 + 统计数据)
语言覆盖范围
Tier 1 — 完整覆盖承诺
C# · TypeScript · Python · Java · Rust · PHP
Tier 2 — 尽力支持,并记录已知差异
Go · JavaScript · Dart · Ruby · C++
所有已知限制——TS/Rust/Java/PHP 中的 hierarchy.base 为空、Python 跨模块 usages 计数偏少、C# 显式接口实现的点分名称行为——均已原文列于 docs/tiers-and-quirks.md。我们宁愿正确设定预期,也不希望审核者发现缺漏后以为整个项目夸大其词。
覆盖范围随需求增长,而非凭空猜测
索引目前包含 856 个代码库 / 15 921 个 SCIP 索引项目。我们会综合以下两个信号来添加新库:
- 汇总查询日志 — 符号名称和项目筛选条件,不含 PII 或用户代码。如果许多 AI Agent 搜索我们尚未收录的库,我们就能发现。
- 你的请求 — 提交代码库请求 issue,附上 GitHub URL、语言,以及一个你希望运行的具体查询。单个用户请求加上下游查询需求,几乎总能让该库在数日内完成索引。
计划推出公开的 /stats/top-missing 端点,全面透明地展示推动增长的因素。
隐私——简要说明
- ✓ 我们会记录:汇总查询次数(符号 / 项目 / 工具名称、粗略时间戳),以便按需求扩充索引。
- ✗ 我们不会记录:代码库内容 · 个人身份信息 · 除已声明工具参数之外的请求正文。
- 标准 nginx 访问日志保留 7 天以防止滥用,之后删除。访问日志不会与查询统计合并。
完整详情 → docs/privacy.md。
状态
- 🟢 已上线 —
mcp.example4.aiv1.2.1 · 856 个代码库 · 15 921 个项目 · 17 个工具 · 11 种语言 - 🟢 已发布基准测试 — 可复现的白皮书及 Python 测试脚本
- 🟢 已列入 Official MCP Registry,名称为
ai.example4/xmp4(已通过example4.ai的 DNS 验证) - 🟢 Smithery — smithery.ai/servers/0ics-srl/xmp4
- 🟢 Cursor Directory — cursor.directory/plugins/lsai-xmp4public
- 🔧 正在提交到更多注册目录 — MCP.so、mcpservers.org、[email protected]、awesome-lists(已在 punkpeye/jaw9c/appcypher 提交 PR)
- 🔧 按需求驱动的增长循环 — 正在进行
此代码库包含什么
| 路径 | 用途 |
|---|---|
docs/connect-instructions.md | 5 个 MCP 客户端、运行验证流程、故障排除 |
docs/tool-reference.md | 17 个工具,附实时验证示例和工作流规则 |
docs/tiers-and-quirks.md | 语言层级矩阵及所有已知限制,原文列出 |
docs/privacy.md | 我们记录什么、不记录什么,以及 GDPR 联系方式 |
docs/request-repo.md | 按需求驱动的队列实际如何运作 |
.mcp.json | 可直接粘贴的 MCP 客户端配置(type: http、URL) |
skills/xmp4/SKILL.md | Claude Code 技能——工作流、成本预算、grep 策略、常见错误 |
html/xmp4-skill.md | 同一技能,公开发布于 https://example4.ai/xmp4-skill.md |
server.json | Official MCP Registry 清单(已通过 DNS 验证的 ai.example4/xmp4) |
glama.json | Glama 目录自动索引钩子 |
.github/ISSUE_TEMPLATE/ | Bug · 功能请求 · 代码库请求模板 |
相关项目
- LSAI protocol — 面向 AI Agent 语义代码智能的开放规范。
- SCIP — xmp4 构建所基于的语义代码格式(由 Sourcegraph 开发,采用 BSD-3 许可证)。
- Model Context Protocol — xmp4 使用的开放传输规范。
许可证
本文档仓库采用 Apache 2.0 许可证,详见 LICENSE。
托管的 mcp.example4.ai 端点可免费用于个人和商业用途(服务条款链接待添加)。
有关商业许可或可自托管部署的咨询 → 在此仓库中提交带有 commercial 标签的 GitHub issue。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。