Skip to main content
Glama

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)

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.

Related MCP server: scoutdocs-mcp

Version detection

From dependencies + devDependencies in the project's package.json:

  • @adonisjs/core major 7v7

  • @adonisjs/core major 6v6

  • @adonisjs/core major 5v5

  • @adonisjs/frameworkv4

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 to package.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"

  • librarycore (default), lucid, edge, vine, or japa

  • versionv4 | 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 from search_docs

  • section — 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 as search_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-docs

Global level (available in all your projects):

claude mcp add adonis-docs --scope user -- npx -y mcp-adonis-docs

With 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-docs

Or 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 mode

Publishing 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

  1. detect_version { projectPath: "./my-app" }AdonisJS v5 (@adonisjs/core@^5.9.0)

  2. search_docs { query: "file upload", projectPath: "./my-app" } → ranked ids from v5 docs

  3. get_doc { id: "content/guides/http/file-uploads.md", version: "v5", section: "validating" }

Available Tools

3 tools
detect_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathYesPath to the AdonisJS project root (or its package.json).

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDoc id from search_docs (URL path for v7, repo path otherwise).
libraryNoDocs to search: 'core' framework docs (default, version-aware), 'lucid' ORM, 'edge' templates, 'vine' validation, or 'japa' testing.
sectionNoKeyword — return only the heading section containing it.
versionNoAdonisJS version. Omit to auto-detect from projectPath (defaults to v7 when neither is given).
maxLengthNoMax characters returned (default 8000).
projectPathNoPath to an AdonisJS project root (or its package.json) used to auto-detect the version.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 8).
queryYesKeywords to search for, e.g. 'lucid relationships' or 'auth middleware'.
libraryNoDocs to search: 'core' framework docs (default, version-aware), 'lucid' ORM, 'edge' templates, 'vine' validation, or 'japa' testing.
versionNoAdonisJS version. Omit to auto-detect from projectPath (defaults to v7 when neither is given).
projectPathNoPath to an AdonisJS project root (or its package.json) used to auto-detect the version.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv0.1.0
    • First observeddetect_version
    • First observedget_doc
    • First observedsearch_docs

TDQS

A4.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

All tool names follow the same snake_case verb_noun pattern: detect_version, search_docs, get_doc. The naming is predictable and consistent.

Tool Count5/5

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.

Completeness5/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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