Laravel MCP Server
A project and task manager MCP server built with Laravel, enabling AI to manage projects and tasks through tools, resources, and prompts.
README
Project Manager — Laravel MCP Server
A small project & task manager exposed as a Model Context Protocol
(MCP) server, built with laravel/mcp. It is a learning-oriented
reference that exercises every core MCP primitive — Tools, Resources, and Prompts —
over a deliberately simple domain (projects that contain tasks).
An MCP client (Claude Desktop, Cursor, Claude Code, or the built-in inspector) connects to the server over stdio and lets an AI create and track tasks, pull read-only context, and run reusable prompt templates.
Domain
- Project —
name,description, and many tasks. - Task — belongs to a project; has a
title,description,due_date, astatus(pending,in_progress,done) and apriority(low,medium,high,critical). A task is overdue when its due date has passed and it is not yet done.
Priorities carry a numeric weight (low = 1 … critical = 4) used to sort reports and triage
overdue work.
Project structure
app/
├── Enums/ TaskStatus, TaskPriority (with label() / weight() helpers)
├── Models/ Project, Task
├── Mcp/
│ ├── Servers/ ProjectManagerServer — registers all primitives
│ ├── Tools/ The 5 callable actions
│ ├── Resources/ The 5 read-only resources
│ └── Prompts/ The 4 prompt templates
└── Support/ ReportBuilder — shared report aggregation
MCP primitives
🔧 Tools — actions the AI can invoke
| Tool | Description |
|---|---|
create-task-tool |
Create a task under a project (title, description, priority, due date). |
list-tasks-tool |
List tasks with optional filters: project, status, priority, overdue. |
update-task-status-tool |
Move a task to a new status and report the before → after change. |
delete-task-tool |
Delete a task by id. |
generate-report-tool |
Aggregate tasks into a portfolio report as Markdown or JSON. |
📚 Resources — read-only context addressed by URI
| Resource | URI | Description |
|---|---|---|
| System documentation | documentation |
Onboarding overview of the server and its entities. |
| Priority rules | priority-rules |
The priority levels, their weights, and when to use each. |
| Task details | task://tasks/{task_id} |
Full detail for a single task (templated). |
| Project summary | project://projects/{project_id} |
Task counts by status, overdue count, next due (templated). |
| Report | report://reports/{format} |
Whole-portfolio report in json or markdown (templated). |
The report tool and the report resource share a single ReportBuilder
so their numbers can never drift apart.
💬 Prompts — reusable, argument-driven templates
| Prompt | Arguments | Description |
|---|---|---|
plan-project-prompt |
goal (required), deadline |
Break a goal into a project plus milestone tasks. |
decompose-task-prompt |
task_id (required) |
Split one real task into concrete subtasks. |
review-overdue-tasks-prompt |
project_id |
Triage and re-prioritize overdue tasks. |
daily-summary-prompt |
project_id |
Produce a stand-up style daily summary. |
Getting started
composer install
php artisan migrate
# Seed at least one project so tasks have somewhere to live:
php artisan tinker --execute "App\Models\Project::factory()->create(['name' => 'Website Redesign']);"
The server is registered in routes/ai.php and exposed over stdio:
Mcp::local('project-manager', ProjectManagerServer::class);
Running & testing the server
# Interactive debugging — drive tools, resources and prompts by hand:
php artisan mcp:inspector project-manager
# Run the server over stdio (this is the command MCP clients launch;
# on its own it will appear to hang, waiting for JSON-RPC on stdin):
php artisan mcp:start project-manager
Connecting from an AI client
Claude Code
claude mcp add project-manager -- php "<full-path>/artisan" mcp:start project-manager
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"project-manager": {
"command": "php",
"args": ["<full-path>/artisan", "mcp:start", "project-manager"]
}
}
}
Passing the full path to artisan lets Laravel resolve the project root regardless of the
client's working directory.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.