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.
| Name | Required | Description | Default |
|---|---|---|---|
| hops | No | ||
| name | No | ||
| node_id | No | ||
| federated | No | ||
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool resolves identifiers, returns a neighborhood of calls with hops 1-2, includes an enrichment_needed list, returns candidates on ambiguity, and has a federated mode. It does not explicitly state read-only or destructive nature, but the description implies no mutations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a clear purpose: core function, ambiguity handling, and federated option. No wasted words, information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should clarify return structure. It mentions 'inlined prose and an enrichment_needed list' but does not detail the format or what other fields exist. Also missing error behavior (e.g., if target not found). Adequate but incomplete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains that node_id, file_path+name, or name are three identification methods; hops can be 1 or 2; federated is for cross-repo traversal. This adds crucial meaning beyond the schema's bare type/constraint definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it resolves a function/class by various identifiers and returns a caller/callee neighborhood with prose and enrichment list. It also notes it never guesses and returns candidates for ambiguity. While it distinguishes from siblings by focusing on dependency profiling, it does not explicitly differentiate from get_temporal_context or other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some guidance: use node_id, file_path+name, or name for identification; use federated:true for nested repos; never guesses but returns candidates for ambiguous names. However, it does not state when NOT to use this tool versus alternatives like impact or semantic_find.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It clarifies the tool is advisory (not authoritative) and derived from git history, but does not disclose potential performance implications or limitations (e.g., need for git history, staleness).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the key information (what it provides and the answer it gives), with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's purpose and use case clearly but lacks details about output format or limitations (e.g., only works for files in git history). Given no output schema and no annotations, additional context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate for the 'path' parameter. It only implies it is a file path (via 'for a file'), but does not specify format, relative/absolute, or accepted file types, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides git-derived signals for a file, including frequency, recency, ownership, and co-change, and answers 'what else should I touch?'. It distinguishes from siblings by focusing on temporal git signals, though not explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies usage before a cross-cutting change to find files that historically change together, providing clear context. However, it does not explicitly exclude when not to use or mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| depth | No | ||
| node_id | No | ||
| federated | No | ||
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description discloses split output, resolution by multiple identifiers, and federated behavior. Could add read-only hint but mutation is unlikely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first explains core purpose, second adds resolution and federated flag. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main purpose and many parameters, but depth parameter is missing. No output schema, so return format is vague ('impacted code vs tests' is high-level).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage 0%, but description explains node_id, file_path, name, and federated. Depth parameter not described, so not fully compensating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'return its transitive callers split into impacted code vs tests' which is a specific verb-resource pair. It also mentions resolution methods, differentiating from siblings like semantic_find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use case: when changing a function/class to see impact and tests to run. Provides resolution methods but lacks explicit when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | ||
| path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It discloses return value (node/edge counts) and states it uses a 'native indexer' and 'graph database,' but lacks details on destructiveness (rebuild overwrites), prerequisites, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and no superfluous content. However, the lack of parameter documentation reduces the practical value for an agent, preventing a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and two undocumented parameters, the description does not provide enough detail for an agent to confidently invoke the tool. Important aspects like whether the 'full' boolean triggers a full index or incremental update are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description provides no explanation of the two parameters 'path' and 'full'. This is a critical omission as agents cannot infer their purpose or correct usage from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool indexes the repository and loads it into the graph database, differentiating it from sibling tools like reindex_file which operates on single files. It specifies the high-level action and resource, meeting the highest standard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Run once on a fresh repo (or to rebuild).' It implies when to use (full repo indexing) and when not (single file changes suggest reindex_file), but does not explicitly name alternatives or state exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| params | No | ||
| federated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that writes are rejected and results are capped (200 rows / 64KB). No annotations provided, so description carries full burden; these are key behavioral traits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, each adding value: first states purpose and constraint, second provides usage patterns and limits. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description adequately covers purpose, usage, constraints, and parameter usage. Could mention return format or error handling but not required for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description explains all three parameters (query, params, federated) and gives examples of how to use them (e.g., filtering by repo_id). Adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'Run a read-only Cypher query against the RepoSkein graph' which clearly states the action and resource. It distinguishes from siblings like 'write_semantic_summary' by emphasizing read-only and rejecting writes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on filtering by repo_id and using federated flag to span repos. Does not explicitly state when not to use but implies for writes another tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reindex_fileReindex after editingA
Refresh the graph after editing a source file (pass its path). v1 performs a full reindex.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that v1 performs a 'full reindex', which implies a potentially expensive operation. However, it does not mention side effects, required permissions, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with purpose. It is concise but could be structured better (e.g., separate usage and behavior sections). Still, there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and no annotations, the description is minimal. It does not explain what 'refresh the graph' means, whether the operation is idempotent, or how errors are handled. This leaves the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds only 'pass its path' without clarifying path format (absolute/relative) or file existence requirements. For a single parameter, this adds negligible value beyond the schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Refresh the graph' (reindex) and resource 'source file' via path, and distinguishes from siblings like 'get_context_profile' or 'impact' by being the only tool for reindexing after editing. The mention of 'v1 performs a full reindex' adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use 'after editing a source file' and to 'pass its path', providing clear context. However, it does not specify when not to use this tool or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| limit | No | ||
| query | Yes | ||
| federated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the ranking behavior, the fact that it returns node_ids, and the federated scope. However, it does not explicitly state that the tool is read-only (no destruction), nor does it address authentication, rate limits, or error behavior. The description provides moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the main purpose and mechanism. Every sentence adds value: first explains the ranking and purpose, second adds return type and federated detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, no output schema, no annotations), the description covers main aspects: ranking mechanism, return type, usage context, and federated behavior. Lacks detail on output format of node_ids and explanation of all parameters (limit, kind), but overall adequate for a search tool with sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'query' parameter (used for lexical match) and 'federated' (spans nested repos), but does not explain 'limit' (though inferable) or 'kind' (enum meanings not described). Partial coverage, missing critical explanation for kind.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Rank') and resource ('functions/classes'), explains the matching criteria ('lexical match over qualified names, signatures, and summaries'), and explicitly distinguishes from sibling tool 'get_context_profile' by positioning itself as the entry point. It also clarifies the return value ('ranked node_ids') and federated scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use the tool: 'the entry point to seed get_context_profile when you don't know where to start.' It provides context for the federated parameter and implies an alternative (get_context_profile) for subsequent use. However, it does not explicitly exclude scenarios where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| node_id | Yes | ||
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes staleness tracking via content hash and format restrictions, compensating for missing annotations. However, does not disclose error behavior or the effect of updating an existing summary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, constraints, and behavior without wasted words. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers essential behavior and constraints. It could mention return value or error handling but is largely sufficient for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds meaning for 'summary' (plain text, length) but not for 'node_id' or 'model', which remain undefined. Partially compensates but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool attaches a 1-3 sentence plain-text summary to a node and distinguishes it from siblings like 'read_cypher' or 'semantic_find' by specifying the write action and business logic focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for attaching summaries and provides constraints (plain text, max 1000 chars, 1-3 sentences), but lacks explicit guidance on when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v0.1.0- First observed
get_context_profile - First observed
get_temporal_context - First observed
impact - First observed
init_cpg_skeleton - First observed
read_cypher - First observed
reindex_file - First observed
semantic_find - First observed
write_semantic_summary
TDQS
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.
251Graph-native persistent memory for AI agents — 33 MCP tools, zero-LLM writes.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Ground-truth code graph for your codebase: exact callers, callees, symbols & dependencies.
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.8172Apache 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.462Apache 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.766Apache 2.0
- AlicenseBqualityAmaintenanceLocal-first codebase intelligence engine providing AI coding agents with a typed MCP toolset for understanding and navigating code repositories.10051Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/reposkein/reposkein'
If you have feedback or need assistance with the MCP directory API, please join our Discord server