0ics-srls avatar

xmp4 — Semantic code knowledge for your stack

0ics-srls/lsai-xmp4.public

Connects to a hosted SCIP index of 856 popular open source libraries across C#, Java, TypeScript, Python, Rust, and PHP. Exposes 17 semantic code navigation tools including symbol search, call hierarchies, precise callers and callees, type inheritance, and source extraction. Runs over streamable HTTP with no local clone required. The benchmark claims 42x fewer tokens than file-based approaches for the same question because it returns compiler-resolved symbols instead of grep output. Useful when your agent repeatedly clones Flask or Tokio to answer shallow questions about method signatures or call sites. Adds libraries by demand based on aggregate query logs and explicit requests.

tools
16
transport
HTTP
last updated
Apr 23, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.example4.ai/mcp --name xmp4

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http xmp4 https://mcp.example4.ai/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 16 tools

Verified live against the running server on Nov 6, 2026.

xmp4_calleesFind direct callees (methods called by) a symbol in a project. Navigate step-by-step by calling xmp4_callees again on interesting results.7 params

Find direct callees (methods called by) a symbol in a project. Navigate step-by-step by calling xmp4_callees again on interesting results.

Parameters* required
docsstring
Include docs: none (default) | summary | full (xmp4_info only)
file_pathstring
File path to disambiguate
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
symbol_name*string
Symbol name
xmp4_callersFind direct callers of a symbol in a project. Navigate step-by-step by calling xmp4_callers again on interesting results.7 params

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

Parameters* required
docsstring
Include docs: none (default) | summary | full (xmp4_info only)
file_pathstring
File path to disambiguate
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
symbol_name*string
Symbol name
xmp4_depsList external dependencies of a project.4 params

List external dependencies of a project.

Parameters* required
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
xmp4_grepServer-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 (commen...8 params

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 (commen...

Parameters* required
case_sensitiveboolean
If true, search is case-sensitive (default false)
file_globstring
Optional file glob for multi-file walk (premium tier). Set XMP4_PREMIUM_GREP_WALK=true to enable.
file_pathstring
Single-file grep target, repo-relative (e.g. 'src/foo.rs'). Required in free tier.
max_resultsinteger
Maximum number of hits to collect before pagination (default 50, max 1000)
pageinteger
Page number (1-based, default 1)
page_sizeinteger
Results per page (default 20, max 100)
pattern*string
Regex pattern (case-insensitive by default)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
xmp4_guideUsage guide for xmp4 tools — read this first to learn the correct workflow

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

No parameters. Call it with no arguments.

xmp4_hierarchyGet type hierarchy (base, interfaces, derived) for a symbol in a project.7 params

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

Parameters* required
docsstring
Include docs: none (default) | summary | full (xmp4_info only)
file_pathstring
File path to disambiguate
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
symbol_name*string
Symbol name
xmp4_infoGet detailed information about a symbol in a project.7 params

Get detailed information about a symbol in a project.

Parameters* required
docsstring
Include docs: none (default) | summary | full (xmp4_info only)
file_pathstring
File path to disambiguate
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
symbol_name*string
Symbol name
xmp4_outlineGet outline (all symbols) for a file in a project.5 params

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

Parameters* required
file_path*string
File path
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
xmp4_projectsSearch and browse projects by language and name. Use this first to discover projects, then use other tools with the repo name.5 params

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

Parameters* required
languagestring
Filter by language (e.g., Python, TypeScript, CSharp)
pageinteger
Page number (1-based, default 1)
page_sizeinteger
Results per page (default 20, max 100)
querystring
Search by project name (case-insensitive contains)
repostring
Filter by repository name
xmp4_searchSearch symbols in a project. Use xmp4_projects first to find the project identifier.7 params

Search symbols in a project. Use xmp4_projects first to find the project identifier.

Parameters* required
kindstring
Filter by kind: Class, Method, Function, etc.
max_resultsinteger
Maximum results to return (default: 50). Kept as per-page upper bound alongside page_size.
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
query*string
Search query (symbol name or pattern)
xmp4_serverGet server information, version, and capabilities

Get server information, version, and capabilities

No parameters. Call it with no arguments.

xmp4_sourceExtract source code for a symbol in a project.7 params

Extract source code for a symbol in a project.

Parameters* required
docsstring
Include docs: none (default) | summary | full (xmp4_info only)
file_pathstring
File path to disambiguate
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
symbol_name*string
Symbol name
xmp4_symbol_atLSP-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.4 params

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.

Parameters* required
columninteger
Column number (0-based, default 0 = beginning of line)
file_path*string
File path inside the project, relative to repo root
lineinteger
Line number (1-based)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
xmp4_tests_forFind 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.).7 params

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

Parameters* required
docsstring
Include docs: none (default) | summary | full (xmp4_info only)
file_pathstring
File path to disambiguate
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
symbol_name*string
Symbol name
xmp4_usagesFind all usages/references of a symbol in a project.7 params

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

Parameters* required
docsstring
Include docs: none (default) | summary | full (xmp4_info only)
file_pathstring
File path to disambiguate
output_formatstring
Output format: Compact (default) or Verbose
pageinteger
Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)
page_sizeinteger
Results per page (default 20, max 100)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
symbol_name*string
Symbol name
xmp4_viewRead 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.4 params

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.

Parameters* required
file_path*string
File path inside the project, relative to repo root
from_lineinteger
Starting line (1-based, default 1)
project*string
Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Pytho...
to_lineinteger
Ending line (inclusive, default from_line+49, hard cap 500 lines per call)

Sponsors

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


View the full README on GitHub

Details

Repository
github.com/0ics-srls/lsai-xmp4.public
Website
example4.ai
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

More from 0ics-srls