mcp-adonis-docs
Provides version-aware documentation search and retrieval for AdonisJS, automatically detecting the project's AdonisJS version (v4, v5, v6, v7) and searching the corresponding official docs.
Enables searching and retrieving documentation for Lucid ORM, AdonisJS's database ORM, via dedicated search and page fetching tools.
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., "@mcp-adonis-docsSearch docs for Lucid ORM relationships"
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.
mcp-adonis-docs
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) |
|
v6 (core) |
|
v5 (core) |
|
v4 (core) |
|
Lucid ORM |
|
Edge |
|
VineJS |
|
Japa |
|
Indexes and pages are cached in memory for 15 minutes.
Related MCP server: scoutdocs-mcp
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
Add to Claude Code
Published on npm as mcp-adonis-docs —
runs via npx, nothing to install or build.
Project level (writes .mcp.json, shared with your team):
claude mcp add adonis-docs --scope project -- npx -y mcp-adonis-docsGlobal level (available in all your projects):
claude mcp add adonis-docs --scope user -- npx -y mcp-adonis-docsWith 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 -- npx -y mcp-adonis-docsOr configure .mcp.json manually:
{
"mcpServers": {
"adonis-docs": {
"command": "npx",
"args": ["-y", "mcp-adonis-docs"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}Claude Code expands ${VAR} in .mcp.json, so no hardcoded token needed.
Prefer a global install? npm install -g mcp-adonis-docs gives you the
adonis-docs-mcp command — use it in place of npx -y mcp-adonis-docs.
Development
git clone https://github.com/fdciabdul/mcp-adonis-docs.git
npm install
npm run build # or npm run dev for watch modePublishing to npm happens via GitHub Actions (publish.yml) —
runs on every GitHub release or manual gh workflow run publish.yml. Requires an
NPM_TOKEN repository secret (npm automation token).
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" }
Available Tools
3 toolsdetect_versionDetect AdonisJS versionA
Reads the project's package.json and reports the AdonisJS major version (v4–v7), related packages (Lucid, Edge, ...), and the matching docs source.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the AdonisJS project root (or its package.json). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states that the tool reads the project's package.json, which implies a read-only, non-mutating operation. It also describes the kind of information it reports. It doesn't detail error handling or missing-package.json scenarios, but the key behavioral trait is disclosed.
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, well-structured sentence that front-loads the action and resource, then lists the outputs. Every clause adds value and there is no redundant or filler 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?
The tool has one parameter, no output schema, and no annotations. The description explains the expected input and the high-level output: major version, related packages, and matching docs source. It could be more specific about the structure of the output or edge cases, but for a simple detection tool it is reasonably complete.
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 100%, and the parameter description in the schema already explains what projectPath means. The tool description itself adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 is appropriate.
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 ('Reads ... and reports') and clearly identifies the resource (project's package.json) and the outputs (AdonisJS major version, related packages, matching docs source). It is easily distinguished from the sibling tools search_docs and get_doc, which focus on documentation lookup rather than project inspection.
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 a usage context: determining the AdonisJS version and correct docs source before using docs tools. However, it does not explicitly state when to use this tool versus the sibling tools, nor does it name alternatives or exclusions. The guidance is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_docGet AdonisJS doc pageA
Fetches a documentation page by id (from search_docs) as plain markdown/asciidoc. Use 'section' to return only the heading section matching a keyword — cheaper than the full page.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Doc id from search_docs (URL path for v7, repo path otherwise). | |
| library | No | Docs to search: 'core' framework docs (default, version-aware), 'lucid' ORM, 'edge' templates, 'vine' validation, or 'japa' testing. | |
| section | No | Keyword — return only the heading section containing it. | |
| version | No | AdonisJS version. Omit to auto-detect from projectPath (defaults to v7 when neither is given). | |
| maxLength | No | Max characters returned (default 8000). | |
| projectPath | No | Path to an AdonisJS project root (or its package.json) used to auto-detect the version. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the return format (plain markdown/asciidoc) and the section-filtering behavior, including the 'cheaper than the full page' performance hint. It does not mention errors or edge cases, but for a read-only doc fetcher this is reasonable.
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 with no filler. The core purpose and id source are front-loaded, and the section usage tip earns its place by providing actionable guidance.
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 is adequate for a fetch-by-id tool: it identifies the id source, output format, and a useful partial-fetch option. The rich schema covers parameters and defaults. A little more context about behavior when no id is found or when maxLength truncates output would round it out, but nothing critical is 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 description coverage is 100%, so the baseline is 3. The description adds only a little beyond the schema, mostly reinforcing the 'section' parameter's purpose. It does not need to compensate for missing parameter docs.
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?
States a specific verb and resource: 'Fetches a documentation page by id' as plain markdown/asciidoc. The phrase 'from search_docs' distinguishes it from the search sibling and makes the intended fetch-by-id role clear.
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 the correct flow by saying the id comes from search_docs, and gives explicit guidance on when to use 'section' for a cheaper partial fetch. It stops short of stating when not to use get_doc or comparing it directly to detect_version, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsSearch AdonisJS docsA
Keyword search over AdonisJS documentation (core v4–v7, Lucid ORM, or Edge templates). Returns a compact ranked list of doc ids — pass an id to get_doc to read the page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 8). | |
| query | Yes | Keywords to search for, e.g. 'lucid relationships' or 'auth middleware'. | |
| library | No | Docs to search: 'core' framework docs (default, version-aware), 'lucid' ORM, 'edge' templates, 'vine' validation, or 'japa' testing. | |
| version | No | AdonisJS version. Omit to auto-detect from projectPath (defaults to v7 when neither is given). | |
| projectPath | No | Path to an AdonisJS project root (or its package.json) used to auto-detect the version. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It explains that the tool returns a 'compact ranked list of doc ids,' which tells the agent results are not full page content and that a follow-up call to get_doc is needed. It does not mention rate limits, auth, or failure behavior, but those are minor for a read-only docs search tool.
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 compact: two sentences deliver the search scope, the return format, and the routing to get_doc. It is front-loaded and free of filler. It loses a point because the parenthetical library list is incomplete and slightly restates the title's 'AdonisJS docs' concept.
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 schema's thorough parameter descriptions and the absence of an output schema, the description sufficiently explains the return shape and how to proceed. It also gives enough context for chaining with get_doc. It could have mentioned version auto-detection behavior or the full library enum, but the schema already handles those details.
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 schema already provides 100% coverage with clear descriptions for all five parameters, including enums for library and version, so the baseline is 3. The description adds little parameter-level meaning beyond a partial library list, and omits vine/japa. It does not compensate for or improve on the schema's parameter documentation.
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 a specific verb and resource: 'Keyword search over AdonisJS documentation.' It also distinguishes itself from get_doc by explaining that the output is a ranked list of doc ids meant to be passed to get_doc. Though the parenthetical omits vine/japa libraries, the overall purpose is unmistakable and the schema fills that gap.
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 frames when to use this tool: when you need to find relevant documentation pages via keyword search. It also tells the agent what to do next: 'pass an id to get_doc to read the page.' It does not explicitly discuss the detect_version sibling or state when not to use search_docs, so it is not a full when/when-not guide.
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.
3 tool updates
v0.1.0- First observed
detect_version - First observed
get_doc - First observed
search_docs
TDQS
Each tool has a clearly distinct role: detect_version identifies project context, search_docs finds relevant documentation pages, and get_doc retrieves page content. There is no overlap or ambiguity between them.
All tool names follow the same snake_case verb_noun pattern: detect_version, search_docs, get_doc. The naming is predictable and consistent.
Three tools is a well-scoped size for a documentation server. Each tool covers a necessary step in the workflow: version detection, searching, and fetching content.
The tool set forms a complete workflow: detect version, search relevant docs, and retrieve specific pages or sections. There are no obvious dead ends or missing core operations for documentation access.
Maintenance
Related MCP Connectors
MCP server for accessing curated awesome list documentation
MCP server for querying Forkast documentation
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
The official Svelte MCP server providing docs and autofixing tools for Svelte development
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides version-pinned, deterministic documentation sourced from DevDocs.io to AI assistants (Claude, RooCode, Cline, Copilot etc.) and also via offline mode. Not via Scraping! But using the supported downloading option from devdocs.15713MIT
- AlicenseAqualityDmaintenanceMCP server that fetches and searches the latest stable documentation for any package from PyPI, npm, and crates.io.5MIT
- AlicenseNot gradedqualityCmaintenanceMCP server to access and search adonis-mcp documentation files from GitHub, with tools for listing, searching, and extracting code examples.16MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Astro/Starlight docs sites, providing search, get, and list tools for documentation content.2812MIT
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/fdciabdul/mcp-adonis-docs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server