Laravel documentation aggregator: multi-version core docs, services, packages, learning paths.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
formerly Laravel Docs MCP Server
β οΈ BETA SOFTWARE - This project is in active development. Features may change and breaking changes may occur.
Laravel MCP Companion is a documentation aggregator and navigator for the Laravel ecosystem. It centralizes and organizes high-quality documentation from across the Laravel ecosystem, making it easily discoverable through your AI assistant.
| Feature | Laravel Boost | Context7 | Laravel MCP Companion |
|---|---|---|---|
| Focus | Code generation | General docs | Laravel documentation |
| Best for | Active development | Any library | Learning & reference |
| Project-aware context | β | β | β |
| Laravel multi-version support (6.x - latest) | β | β | β |
| Laravel service docs (Forge, Vapor, Nova, Envoyer) | β | β | β |
| Learning paths & difficulty levels | β | β | β |
| "I need X" documentation finder | β | β | β |
| Curated Laravel package recommendations | β | β | β |
| Offline documentation access | β | β | β |
| TOON format output (30-60% fewer tokens) | β | β | β |
| General documentation (non-Laravel) | β | β | β |
Use Boost when writing code and you need project-aware context. Use Context7 for non-Laravel libraries. Use Companion when learning, researching, or need Laravel documentation reference.
Listed in the official MCP Registry
as io.github.brianirish/laravel-mcp-companion β clients with registry
support can install it from there directly. Manual setup:
Open Claude Desktop Settings
Add to your configuration file:
Restart Claude Desktop for changes to take effect
Config file locations:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.jsonUse the claude mcp add command:
The --scope project option creates a .mcp.json file in your project root that can be committed to version control.
These options can be used with the Docker command. For example:
| Option | Description | Default |
|---|---|---|
--version VERSION | Laravel version (e.g., "11.x", "12.x") | Latest |
--docs-path PATH | Documentation directory | ./docs |
--log-level LEVEL | DEBUG, INFO, WARNING, ERROR, CRITICAL | INFO |
--update-docs | Update documentation on startup | false |
--force-update | Force documentation update | false |
--transform-mode MODE | Tool exposure mode: search, code, or none (env: TRANSFORM_MODE) | search |
--host HOST | Interface to bind in HTTP mode (env: HOST) | 127.0.0.1 (0.0.0.0 in Docker) |
--cors-origin ORIGIN | Browser origin allowed to call the HTTP transport, repeatable (env: CORS_ORIGINS) | none (CORS off) |
--allowed-host HOST | Additional Host header accepted in HTTP mode, repeatable (env: ALLOWED_HOSTS) | localhost, 127.0.0.1, ::1 |
--auth-jwks-uri URI | JWKS endpoint enabling bearer-token auth in HTTP mode (env: AUTH_JWKS_URI) | none (auth off) |
--auth-issuer ISSUER | Required token issuer, with --auth-jwks-uri (env: AUTH_ISSUER) | none |
--auth-audience AUD | Required token audience, with --auth-jwks-uri (env: AUTH_AUDIENCE) | none |
--auth-required-scope SCOPE | Scope every token must carry, repeatable (env: AUTH_REQUIRED_SCOPES) | none |
--rate-limit RPS | MCP requests/second accepted in HTTP mode; operational endpoints are never limited (env: RATE_LIMIT_RPS) | none (no limiting) |
--rate-limit-burst N | Token-bucket burst capacity (env: RATE_LIMIT_BURST) | max(10, 2ΓRPS) |
Documentation ships inside the image, and a new image is published whenever the
documentation is refreshed, so :latest carries the most recently published
snapshot. The catch is that docker run reuses the copy you already have β
once you've pulled the image, you keep running it until you pull again. Refresh
whenever you like:
Or add --pull=always to your MCP config so every start checks for a newer image.
It costs a moment of startup time and needs a working connection, so it's opt-in
rather than the default:
You don't have to track this yourself. The server tells your assistant how old the documentation is for the Laravel version it's serving, so if you ask about something newer than that snapshot it will say so and offer to refresh instead of answering from stale pages. You can also just ask β "how current are your Laravel docs?"
To update in place without pulling a new image, --update-docs fetches fresh
documentation for the selected Laravel version during startup. Documentation for
Forge, Vapor, Nova, Envoyer and community packages refreshes separately, through the
update_external_laravel_docs tool your assistant can call.
With --rm the download is discarded when the container exits, so it repeats on
every start. A named volume keeps it β but note the trade-off:
A volume overrides the image's documentation. Once populated it masks
/app/docs, so pulling a newer image no longer updates what the server reads β the volume becomes your source of truth and--update-docsbecomes the way you refresh it. Use a volume when you want to control updates explicitly; stick to plaindocker pullif you'd rather the image stay in charge.
By default the server no longer lists all of its tools. Instead it exposes a compact, search-first interface that keeps your AI client's context window lean:
search (default) β Exposes search_tools (BM25 relevance search over the tool catalog) and call_tool (proxy to invoke any underlying tool). search_laravel_docs stays pinned and directly callable.code (experimental) β Exposes Code Mode meta-tools (tags, search, get_schema, execute) that let the client discover tools and orchestrate them with sandboxed Python. Requires the fastmcp[code-mode] extra (included in requirements.txt). Avoid exposing this publicly over HTTP β execute is a code execution endpoint.none β Pre-0.9 behavior: every tool listed directly. Use this if your MCP client doesn't handle the synthetic search tools well.No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/laravel-mcp-companion)<a href="https://allmcps.com/mcp/laravel-mcp-companion"><img src="https://allmcps.com/api/badge/laravel-mcp-companion?style=directory" alt="Laravel MCP Companion on AllMCPs" /></a>