xmp4 — Semantic code knowledge for your stack

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+.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Lets an assistant query pre-indexed open-source library source, callers, and type hierarchies semantically.

What you can do
Provides semantic code queries over a pre-indexed set of open-source libraries: browse projects, search symbols, get symbol details, extract source, find callers and callees, type hierarchies, file outlines, usages, related tests, and dependency lists. A file-excerpt viewer and a server-side regex search cover text that is not indexed, and a guide tool explains the intended workflow.
When to use it
Use it when an assistant needs to understand symbols, call relationships, or type hierarchies in open-source libraries from your stack without cloning repositories or running repeated text searches. Best suited to projects in C#, TypeScript, Python, Java, Rust, or PHP.
Requirements
Network access to a remote MCP endpoint, configured in the client as an HTTP connection to that endpoint. No local package, API key, or environment variable is required.
Before you install
Queries go to a third-party hosted service; its documentation says aggregate query counts (symbol, project, and tool names) are logged to guide index growth, while code contents and personal identifiers are not. Multi-file regex search requires a premium tier option. Some languages and query types have documented limitations.

Installation

In SourceWeft

  1. Open xmp4 — Semantic code knowledge for your stack in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

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.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "xmp4-semantic-code-knowledge-for-your-st": {
      "type": "http",
      "url": "https://mcp.example4.ai/mcp"
    }
  }
}

README

xmp4

Stop grepping library source.

Your AI gets the compiler's view of 856 OSS libraries via 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


The 30-second pitch

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.

text
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.

The measured numbers (4 big OSS libs · reproducible)

Same realistic question on spring-boot · tokio · django · efcore: "give me the signature, body, and real callers of X."

xmp4grep + cloneGitMCPContext7
Total tokens (same question)1 5582 97865 629—
vs xmp41×1.9× more42× morecan't answer
Returns real source body?✅✅ noisy✗ file paths only✗ curated docs only
Semantic callers?✅✗✗✗
Type hierarchy?✅✗✗✗
Setup cost0GBs of clone00

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 →

Connect in 30 seconds

jsonc
// Claude Code / Cursor / Claude Desktop — project `.mcp.json` or client config{  "mcpServers": {    "xmp4": {      "type": "http",      "url": "https://mcp.example4.ai/mcp"    }  }}

(The ready-to-paste config also lives at .mcp.json in this repo.)

Teach Claude how to use xmp4 (optional but recommended)

Install the xmp4 skill once per version — Claude will pick the cheapest tool path automatically (tests_for + view over grep):

bash
# 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

Restart your client. Then try (every step verified live 2026-04-24):

"Using xmp4, find the Flask class in flask/Flask and 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

The 17 tools

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)

Language coverage

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.

Coverage grows by demand, not by guesswork

The index currently holds 856 repositories / 15 921 SCIP-indexed projects. We add new libraries based on two signals, combined:

  1. Aggregate query logs — symbol names and project filters, no PII, no user code. If many AI agents search for a library we don't have, we see it.
  2. Your request — file a repo-request issue with the GitHub URL, the language, and one concrete query you want to run. A single user request + downstream query demand almost always means indexed within days.

A public /stats/top-missing endpoint is planned — full transparency on what drives the growth loop.

Privacy — short version

  • ✓ We log: aggregate query counts (symbol/project/tool names, coarse timestamps) to grow the index by demand.
  • ✗ We don't log: the contents of your codebase · personal identifiers · request bodies beyond declared tool parameters.
  • Standard nginx access logs kept 7 days for abuse prevention, then purged. Not joined with query tallies.

Full detail → docs/privacy.md.

Status

What's in this repository

PathPurpose
docs/connect-instructions.md5 MCP clients, proof-of-life sequence, troubleshooting
docs/tool-reference.md17 tools with live-verified examples and workflow rules
docs/tiers-and-quirks.mdLanguage tier matrix + every known limitation, verbatim
docs/privacy.mdWhat we log, what we don't, GDPR contact
docs/request-repo.mdHow the demand-driven queue actually works
.mcp.jsonReady-to-paste MCP client config (type: http, URL)
skills/xmp4/SKILL.mdClaude Code skill — workflow, cost budget, grep policy, common mistakes
html/xmp4-skill.mdSame skill, served publicly at https://example4.ai/xmp4-skill.md
server.jsonOfficial MCP Registry manifest (DNS-authed ai.example4/xmp4)
glama.jsonGlama catalog auto-index hook
.github/ISSUE_TEMPLATE/Bug · feature-request · request-repo templates

Related

  • LSAI protocol — open spec for semantic code intelligence in AI agents.
  • SCIP — the semantic code format xmp4 is built on (Sourcegraph-developed, BSD-3).
  • Model Context Protocol — the open transport spec xmp4 speaks.

License

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.


Made with semantic intelligence instead of grep.

SCIP · MCP · LSAI

Source: README.md at commit 58594e8

Tools

16

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.

Parametersdocspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format

xmp4_callers

Find direct callers of a symbol in a project. Navigate step-by-step by calling xmp4_callers again on interesting results.

Parametersdocspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format

xmp4_deps

List external dependencies of a project.

Parameterspageprojectrequiredpage_sizeoutput_format

xmp4_grep

Server-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).

Parameterspagepatternrequiredprojectrequiredfile_globfile_pathpage_sizemax_resultscase_sensitive

xmp4_guide

Usage guide for xmp4 tools — read this first to learn the correct workflow

Takes no parameters.

xmp4_hierarchy

Get type hierarchy (base, interfaces, derived) for a symbol in a project.

Parametersdocspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format

xmp4_info

Get detailed information about a symbol in a project.

Parametersdocspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format

xmp4_outline

Get outline (all symbols) for a file in a project.

Parameterspageprojectrequiredfile_pathrequiredpage_sizeoutput_format

xmp4_projects

Search and browse projects by language and name. Use this first to discover projects, then use other tools with the repo name.

Parameterspagerepoquerylanguagepage_size

xmp4_server

Get server information, version, and capabilities

Takes no parameters.

xmp4_source

Extract source code for a symbol in a project.

Parametersdocspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format

xmp4_symbol_at

LSP-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.

Parameterslinecolumnprojectrequiredfile_pathrequired

xmp4_tests_for

Find 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.).

Parametersdocspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format

xmp4_usages

Find all usages/references of a symbol in a project.

Parametersdocspageprojectrequiredfile_pathpage_sizesymbol_namerequiredoutput_format

xmp4_view

Read 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.

Parametersprojectrequiredto_linefile_pathrequiredfrom_line

Version history

1
  1. v1.2.6LatestSep 16, 2026

Score

100% 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.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Example4 integrations