Planer MCP Server
An intelligent task management server that generates context-aware engineering plans using LLM-powered workflows and interactive requirement elicitation. It features persistent SQLite storage, category-based planning strategies, and automated progress tracking for software development projects.
README
Planer MCP Server
An intelligent planning and task management MCP server built with FastMCP that provides sophisticated planning tools optimized for software engineering projects.
Features
- 🤖 LLM-Powered Task Generation: Uses LLM sampling to generate context-aware, high-quality task breakdowns
- 💬 Interactive Elicitation: Asks clarifying questions to ensure requirements are well-understood
- ✅ Plan Validation: Preview and confirm plans before saving, with regeneration option
- 📊 Progress Reporting: Real-time progress updates during plan creation
- 🎯 Engineering-Focused: Optimized prompts for coding, debugging, system design, and feature development
- ⏱️ Automatic Time Tracking: Track actual time via plan/task creation and completion timestamps
- 📄 Pagination: Efficient handling of large plan lists (30 plans per page)
- 🔍 Smart Filtering: Hide completed plans by default, focus on active work
- 💾 Persistent Storage: SQLite database for reliable data persistence
- 🏷️ Category-based Planning: Different planning strategies based on task categories
How It Works
When you create a new plan, the server uses an intelligent, LLM-driven workflow:
-
🧠 LLM Analyzes Requirements (10% progress)
- The LLM evaluates if there's enough information
- Determines what's missing (if anything)
- Only asks for clarification when truly needed
- Users are NOT bothered unnecessarily!
-
💬 Smart Elicitation (Conditional)
- IF LLM needs more info → Asks specific, targeted questions
- ELSE → Proceeds directly to task generation
- Example: "Build REST API" might not need questions
- Example: "Migrate system" likely needs clarification on tech stack
-
🤖 Generates Tasks with LLM (30-60% progress)
- Uses LLM sampling to create context-aware tasks
- Applies category-specific planning strategies
- Considers dependencies and priorities
- Generates detailed task descriptions
-
👀 Shows Preview & Confirms (80% progress)
- Displays the proposed plan
- You can: accept, request modifications, or cancel
-
🔁 Regenerates if Needed
- If you request changes, LLM regenerates with your feedback
- Iterative refinement until you're satisfied
-
💾 Saves to Database (95-100% progress)
- Stores the validated, high-quality plan
Tools Available
new_plan ⭐ Enhanced with Intelligent LLM-Driven Workflow
Creates a new plan with intelligent task breakdown. The LLM decides when to ask for clarification - users are only bothered when necessary!
Smart Workflow:
- LLM analyzes your request (10% progress)
- Conditionally elicits only if LLM needs more info
- Generates tasks using LLM sampling (30-60% progress)
- Shows preview and asks for confirmation (80% progress)
- Regenerates if you request modifications
- Saves validated plan (95-100% progress)
Parameters:
title: Plan title (max 200 chars)goal: Main goal or objective (max 500 chars)category: One of: project, personal, learning, business, creative, research, maintenancedescription(optional): Detailed descriptionadditional_context(optional): Additional context for better planning
Key Features:
- 🧠 Smart Elicitation: LLM decides when questions are needed
- 🎯 No Unnecessary Interruptions: Only asks when truly required
- 📊 Progress Reporting: Real-time updates (10%, 30%, 60%, 80%, 95%, 100%)
- 📝 Comprehensive Logging: Info, warning, error, debug messages
- 🤖 LLM-Powered: High-quality, context-aware task generation
- 🔁 Feedback Loop: Request modifications and regenerate
- 🛡️ Reliable: Falls back to templates if LLM fails
list_plans
List plans with pagination and filtering.
Parameters:
include_completed(optional, default: False): Include completed planspage(optional, default: 1): Page number (30 plans per page)
get_plan
Retrieve detailed information about a specific plan.
Parameters:
plan_id: ID of the plan to retrieve
update_task_status
Update the status of specific tasks within a plan.
Parameters:
plan_id: ID of the plan containing the taskstask_ids: List of task IDs to updatestatus: One of: pending, in_progress, completed, deletednotes(optional): Notes about the status change
update_plan
Update existing plan by adding new tasks or changing plan info.
Parameters:
plan_id: ID of the plan to updatetitle(optional): New titledescription(optional): New descriptionnew_tasks(optional): List of new task titles to addadditional_context(optional): Additional context for the update
delete_plan
Permanently delete a plan and all its tasks from the database.
Parameters:
plan_id: ID of the plan to delete
Installation
For Users (with uvx)
The easiest way to use Planer MCP is with uvx:
uvx planer-mcp
Or add it to your MCP configuration (e.g., in Cursor):
{
"mcpServers": {
"planer": {
"command": "uvx",
"args": ["planer-mcp"]
}
}
}
For Development
cd planer-mcp
uv venv
uv pip install -e ".[dev]"
Usage
Run with uvx (Recommended for Users)
uvx planer-mcp
Run with Python Module (Development)
uv run python -m src.planer_mcp.server
Run with main.py (Development)
python main.py
# or
uv run python main.py
Configure in Cursor
For users:
{
"mcpServers": {
"planer": {
"command": "uvx",
"args": ["planer-mcp"]
}
}
}
For development:
{
"mcpServers": {
"planer": {
"command": "uv",
"args": [
"--directory",
"C:/Projects/mcp/planer-mcp",
"run",
"python",
"-m",
"src.planer_mcp.server"
]
}
}
}
Change the --directory path to match your project location.
Development
Running Tests
make test # Run tests
make format # Format code
make lint # Lint code
make type-check # Type checking
make dev-check # Run all checks (format, type-check, test)
Publishing to PyPI
- Update version in
pyproject.toml - Update
authorsandurlsinpyproject.toml - Commit all changes and create a git tag
- Build and publish:
make build # Build package
make publish-test # Publish to TestPyPI (for testing)
make publish # Publish to PyPI
Or manually with uv:
uv build
uv publish
Architecture
src/planer_mcp/server.py- FastMCP server implementationsrc/planer_mcp/models/schemas.py- Pydantic data modelssrc/planer_mcp/database/models.py- SQLAlchemy ORM modelssrc/planer_mcp/database/manager.py- Database operations with query buildersrc/planer_mcp/planning/engine.py- Planning logicsrc/planer_mcp/planning/formatter.py- Output formattingsrc/planer_mcp/prompts/templates.py- Category-specific prompts
Categories
Project (Software Engineering)
- Requirements analysis and specification
- System architecture and design
- Database schema and data modeling
- API design and implementation
- Frontend/backend development
- Testing strategy and implementation
- CI/CD setup and deployment
- Code review and quality gates
- Performance optimization
- Documentation and security
Learning (Skill Development)
- Progressive skill building
- Hands-on coding exercises
- Real project development
- Code review practice
- Testing and debugging
- Performance optimization
- Architecture patterns
Business (Product Development)
- Market research and validation
- MVP feature definition
- Technical architecture
- Monitoring and analytics
- User feedback integration
- Iterative development
Creative (Design)
- User research and personas
- Design system and components
- Wireframing and prototyping
- Accessibility considerations
- Design-dev handoff
Research (Investigation)
- Problem statement definition
- Technology evaluation
- Proof of concept development
- Performance benchmarking
- Documentation of findings
Maintenance (Refactoring)
- Code audit and technical debt
- Dependency updates and patches
- Test coverage improvement
- Documentation updates
- Performance profiling
Example Usage
Creating a Plan (LLM-Driven, Smart Elicitation)
Example 1: Sufficient Information (No Elicitation)
User: Create plan for "Build REST API with FastAPI"
Server: [Progress 10%] Analyzing requirements...
Server: [Info] Sufficient information provided, generating task list...
Server: [Progress 30%] Generating tasks with LLM...
Server: [Progress 60%] Parsing generated tasks...
Server: [Info] Generated 12 tasks from LLM
Server: [Progress 80%] Validating plan...
[Plan Preview shows 12 detailed tasks]
Server: Does this plan look correct?
- Type 'yes' to save
- Type modifications to regenerate
- Type 'cancel' to abort
User: yes
Server: [Progress 100%] Plan created successfully!
Example 2: LLM Needs Clarification (Smart Elicitation)
User: Create plan for "Migrate legacy system to cloud"
Server: [Progress 10%] Analyzing requirements...
Server: [Info] LLM needs clarification: Critical tech stack info missing
To create an effective plan for 'Migrate legacy system to cloud', please provide:
1. What is the current technology stack?
2. Which cloud provider (AWS/Azure/GCP)?
3. What's the current deployment architecture?
4. What's the timeline/phased approach preference?
User: Currently on-premise Java monolith with MySQL. Moving to AWS.
3-month timeline, want microservices architecture.
Server: [Info] Additional context received, generating optimized task list...
Server: [Progress 30%] Generating tasks with LLM...
Server: [Info] Generated 18 tasks from LLM
...
Example 3: Request Modifications
[After plan preview]
User: Add more testing tasks and include performance benchmarks
Server: [Info] Regenerating plan with user feedback...
Server: [Info] Regenerated plan with 16 tasks
Server: [Progress 95%] Saving plan to database...
Listing Active Plans
# Only active (incomplete) plans
list_plans()
# Include completed plans
list_plans(include_completed=True)
# Pagination
list_plans(page=2)
Managing Tasks
# Mark tasks complete
update_task_status(plan_id=1, task_ids=[1, 2, 3], status="completed")
# Set tasks in progress
update_task_status(plan_id=1, task_ids=[4, 5], status="in_progress", notes="Started backend work")
Best Practices
- All
__init__.pyfiles ONLY contain imports/exports - Code is in properly named files (schemas.py, manager.py, etc.)
- SQLAlchemy query builder for all database operations
- Type hints throughout
- FastMCP for clean, modern MCP server implementation
Testing
uv run pytest tests/ -v
All 12 tests passing with 100% coverage of core functionality.
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.
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.
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
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.
E2B
Using MCP to run code via e2b.