Laravel 12 Docs MCP Server

by brianirish
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Automatically fetches and updates Laravel documentation from GitHub repository, supporting different Laravel versions and providing version control integration for documentation updates.

  • Provides access to Laravel documentation, enabling search and retrieval of Laravel docs across different versions. Includes tools for listing documentation files, searching documentation for specific terms, and automatically fetching and updating documentation from Laravel's GitHub repository.

Laravel Docs MCP Server

A Model Context Protocol (MCP) server that provides access to Laravel documentation and package recommendations for AI assistants and language models.

Overview

This server enables AI assistants to access Laravel documentation and package recommendations using the Model Context Protocol (MCP). It allows AI tools to:

  • Access and search Laravel documentation
  • Receive package recommendations based on specific use cases
  • Get implementation guidance for popular Laravel packages
  • Automatically update documentation from Laravel's GitHub repository

Installation

Quick Install via Smithery

npx -y @smithery/cli install @brianirish/laravel-docs-mcp --client claude

Manual Installation

Prerequisites

  • Python 3.12+
  • uv package manager (recommended)

Steps

  1. Clone the repository:
    git clone https://github.com/yourusername/laravel-docs-mcp.git cd laravel-docs-mcp
  2. Set up environment and install dependencies:
    # Create and activate virtual environment uv venv source .venv/bin/activate # Linux/macOS # or .venv\Scripts\activate # Windows # Install dependencies uv pip install .

Usage

Starting the Server

python laravel_docs_server.py

The server automatically fetches Laravel documentation on first run and can be stopped with Ctrl+C.

Command Line Options

OptionDescription
--docs-path PATHDocumentation directory path (default: ./docs)
--server-name NAMEServer name (default: LaravelDocs)
--log-level LEVELLog level: DEBUG, INFO, WARNING, ERROR, CRITICAL (default: INFO)
--transport TYPETransport method: stdio, websocket, sse (default: stdio)
--host HOSTHost to bind to (network transport)
--port PORTPort to listen on (network transport)
--version VERSIONLaravel version branch (default: 12.x)
--update-docsUpdate documentation before starting
--force-updateForce documentation update

Example with custom options:

python laravel_docs_server.py --docs-path /path/to/docs --version 11.x --update-docs --transport websocket --host localhost --port 8000

Documentation Updater

You can update the documentation separately:

# Update documentation python docs_updater.py --target-dir ./docs --version 12.x # Check if update is needed python docs_updater.py --check-only # Force update python docs_updater.py --force

API Reference

Client Example

import asyncio from fastmcp import Client async def main(): client = Client("path/to/laravel_docs_server.py") async with client: # List documentation result = await client.call_tool("list_docs", {}) print(result) # Search documentation result = await client.call_tool("search_docs", {"query": "routing"}) print(result) # Get package recommendations result = await client.call_tool("get_package_recommendations", {"use_case": "implementing subscription billing"}) print(result) # Read documentation resource = await client.read_resource("laravel://routing.md") print(resource) if __name__ == "__main__": asyncio.run(main())

Available Tools

Documentation Tools

  • list_docs() - List all documentation files
  • search_docs(query: str) - Search documentation for specific terms
  • update_docs(version: Optional[str], force: bool) - Update documentation
  • docs_info() - Get documentation version information

Package Recommendation Tools

  • get_package_recommendations(use_case: str) - Get package recommendations for a use case
  • get_package_info(package_name: str) - Get details about a specific package
  • get_package_categories(category: str) - List packages in a specific category
  • get_features_for_package(package: str) - Get available features for a package

Resource Access

Documentation files can be accessed as resources using:

laravel://{path}

Examples:

  • laravel://routing.md
  • laravel://authentication.md

Features and Roadmap

Current Features:

  • ✅ Dynamic documentation updates from Laravel's GitHub repository
  • ✅ Graceful shutdown handling
  • ✅ Version flexibility through command-line options
  • ✅ Package recommendations based on use cases
  • ✅ Implementation guidance for common Laravel packages
  • ✅ Docker deployment support

Planned Features:

  • Multi-version support (access documentation for multiple Laravel versions simultaneously)
  • User project analysis for tailored recommendations

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

Acknowledgements

  • Laravel for their excellent documentation
  • Laravel package authors for their contributions to the ecosystem
-
security - not tested
A
license - permissive license
-
quality - not tested

A Model Context Protocol server that provides AI assistants and language models with access to Laravel 12 documentation, allowing them to list, read, and search through documentation files.

  1. Overview
    1. Installation
      1. Quick Install via Smithery
      2. Manual Installation
    2. Usage
      1. Starting the Server
      2. Command Line Options
      3. Documentation Updater
    3. API Reference
      1. Client Example
      2. Available Tools
      3. Resource Access
    4. Features and Roadmap
      1. License
        1. Contributing
          1. Acknowledgements
            ID: rjwaqizfuh