MCP server for intelligent planning and task management
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file planer_mcp-0.1.0.tar.gz.
File metadata
- Download URL: planer_mcp-0.1.0.tar.gz
- Upload date:
- Size: 116.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a76b43bdacca176723af36df164f74d68f10c0d072c9983082d10504611f600c
|
|
| MD5 |
aa4299c6ae86fb03b6dea1ba9f85c174
|
|
| BLAKE2b-256 |
3e08f36e57e66b617cce3f8a53e7db0a775b318b327f64e2be115a1777f8acf6
|
File details
Details for the file planer_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: planer_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26709884b69f010db734a30707af28bf429a62ff495415d4f9e2e93682249522
|
|
| MD5 |
531f9805dcb87e7d89469a89487d2e78
|
|
| BLAKE2b-256 |
de288ecbd5efa20341751380840a3d000dfe42ff9b0ccb1392ad40ddc0b70eec
|