Skip to main content

Model Context Protocol (MCP) server for accessing and searching Laravel 12 documentation. Enables AI assistants and tools to query Laravel docs through a standardized interface.

Project description

Laravel Docs MCP Server

GitHub release (latest by date) PyPI Python Version GitHub Workflow Status License Docker Image smithery badge GitHub Stars GitHub Forks

⚠️ Alpha Software - This project is in early development. Features may not work as expected and breaking changes may occur without notice.

An AI assistant for Laravel developers that provides access to the latest Laravel documentation and intelligent package recommendations through the Model Context Protocol (MCP). This enables AI tools to help you build Laravel applications with up-to-date information and best practices.

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

Install from PyPI

pip install laravel-docs-mcp

Docker

# Pull and run the latest version
docker run -p 8000:8000 ghcr.io/brianirish/laravel-docs-mcp:latest

# Or run a specific version
docker run -p 8000:8000 ghcr.io/brianirish/laravel-docs-mcp:v0.1.4

Manual Installation from Source

Prerequisites

  • Python 3.12+
  • uv package manager (recommended)

Steps

  1. Clone the repository:

    git clone https://github.com/brianirish/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

Option Description
--docs-path PATH Documentation directory path (default: ./docs)
--server-name NAME Server name (default: LaravelDocs)
--log-level LEVEL Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL (default: INFO)
--transport TYPE Transport method: stdio, websocket, sse (default: stdio)
--host HOST Host to bind to (network transport)
--port PORT Port to listen on (network transport)
--version VERSION Laravel version branch (default: latest available)
--update-docs Update documentation before starting
--force-update Force 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 for latest version
python docs_updater.py --target-dir ./docs

# Update specific version
python docs_updater.py --target-dir ./docs --version 11.x

# Update all supported versions
python docs_updater.py --all-versions

# 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_laravel_docs(version: Optional[str]) - List documentation files (all versions or specific version)
  • search_laravel_docs(query: str, version: Optional[str]) - Search documentation for specific terms
  • update_laravel_docs(version: Optional[str], force: bool) - Update documentation
  • laravel_docs_info(version: Optional[str]) - Get documentation version information

Package Recommendation Tools

  • get_laravel_package_recommendations(use_case: str) - Get package recommendations for a use case
  • get_laravel_package_info(package_name: str) - Get details about a specific package
  • get_laravel_package_categories(category: str) - List packages in a specific category
  • get_features_for_laravel_package(package: str) - Get available features for a package

Resource Access

Documentation files can be accessed as resources using:

laravel://{path}
laravel://{version}/{path}

Examples:

  • laravel://routing.md (uses latest version)
  • laravel://11.x/authentication.md (specific version)
  • laravel://12.x/blade.md

Automated Workflows

This project includes several automated GitHub Actions workflows:

Daily Documentation Updates

  • Trigger: Every day at midnight UTC (can also be triggered manually)
  • Process: Checks for Laravel documentation updates → Creates PR → Auto-merges → Creates patch version tag
  • Result: Automatic patch releases when Laravel docs are updated

Release Publishing

  • Trigger: When version tags are pushed (e.g., v0.1.4)
  • Process: Builds packages → Publishes to PyPI → Builds and pushes Docker images to GHCR
  • Result: Synchronized releases across PyPI and Docker Hub

Dynamic Versioning

  • Version Source: Automatically derived from git tags using hatch-vcs
  • Development Builds: Get unique identifiers (e.g., 0.1.3.dev1+g75aec71)
  • Release Builds: Clean version numbers matching tags (e.g., 0.1.4)

Features and Roadmap

Current Features:

  • Multi-Version Support: Access documentation for Laravel 6.x through latest version simultaneously
  • Future-Proof Version Detection: Automatically detects and supports new Laravel releases (13.x, 14.x, etc.)
  • Daily Documentation Updates: Automatically syncs with Laravel's GitHub repository every day
  • Dynamic Versioning: Automatic version management based on git tags
  • Automated Releases: Patch releases triggered by documentation updates
  • Multiple Deployment Options: PyPI package, Docker images, and Smithery marketplace
  • Package Recommendations: Intelligent suggestions based on specific use cases
  • Implementation Guidance: Detailed information for common Laravel packages
  • Flexible Configuration: Support for multiple Laravel versions and transport methods
  • Graceful Shutdown: Proper cleanup and signal handling

Planned Features:

  • 🔍 User project analysis for tailored recommendations
  • 🚀 Enhanced search capabilities with semantic matching
  • 📊 Usage analytics and insights
  • 🔗 Additional Laravel ecosystem integrations

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

laravel_docs_mcp-0.1.8.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

laravel_docs_mcp-0.1.8-py3-none-any.whl (4.4 MB view details)

Uploaded Python 3

File details

Details for the file laravel_docs_mcp-0.1.8.tar.gz.

File metadata

  • Download URL: laravel_docs_mcp-0.1.8.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for laravel_docs_mcp-0.1.8.tar.gz
Algorithm Hash digest
SHA256 3f395cb09593c9f8af54433b57fe70dd450531ea84d0afa8305b33ce51f69316
MD5 18ef2b5b9bfc4ed7f31bf742b6e1fcdd
BLAKE2b-256 a05ab11b62ec208465cf1f206ed4e2610cb88280ef1dbe904ba3780ed32fe1e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for laravel_docs_mcp-0.1.8.tar.gz:

Publisher: release.yaml on brianirish/laravel-docs-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file laravel_docs_mcp-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for laravel_docs_mcp-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 a38a9bc3c6d8c84f9e5a5a9b8c90d103a2d485ef23c40e6b284d4069b888ec1c
MD5 e672c700dad72da9736c74fd9c0b29be
BLAKE2b-256 a0c6c2f98e54a04f57c752cbca0ee81a62f9cc113c25ae5109075cee23f15667

See more details on using hashes here.

Provenance

The following attestation bundles were made for laravel_docs_mcp-0.1.8-py3-none-any.whl:

Publisher: release.yaml on brianirish/laravel-docs-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page