@fdciabdul/mcp-adonis-docs
v0.1.0
Published
MCP server for version-aware AdonisJS documentation (v4-v7, Lucid, Edge, VineJS, Japa). Detects the AdonisJS version from a project's package.json and searches the matching docs.
Readme
adonis-docs-mcp
MCP server for version-aware AdonisJS documentation. It reads your project's
package.json, detects which AdonisJS major version you are on (v4, v5, v6, or v7),
and searches the documentation that matches — so you never get v7 answers for a v5 app.
Also covers Lucid ORM, Edge templates, VineJS validation, and Japa testing docs.
Documentation sources
| Source | Where it reads from |
|--------|---------------------|
| v7 (core) | docs.adonisjs.com/llms.txt index + raw markdown pages |
| v6 (core) | github.com/adonisjs/v6-docs (markdown) |
| v5 (core) | github.com/adonisjs/v5-docs (markdown) |
| v4 (core) | github.com/adonisjs/legacy-docs branch 4.1 (asciidoc) |
| Lucid ORM | github.com/adonisjs/lucid.adonisjs.com (markdown) |
| Edge | github.com/edge-js/edgejs.dev (markdown) |
| VineJS | github.com/vinejs/vinejs.dev (markdown) |
| Japa | github.com/japa/japa.dev branch 3.x (markdown) |
Indexes and pages are cached in memory for 15 minutes.
Version detection
From dependencies + devDependencies in the project's package.json:
@adonisjs/coremajor7→ v7@adonisjs/coremajor6→ v6@adonisjs/coremajor5→ v5@adonisjs/framework→ v4
Tools
detect_version
Reads package.json and reports the AdonisJS version, related packages
(@adonisjs/lucid, edge.js, ...), and the matching docs site.
projectPath— project root or path topackage.json
search_docs
Keyword search over the docs index. Output is a compact ranked list (title + doc id) designed to stay small in context.
query— keywords, e.g."auth middleware","lucid relationships"library—core(default),lucid,edge,vine, orjapaversion—v4|v5|v6|v7(optional)projectPath— auto-detect the version from this project (optional)limit— max results, default 8
When neither version nor projectPath is given, defaults to v7.
get_doc
Fetches one doc page as plain markdown/asciidoc — no HTML, no boilerplate.
id— doc id fromsearch_docssection— keyword; returns only the matching heading section (much cheaper than the full page)maxLength— character cap, default 8000 (truncates at a line boundary)library/version/projectPath— same assearch_docs
Install
No clone or build needed — install straight from GitHub (builds automatically on install, no auth required):
npm install -g github:fdciabdul/mcp-adonis-docsThis gives you the adonis-docs-mcp command.
Pin a version via package.json if you prefer:
"@fdciabdul/mcp-adonis-docs": "github:fdciabdul/mcp-adonis-docs#main"The package is also published to GitHub Packages as
@fdciabdul/[email protected]. Note that GitHub Packages requires a
personal access token with the read:packages scope even for public packages
(gh auth token does NOT have it by default). Add to ~/.npmrc:
@fdciabdul:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=TOKEN_WITH_READ_PACKAGESthen npm install -g @fdciabdul/mcp-adonis-docs.
Add to Claude Code
Project level (writes .mcp.json, shared with your team):
claude mcp add adonis-docs --scope project -- adonis-docs-mcpGlobal level (available in all your projects):
claude mcp add adonis-docs --scope user -- adonis-docs-mcpWith a GitHub token (recommended — raises the docs-index rate limit from
60 to 5000 requests/hour; both GITHUB_TOKEN and GH_TOKEN are accepted):
claude mcp add adonis-docs --scope user --env GITHUB_TOKEN=ghp_xxxx -- adonis-docs-mcpWithout a global install, run it through npx instead:
claude mcp add adonis-docs --scope user -- npx -y github:fdciabdul/mcp-adonis-docsOr configure .mcp.json manually:
{
"mcpServers": {
"adonis-docs": {
"command": "adonis-docs-mcp",
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}Claude Code expands ${VAR} in .mcp.json, so no hardcoded token needed.
Development
git clone https://github.com/fdciabdul/mcp-adonis-docs.git
npm install
npm run build # or npm run dev for watch modePublishing happens via GitHub Actions (publish.yml) —
runs on every GitHub release or manual gh workflow run publish.yml.
Example flow
detect_version { projectPath: "./my-app" }→AdonisJS v5 (@adonisjs/core@^5.9.0)search_docs { query: "file upload", projectPath: "./my-app" }→ ranked ids from v5 docsget_doc { id: "content/guides/http/file-uploads.md", version: "v5", section: "validating" }
