repo-reader-mcp
This read-only MCP server lets agents read and search code across many git repositories; currently its schema exposes only an about tool to describe itself and check the connection, while the README describes the broader intended capabilities.
Read files or folders at any branch, tag, or commit.
Explore history: commits for a repo or path, a commit with its diff, diffs between refs, and blame.
Find commits by message across all repositories, with default-branch and release info.
Search across all configured repositories at once, and
grepwithin one at any ref with context.Read agent guidance from
AGENTS.md,CLAUDE.md, rules, and skills, plus server-configured guidance.Work with local paths or remote hosts (GitHub, GitLab, Bitbucket, any git server), including groups matched by pattern.
Stay read-only by construction, with secrets hidden and responses sized for clients.
Connect via stdio or Streamable HTTP, with token-protected shared serving.
Enables read-only reading and searching of Bitbucket-hosted repositories, including files at arbitrary refs, commit history, diffs, blame, and search across configured repositories.
Provides read-only access to git repositories, allowing agents to inspect files at any branch, tag, or commit, review history and diffs, run blame, and search repository contents without modifying them.
Enables read-only reading and searching of GitHub-hosted repositories, including files at arbitrary refs, commit history, diffs, blame, and search across configured repositories.
Enables read-only reading and searching of GitLab-hosted repositories, including files at arbitrary refs, commit history, diffs, blame, and search across configured repositories.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@repo-reader-mcpWhat changed in src/auth between main and the feature/login branch?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
repo-reader-mcp
A read-only MCP server that lets any AI agent read and search code in git repositories — files at any branch, tag or commit, the history, diffs, blame and search across many repositories — without ever changing them.
Status: pre-alpha. It reads local repositories, and remote ones it mirrors from any git host — one by one, or a whole group by a pattern (
github: acme/shop-*) — at any branch, tag or commit: history, diffs, blame. One server can serve a team over HTTP behind a token, and search across all its repositories at once; secrets found in files are hidden. Documentation: rrm.pipelab.dev. The plan is in dev/PLAN.md, the design in dev/DESIGN.md.
Install
uvx repo-reader-mcp --config config.yaml --check # with uv: nothing else to install
pip install repo-reader-mcp # or into an environment of your own
docker run --read-only --tmpfs /tmp -v "$PWD/config:/config:ro" -v repo-mirrors:/data -e REPO_READER_MCP_TOKEN \
-p 8000:8000 ghcr.io/alexeiveselov92/repo-reader-mcp:0.3.1 # or its image, over HTTPPython 3.12+ and git 2.31+; the image holds both (running it in a container). Then say which repositories it reads and connect your agent.
Related MCP server: Sourceplane MCP
Why
Agents answer questions about code better when they can read it the way a developer does: open a file
at the commit that matters, follow a change through the history, compare a branch with main, see who
wrote a line and why. Most git MCP servers work on one local checkout and can write to it. This one is
built to be pointed at many repositories — local folders or remote hosts — and to be safe to hand to a
whole team.
What it will do
Read a file, a folder, any branch, tag or commit — not only the default branch.
History: commits of a repository or a path, a commit with its diff, a diff between two refs, blame — and commits found by their message across every repository (a ticket's key, a pull request's number), each saying when it reached the default branch and which releases have it.
Guidance for agents: a repository's
AGENTS.md,CLAUDE.md, rules and skills reach the agent reading it — plus what the people who run the server add, from its configuration or from another repository.Search across all configured repositories at once, and
grepinside one at any ref, with lines of context.Any code host: local paths, GitHub, GitLab, Bitbucket, any git server — mirrored on a schedule, fetching only what is served; a group of repositories named by a pattern, new ones joining as they are created.
Read-only by construction: no command that writes, no shell; secrets found in files are hidden before an agent sees them; answers sized for what clients accept.
Any MCP client: stdio for a local agent, Streamable HTTP for a shared server — Claude, ChatGPT, Cursor, Codex, any client that speaks MCP.
Configuration
One YAML file names the repositories and what to take from them; secrets are named, never written in it. An example is in examples/config.example.yaml; every key is in docs/reference/configuration.md. The documentation is at rrm.pipelab.dev, built from docs/.
Development
Python 3.12, uv, the official MCP Python SDK.
uv sync
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run repo-reader-mcp --config my-config.yaml --check # check a configuration
uv run repo-reader-mcp --config my-config.yaml --sync # bring the mirrors up to date once
uv run repo-reader-mcp --config my-config.yaml # the server over stdio
uv run repo-reader-mcp --config my-config.yaml --http 127.0.0.1:8000 # over Streamable HTTP, at /mcpLicense
Available Tools
1 toolaboutARead-only
What this server is and what it will offer. Call it to check the connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description reinforces this implicitly as a diagnostic/connection-check call but adds no detail on what the response contains or how failures manifest, leaving modest added value.
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 short sentences with zero waste, and the identity statement is front-loaded ahead of the call-to-action. Nothing is padded.
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 output schema, the description should ideally say what an agent gets back (server name, version, capabilities) so the tool's result can be reasoned about. It gestures at this with 'what this server is and what it will offer' but stops short of concrete return-value disclosure.
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?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a param-less tool applies. The description correctly does not fabricate any inputs.
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 states the tool returns information about the server and its offerings, but 'what it will offer' is vague about the actual content. There's no concrete verb+resource framing (e.g., 'returns server name, version, capabilities') and no siblings to differentiate from, so the purpose is only loosely established.
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?
It gives an explicit trigger: 'Call it to check the connection.' With no sibling tools, there are no alternatives to exclude, so the usage context is clear enough for an agent to know when to invoke it.
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.
1 tool update
v0.0.1- First observed
about
TDQS
Scored across 1 tool
There is only one tool, so there is no risk of confusing it with another tool. Its purpose as a connection/about check is clear from its description.
With a single tool there is no mixed naming convention to evaluate. However, 'about' is a noun and does not follow the common verb_noun pattern, so it is slightly less predictable.
The server is named repo-reader-mcp, but it exposes only a single trivial 'about' tool. This is an extreme mismatch between the apparent purpose and the available tool surface.
There are no tools for reading repositories, files, metadata, or any core repo-reader functionality. The surface is severely incomplete for the stated purpose.
Maintenance
Related MCP Connectors
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Team memory for AI coding agents and code reviews, reviewed by humans and served over MCP.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server that gives AI agents deep code understanding across multiple git repositories, combining git lifecycle management, Zoekt-based trigram code search, and cross-repo dependency analysis.16 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceSecure multi-source MCP server for reading local, GitHub, GitLab, Bitbucket, and network source code with read-only-by-default access, enabling AI assistants to inspect repositories safely.1MIT
- AlicenseAqualityCmaintenanceA read-only MCP server that lets AI assistants inspect local workspace files, search context, view git diffs, and fetch a fixed GitHub profile, all within a sandboxed stdio transport.5ISC
- FlicenseAqualityBmaintenanceA read-only MCP server that gives AI coding agents structured access to a project's source code, architecture, documentation, and Git context through 16 tools for searching, reading, and comparing evidence without modifying files.16-