xmp4_callees
Find direct callees (methods called by) a symbol in a project. Navigate step-by-step by calling xmp4_callees again on interesting results.
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format
ai.example4Published by example4.aiOfficial publisherv1.2.6Updated Oct 24, 2026
OSS libs in your stack, really used: source, tests, callers. C#, Java, TS, Python, Rust, PHP+.
Lets an assistant query pre-indexed open-source library source, callers, and type hierarchies semantically.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/ai.example4%2Fxmp4/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"xmp4-semantic-code-knowledge-for-your-st": {
"type": "http",
"url": "https://mcp.example4.ai/mcp"
}
}
}[live] [registry] [license] [MCP] [repos] [vs GitMCP]
Real callers. Real source. Real hierarchy. In 3 tool calls.
→ Landing page · → Benchmark whitepaper · → Connect in 30 seconds
Your AI coding agent is burning tokens grepping OSS libraries it will barely use. xmp4 is a hosted MCP server that pre-indexes 856 popular open-source libraries with SCIP — the semantic code format Sourcegraph uses — and serves them through 17 tools. No clone. No grep. No false positives.
Same realistic question on spring-boot · tokio · django · efcore: "give me the signature, body, and real callers of X."
GitMCP and Context7 look cheaper per call because they return less. To reach the same answer, GitMCP balloons to 42× more tokens — and still can't produce the semantic caller list. Context7 can't at any cost. Full whitepaper with Python harness →
(The ready-to-paste config also lives at .mcp.json in this repo.)
Install the xmp4 skill once per version — Claude will pick the cheapest tool path automatically (tests_for + view over grep):
Restart your client. Then try (every step verified live 2026-04-24):
"Using xmp4, find the Flask class in
flask/Flaskand list its usages."
You should see Type Flask src/flask/app.py:81 and 165 usages across 33 result pages. One semantic call per question. Zero grep loops.
Setup for Cursor · Claude Desktop · Continue · Windsurf → docs/connect-instructions.md
Full reference with live examples
Semantic core (where the value lives)
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
Convenience
xmp4_view (raw file excerpt by line range) · xmp4_grep (server-side regex when semantics isn't enough)
Meta
xmp4_guide (returns a versioned skill pointer to https://example4.ai/xmp4-skill.md — fetch once per version and save as a local Claude Code skill; embeds a minimal cheatsheet as offline fallback) · xmp4_server (version + stats)
Tier 1 — full coverage contract
C# · TypeScript · Python · Java · Rust · PHP
Tier 2 — best-effort, documented quirks
Go · JavaScript · Dart · Ruby · C++
Every known limitation — empty hierarchy.base on TS/Rust/Java/PHP, Python cross-module usages under-count, C# explicit-interface-impl dotted-name behaviour — is listed verbatim in docs/tiers-and-quirks.md. We'd rather set expectations correctly than have a reviewer find a gap and assume the whole thing is inflated.
The index currently holds 856 repositories / 15 921 SCIP-indexed projects. We add new libraries based on two signals, combined:
A public /stats/top-missing endpoint is planned — full transparency on what drives the growth loop.
Full detail → docs/privacy.md.
mcp.example4.ai v1.2.1 · 856 repos · 15 921 projects · 17 tools · 11 languagesai.example4/xmp4 (DNS-authed on example4.ai)Apache 2.0 for this documentation repository — see LICENSE.
The hosted mcp.example4.ai endpoint is free for personal and commercial use (TOS link pending).
Commercial licensing or self-hosted deployment enquiries → open a GitHub issue labelled commercial on this repo.
Source: README.md at commit 58594e8
Find direct callees (methods called by) a symbol in a project. Navigate step-by-step by calling xmp4_callees again on interesting results.
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_formatFind direct callers of a symbol in a project. Navigate step-by-step by calling xmp4_callers again on interesting results.
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_formatList external dependencies of a project.
pageprojectrequiredpage_sizeoutput_formatServer-side regex text search over indexed project source files. Free tier: requires file_path (single file). Premium tier (XMP4_PREMIUM_GREP_WALK=true): allows file_glob multi-file walk. Prefer xmp4_tests_for/xmp4_usages for SCIP symbols — grep is for text not indexed (comments, literals, config keys).
pagepatternrequiredprojectrequiredfile_globfile_pathpage_sizemax_resultscase_sensitiveUsage guide for xmp4 tools — read this first to learn the correct workflow
Takes no parameters.
Get type hierarchy (base, interfaces, derived) for a symbol in a project.
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_formatGet detailed information about a symbol in a project.
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_formatGet outline (all symbols) for a file in a project.
pageprojectrequiredfile_pathrequiredpage_sizeoutput_formatSearch and browse projects by language and name. Use this first to discover projects, then use other tools with the repo name.
pagerepoquerylanguagepage_sizeSearch symbols in a project. Use xmp4_projects first to find the project identifier.
kindpagequeryrequiredprojectrequiredpage_sizemax_resultsoutput_formatGet server information, version, and capabilities
Takes no parameters.
Extract source code for a symbol in a project.
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_formatLSP-style position→symbol lookup. Given (file_path, line, column) returns the symbol whose occurrence covers that cursor position. line is 1-based; column is 0-based. Use after xmp4_outline/xmp4_view when you know coordinates and want the canonical symbol.
linecolumnprojectrequiredfile_pathrequiredFind direct tests that exercise a given symbol (direct callers filtered to test-file candidates per language pattern: CSharp/Java/PHP: *Test(s).<ext>; Python: test_*.py / *_test.py; TypeScript/JavaScript: *.spec/test.{ts,js}; Rust: *_tests.rs / tests/; etc.).
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_formatFind all usages/references of a symbol in a project.
docspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_formatRead a raw file excerpt from an indexed project by line range. Use after xmp4_search/xmp4_outline locates the region of interest, or to expand a truncated xmp4_source snippet. Hard cap of 500 lines per call.
projectrequiredto_linefile_pathrequiredfrom_line100% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
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.// Claude Code / Cursor / Claude Desktop — project `.mcp.json` or client config{ "mcpServers": { "xmp4": { "type": "http", "url": "https://mcp.example4.ai/mcp" } }}# Claude Codemkdir -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