mcp-reposkein
OfficialThe mcp-reposkein server provides MCP tools that give AI agents a structured, navigable view of a codebase via a deterministic Code Property Graph (CPG). It enables semantic search, impact analysis, and context gathering without relying on grep. Key capabilities include:
Code Graph Build & Maintenance: Index/re-index a repository, capturing files, classes, functions, imports, call/inheritance edges. Native multi-language support (Python, TypeScript, JavaScript, Rust, Go, Java, C#). Refresh after edits.
Semantic Search: Find functions/classes by natural language meaning (lexical matching over names, signatures, and summaries). Supports cross-repo federation.
Context Profiles: Retrieve caller/callee neighborhoods (1–2 hops) of any function/class as readable prose, with configurable depth.
Impact Analysis: Identify transitive callers of a function/class, split into production code and covering tests, to understand what breaks and what tests to run.
Temporal Context: Get git-derived signals per file: change churn, recency, ownership, and co-change history.
Semantic Summaries: Attach versioned natural-language summaries to graph nodes, content-hash-stamped for staleness tracking, committed to git.
Read-Only Cypher Queries: Execute custom graph queries with capped results for advanced analysis, including federated multi-repo traversal.
Visualization: Launch an interactive 3D constellation viewer of the code graph.
Cross-Repo Federation: Discover and link nested repositories with cross-repo edges.
Provides an optional Neo4j backend for storing and querying the code property graph, enabling graph database capabilities.
Listed on: skills.sh · Glama · mcpservers.org · ghcr.io
🔭 Live demo → — RepoSkein's own graph, rendered as an interactive 3D constellation in your browser.
Get running in one line: Claude Code: /plugin marketplace add reposkein/reposkein · elsewhere: npx @reposkein/mcp init — full walkthrough in Installation.
Introduction
RepoSkein gives your AI coding agent a map of your codebase — so it navigates structure instead of grepping and guessing.
It uses Tree-sitter to build a deterministic Code Property Graph of your repo — files, classes, functions, imports, and call edges — and serves it to any MCP-capable agent (Claude Code, Cursor, Codex, …). As the agent works, it writes short natural-language summaries onto graph nodes; those summaries are versioned in git alongside the code, so an agent's understanding becomes shared team memory that the next agent — or teammate — starts from.
Who it's for: developers using AI coding agents on real, large, or nested/polyglot codebases, who are tired of the agent burning its context window on grep; and teams who want that hard-won understanding to persist and be shared rather than re-derived every session.
⚡ Zero-infra — no database, no Docker. The graph lives in plain
.reposkein/*.jsonlfiles, rebuilt from your working tree in seconds.🔒 Deterministic — same code → byte-identical graph. No LLM in the construction path.
🌐 7 languages — Python, TypeScript, JavaScript, Rust, Go, Java, C#.
🧩 Local-first & git-native — the summaries your agents write are committed and travel with your code.
Your agent asks | RepoSkein answers — directly from the graph |
"Who calls | the exact callers, with one-line summaries |
"What breaks if I change this?" | the impacted callers + the tests that cover them |
"Where do I even start?" | ranked entry-point functions by meaning, not filename |
"What usually changes with this file?" | co-change history from git |
In a deterministic, no-LLM benchmark, RepoSkein surfaces the right functions with a mean ~8.4× fewer context tokens than a grep-based agent on structural queries.
The bundled reposkein-graph-rag skill drives a semantic_find → get_context_profile → impact → get_temporal_context → write_semantic_summary → reindex_file loop, so you just ask in plain language. Full workflow, an example interaction, and the tool-by-tool + CLI reference: docs/TOOLS.md.
Related MCP server: Octocode
Table of contents
For teams
Joining a repo that already has RepoSkein set up? One command, no questions asked:
git clone <repo-url> && cd <repo> && npx @reposkein/mcp initinit detects the committed .reposkein/meta.json, reuses its config, and wires up your agent's MCP config automatically. Publish a durable, shareable view of the graph with a hosted constellation (GitHub Pages via reposkein-mcp init --ci) — and because summaries are committed to git, they're shared team memory: every teammate's agent starts from what previous agents already learned, not from scratch.
Support: if RepoSkein is useful, Ko-fi support funds hosted-constellation infrastructure and indexer maintenance — supporters get an ad-free experience once sponsorship tiers ship.
Prerequisites
Node.js 18+ — to run
npx @reposkein/mcp(the indexer binary is fetched automatically).An MCP-capable agent — Claude Code, Cursor, Codex, Zed, etc.
A git repository to index (RepoSkein installs git hooks and reads git history for
get_temporal_context).Optional: Docker (only for the embeddings server or the Neo4j backend); Rust (only to build from source).
Installation
Claude Code? Two commands, zero config:
/plugin marketplace add reposkein/reposkein
/plugin install reposkeinThe plugin registers the MCP server against whatever repo you have open
(REPOSKEIN_REPO_PATH is wired to the project directory) and ships the
navigation skills as /reposkein:reposkein-setup and
/reposkein:reposkein-graph-rag — run the setup skill once per repo to
build the graph. Optional embeddings (Voyage AI or
any OpenAI-compatible endpoint) work by exporting the REPOSKEIN_EMBED_*
env vars in your shell — the plugin's server inherits them; the default is
fully local, zero-egress lexical search.
Any other agent — in the repo you want it to understand:
npx @reposkein/mcp initThis downloads the indexer for your platform, installs git hooks + the navigation skill, builds the initial code graph, and prints an MCP config block. Then:
Add the printed config to your agent (e.g. Claude Code's
.mcp.json):{ "mcpServers": { "reposkein": { "command": "reposkein-mcp", "env": { "REPOSKEIN_REPO_PATH": "/path/to/your/repo" } } } }Verify the graph (
initalready built it):reposkein-mcp doctor . # ✓ binary ✓ indexed (N nodes) ✓ ready git add .reposkein/meta.json .reposkein/config.toml && git commit -m "add RepoSkein config"nodes.jsonlandedges.jsonlare derived from your working tree and git-ignored — a clone rebuilds them on first use. Re-index after big changes withreposkein-mcp index .(or the agent'sreindex_filetool).Ask your agent "what calls this function?" or "what breaks if I change X?" — it answers from the graph.
Prefer to let your agent set it up? Install the skills and tell it to run the
reposkein-setupskill — it installs, indexes, and verifies everything:npx skills add reposkein/reposkein --all
Platforms: prebuilt binaries for macOS (Apple Silicon), Linux (x64/arm64), and Windows (x64). Elsewhere, point REPOSKEIN_INDEXER_BIN at a from-source build.
Let your agent install it for you
For complex setups — multi-repo workspaces, Neo4j backend, the local embedding server, or wiring up agents besides Claude Code (OpenCode, Cursor, Codex, Continue, Cline, …) — paste this into any MCP-capable agent and it'll walk you through:
Install RepoSkein in this workspace. Read
docs/INSTALL.md(orhttps://github.com/reposkein/reposkein/blob/main/docs/INSTALL.md), walk me through the question tree in §1, then execute §2 onward. If anything fails, troubleshoot via §9 — don't silently skip steps. Confirm withreposkein-mcp doctor .per repo and asemantic_findsmoke test before claiming done.
docs/INSTALL.md is written for agents: it covers the decision tree (one repo vs workspace, JSONL vs Neo4j, lexical vs cloud vs local embeddings, which agent CLIs to wire), per-agent config schemas (.mcp.json, opencode.json, .cursor/mcp.json, Continue, Codex, Cline, …), the Apple-Silicon mps native embed-server recipe, and a troubleshooting table.
Supported languages
Python, TypeScript, JavaScript, Rust, Go, Java, C# — with an honest per-language matrix of what resolves exact vs by-name vs ambiguous. Full table + the resolution rules: docs/ARCHITECTURE.md. Adding a language is a well-trodden path — contributions welcome.
Going deeper: how the graph is built + cross-repo federation · the constellation viewer · semantic embeddings · Neo4j backend · shared remote server · building from source + repo layout.
Documentation
Full index, task-oriented: docs/README.md.
Doc | What's in it |
the | |
the | |
the local embedding server — Docker/GHCR, platforms, GPU | |
Track 1 retrieval benchmark — method + results | |
Track 2 end-task (SWE-bench) harness | |
release history (Keep a Changelog) | |
the two cross-agent skills |
Contributing
Contributions are welcome — bug fixes, new languages, docs. See CONTRIBUTING.md for the dev setup, the determinism invariants you must preserve, and the step-by-step recipe for adding a new language (it's a well-trodden path — Go, Java, and C# were each added the same way). RepoSkein uses Conventional Commits and keeps CI green (determinism gates + clippy + tests).
Acknowledgements
Tree-sitter — the parsers behind every language extractor.
Model Context Protocol — the agent integration standard.
Voyage AI —
voyage-code-3and the open-weightvoyage-4-nanopowering the optional embeddings tier.Discovery via Glama, skills.sh, mcpservers.org, and the awesome-mcp community lists.
README header by capsule-render.
Contact
🐛 Bugs / features: open an issue
💬 Questions / ideas: GitHub Discussions
License
Available Tools
8 toolsget_context_profileGet context profileA
Resolve a function/class (by node_id, file_path+name, or name) and return its caller/callee neighborhood (hops 1-2) with inlined prose and an enrichment_needed list. Never guesses — returns candidates if a name is ambiguous. Pass federated:true to resolve and traverse across nested repos.
Inputs: hops, name, node_id, federated, +1 more.
get_temporal_contextGit temporal contextA
Git-derived signals for a file: how often/recently it changes, who owns it, and which files most often change together with it (co-change) — answers "what else should I touch?". Advisory (derived from git history, not the committed graph). Before a cross-cutting change, use this to find files that historically change together.
Inputs: path (required).
impactChange impact + covering testsA
Given a function/class, return its transitive callers (what could break if you change it) split into impacted code vs the tests that cover it (what to run). Resolves by node_id, file_path+name, or name. federated:true spans nested repos.
Inputs: name, depth, node_id, federated, +1 more.
init_cpg_skeletonBuild the code graphB
Index the repository with the native indexer and load it into the graph database. Run once on a fresh repo (or to rebuild). Returns node/edge counts.
Inputs: full, path.
read_cypherRead-only Cypher queryA
Run a read-only Cypher query against the RepoSkein graph. Writes are rejected. Filter by n.repo_id = $repo_id (or n.repo_id IN $repo_ids); pass federated: true to span this repo and its nested repos via $repo_ids. Results are capped (200 rows / 64KB).
Inputs: query (required), params, federated.
reindex_fileReindex after editingA
Refresh the graph after editing a source file (pass its path). v1 performs a full reindex.
Inputs: path (required).
semantic_findFind code by meaningA
Rank functions/classes by a lexical match over their qualified names, signatures, and agent-written summaries — the entry point to seed get_context_profile when you don't know where to start. Returns ranked node_ids. federated:true spans nested repos.
Inputs: query (required), kind, limit, federated.
write_semantic_summaryWrite semantic summaryA
Attach a 1-3 sentence plain-text business-logic summary to a node, stamped with its current content hash for staleness tracking. Plain text only (no markdown links or code fences), max 1000 chars.
Inputs: node_id (required), summary (required), model.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: code indexing, context resolution, git temporal analysis, impact analysis, querying, reindexing, semantic search, and summary writing. No overlap or ambiguity.
Most tools follow a verb_noun pattern (e.g., get_context_profile, read_cypher). However, 'impact' is a single verb that deviates slightly, causing a minor inconsistency.
8 tools is well-scoped for a code analysis server. Each tool provides a distinct function without redundancy, and the count feels neither too sparse nor too heavy.
The surface covers indexing, search, context, temporal analysis, impact, and annotations. Minor gaps exist, such as missing ability to update or delete summaries, but core workflows are well-supported.
Maintenance
Related MCP Connectors
Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.
Graph-native persistent memory for AI agents — 33 MCP tools, zero-LLM writes.
Codebase knowledge graph — architectural awareness for AI coding agents via MCP
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides intelligent context management for AI development sessions, allowing users to track token usage, manage conversation context, and seamlessly restore context when reaching token limits.82 npm2Apache 2.0
- AlicenseNot gradedqualityAmaintenanceSemantic code indexer with GraphRAG knowledge graph. Index your codebase, search in natural language, and expose everything via MCP so AI agents understand architecture — not just files.523Apache 2.0
- AlicenseAqualityAmaintenanceKnowledge graph for token-efficient code reviews. Builds a structural map of your codebase with Tree-sitter, tracks changes incrementally, and gives AI agents precise context via MCP tools. Features fixed multi-word search, qualified call resolution, dual-mode embedding (ONNX local + LiteLLM cloud), and output pagination.676Apache 2.0
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server that injects 'Just-in-Time' context into AI conversations based on file paths and glob patterns.118 npm1ISC