A Laravel developer's MCP companion. Get the absolute best advice, recommendations, and up-to-date documentation for the entire Laravel ecosystem.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Mature repo (>1y old)
claude mcp add laravel-mcp-companion -- docker run -i --rm ghcr.io/brianirish/laravel-mcp-companion{
"mcpServers": {
"laravel-mcp-companion": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/brianirish/laravel-mcp-companion"]
}
}
}MCP Servers overview
# Laravel MCP Companion
*formerly Laravel Docs MCP Server*
[](https://github.com/brianirish/laravel-mcp-companion/releases)
[](https://www.python.org/downloads/)
[](https://github.com/brianirish/laravel-mcp-companion/actions/workflows/ci.yaml)
[](https://codecov.io/gh/brianirish/laravel-mcp-companion)
[](https://github.com/brianirish/laravel-mcp-companion/blob/main/LICENSE)
[](https://github.com/brianirish/laravel-mcp-companion/pkgs/container/laravel-mcp-companion)
[](https://github.com/brianirish/laravel-mcp-companion)
[](https://github.com/brianirish/laravel-mcp-companion)
> ⚠️ **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.
## How It Compares
| Feature | [Laravel Boost](https://github.com/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.
### What you get:
- **Multi-version Laravel documentation** (6.x through latest) with enhanced search
- **Learning paths** - Structured learning sequences by topic and skill level
- **"I need X" finder** - Describe what you need, get relevant documentation
- **Difficulty filtering** - Content organized by beginner/intermediate/advanced
- **15 semantic categories** - Browse documentation by topic area
- **Auto-discovery Laravel services** - Forge, Vapor, Envoyer, Nova (117+ sections)
- **Community package documentation** - 42,000+ lines from Spatie, Livewire, Inertia, Filament
- **Package integration guides** - Installation and setup for 50+ curated packages
- **Cross-package compatibility** - Learn which packages work well together
- **Unified search** across core Laravel docs, services, and packages
- **Daily updates** - Automatically syncs with latest documentation
## Installation
Listed in the [official MCP Registry](https://registry.modelcontextprotocol.io/?search=laravel-mcp-companion)
as `io.github.brianirish/laravel-mcp-companion` — clients with registry
support can install it from there directly. Manual setup:
### Claude Desktop
1. **Open Claude Desktop Settings**
- Click Claude menu → Settings → Developer → Edit Config
2. **Add to your configuration file:**
```json
{
"mcpServers": {
"laravel-mcp-companion": {
"command": "docker",
"args": ["run", "--rm", "-i", "ghcr.io/brianirish/laravel-mcp-companion:latest"]
}
}
}
```
3. **Restart Claude Desktop** for changes to take effect
**Config file locations:**
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
### Claude Code
Use the `claude mcp add` command:
```bash
# Add with Docker
claude mcp add laravel-mcp-companion -- docker run --rm -i ghcr.io/brianirish/laravel-mcp-companion:latest
# Or add to project-specific config (for team sharing)
claude mcp add laravel-mcp-companion --scope project -- docker run --rm -i ghcr.io/brianirish/laravel-mcp-companion:latest
```
The `--scope project` option creates a `.mcp.json` file in your project root that can be committed to version control.
### Configuration Options
These options can be used with the Docker command. For example:
```bash
# Pin to a specific older Laravel version
docker run --rm -i ghcr.io/brianirish/laravel-mcp-companion:latest --version 11.x
# Force update all documentation
docker run --rm -i ghcr.io/brianirish/laravel-mcp-companion:latest --force-update
```
| 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 |
### Keeping documentation current
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:
```bash
docker pull ghcr.io/brianirish/laravel-mcp-companion:latest
```
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:
```jsonc
"args": ["run", "--rm", "-i", "--pull=always",
"ghcr.io/brianirish/laravel-mcp-companion:latest"]
```
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:
```bash
docker run --rm -i -v laravel-mcp-docs:/app/docs \
ghcr.io/brianirish/laravel-mcp-companion:latest --update-docs
```
> **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-docs` becomes the way you
> refresh it. Use a volume when you want to control updates explicitly; stick to
> plain `docker pull` if you'd rather the image stay in charge.
### Transform Modes
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.
```bash
# Restore the old flat tool listing
docker run --rm -i ghcr.io/brianirish/laravel-mcp-companion:latest --transform-mode none
```
### HTTP transport security
**Authentication is off by default.** Anyone who can reach the HTTP port can call every tool, so treat network exposure as granting full access to the documentation tree — or turn on bearer-token auth:
```bash
# Validate tokens issued by a real OAuth 2.1 authorization server
What people ask about laravel-mcp-companion
What is brianirish/laravel-mcp-companion?
+
brianirish/laravel-mcp-companion is mcp servers for the Claude AI ecosystem. A Laravel developer's MCP companion. Get the absolute best advice, recommendations, and up-to-date documentation for the entire Laravel ecosystem. It has 36 GitHub stars and was last updated today.
How do I install laravel-mcp-companion?
+
You can install laravel-mcp-companion by cloning the repository (https://github.com/brianirish/laravel-mcp-companion) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is brianirish/laravel-mcp-companion safe to use?
+
Our security agent has analyzed brianirish/laravel-mcp-companion and assigned a Trust Score of 92/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains brianirish/laravel-mcp-companion?
+
brianirish/laravel-mcp-companion is maintained by brianirish. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to laravel-mcp-companion?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy laravel-mcp-companion to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/brianirish-laravel-mcp-companion)<a href="https://claudewave.com/repo/brianirish-laravel-mcp-companion"><img src="https://claudewave.com/api/badge/brianirish-laravel-mcp-companion" alt="Featured on ClaudeWave: brianirish/laravel-mcp-companion" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!