opencode-mcp
Allows asking natural-language questions about a GitHub repository and receiving answers grounded in the code.
Click on "Install 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., "@opencode-mcpWhere is the main entry point in facebook/react?"
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.
opencode-mcp
MCP server (stdio) exposing an ask_codebase tool: ask a natural-language question about a GitHub repository, get an answer grounded in the real code. READ-ONLY by design.
Built in TypeScript on the official MCP TypeScript SDK, and on opencode running headless as the analysis engine.
How it works
The server fetches the repo itself — clone if absent, fetch + hard resync otherwise. Fully deterministic: a nonexistent repo fails in seconds with the git error relayed verbatim, zero LLM tokens spent.
opencode runs headless with
cwd= the repo directory. Noopencode serve, no--attach. The repo's ownAGENTS.md(if any) is loaded as project context. Sessions are opencode-native and scoped per project directory, socontinue_session=truedeterministically means "the latest session of this repo" — cross-repo cross-talk is impossible by construction.
Fetch policy
A clone/fetch runs only when:
the repo is not in the manifest, or
its checkout is missing on disk (periodic cleanup), or
an explicitly requested branch differs from the checked-out one, or
the last fetch is older than
OPENCODE_REPO_TTL_DAYS(default 3).
Otherwise the existing checkout is used as-is, so the code stays stable across follow-up calls.
Manifest
Known checkouts are tracked in .opencode_mcp_manifest.json (atomic writes, one entry per owner/repo):
{
"owner/repo": {
"dir": "/abs/path",
"branch": "main",
"fetched_at": "2026-07-15T03:21:00Z"
}
}Read-only enforcement
Two layers:
A read-only preamble injected into every prompt by this server.
Your opencode agent config — define an "explore"-style agent with
edit: denyand setOPENCODE_AGENTto force it on every run.
Do not put read-only rules in your global AGENTS.md: it would poison your normal interactive opencode sessions.
Long calls
The hard timeout defaults to 10 minutes and an MCP progress notification is emitted every 15 s (clone/fetch included). Per the MCP spec, clients that reset their request timeout on progress keep the call alive; when the client sends no progressToken, the heartbeat is a no-op. Align the client's own per-call timeout (timeout: in the mcp_servers entry) above the hard one.
Related MCP server: GitHub MCP Server
Requirements
Node.js ≥ 20
giton the PATHopencode CLI (absolute path recommended via
OPENCODE_BIN)
Install
From npm:
npm install -g @mvagnon/opencode-mcp # installs the `opencode-mcp` commandOr run it without installing:
npx -y @mvagnon/opencode-mcpFrom source:
npm install
npm run build # server binary: dist/index.js (stdio transport)Configuration
Declare environment variables in the env: block of the client's mcp_servers entry. Hermes does not pass your full shell env to stdio servers — only PATH, HOME, USER, LANG, LC_ALL, TERM, SHELL, TMPDIR.
Variable | Default | Purpose |
|
| opencode binary (absolute path recommended) |
| (none) | opencode agent forced on every run (e.g. |
|
| Where checkouts live |
|
| Directory of |
|
| Re-fetch a repo after this many days |
|
| Hard timeout for the opencode run, in seconds |
Example client entry (Hermes):
mcp_servers:
opencode:
command: npx
args: ["-y", "@mvagnon/opencode-mcp"]
timeout: 660 # keep above ASK_CODEBASE_TIMEOUT
env:
OPENCODE_BIN: /usr/local/bin/opencode
OPENCODE_AGENT: exploreFor a from-source checkout, use command: node with args: ["/abs/path/to/opencode-mcp/dist/index.js"] instead.
The ask_codebase tool
Argument | Type | Description |
|
| The natural-language question (e.g. "where is API request auth validated?") |
|
| Exact GitHub slug |
|
| Optional branch to pin; omit for the default branch |
|
| Resume the latest discussion of this repo (default |
Use it for architecture questions, where a feature lives, request flow, conventions, design rationale, etc.
Development
npm run lint # eslint
npm run typecheck # tsc --noEmit
npm run build # emit dist/
npm test # node:test unit tests (pure logic)
npm run dev # tsc --watchSource layout: see AGENTS.md.
Releasing
Releases are fully automated with release-please and npm trusted publishing (OIDC — no npm token stored in the repo):
Land changes on
mainusing Conventional Commits (feat:,fix:,feat!:…) — they drive the version bump and the changelog.release-please maintains a release PR that accumulates changes, bumps
package.json, and updatesCHANGELOG.md.Merging the release PR creates the GitHub release and tag; the
publishjob then publishes to npm via OIDC.
One-time setup (already done once the package exists):
npm cannot create a package via OIDC, so the first version must be published manually (
npm login && npm publish).Then on npmjs.com → package → Settings → Trusted Publisher: GitHub Actions, repository
mvagnon/opencode-mcp, workflowrelease.yml.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI models to access GitHub repository contents as context, with features to fetch entire repositories, specific file contents, and repository structures for use in AI interactions.Last updated32902MIT
- Alicense-qualityDmaintenanceEnables AI assistants to analyze GitHub repository structures and read file contents with features like directory traversal, file type analysis, syntax highlighting, and code pattern detection. Supports both public and private repositories through GitHub API integration.Last updated9Apache 2.0
- Alicense-qualityDmaintenanceEnables AI assistants to access live GitHub repository data without cloning, supporting repo summarization, file explanation, recent changes, and dependency analysis.Last updatedMIT
- Flicense-qualityDmaintenanceProvides read-only access to company GitHub repositories, enabling code search, file retrieval, documentation search, and repo browsing via natural language.Last updated
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
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/mvagnon/opencode-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server