Skip to main content
Glama
drylikov

Planner MCP Server

by drylikov
README.md



# Planner MCP Server



A Model Context Protocol server for creating and managing plans with steps. This server helps break down complex tasks into manageable steps and track their progress.



## Features



### Plans



- Create and manage plans with descriptive names and detailed descriptions
- Each plan contains ordered steps with clear completion conditions
- Track plan progress through active steps
- Plans maintain a history of completed and failed steps
- Paginated listing of plans (10 per page), ordered by creation date (newest first)
- Automatic tracking of creation dates with user-friendly formatting (e.g., "just now", "2 hours ago", "yesterday")



### Steps



- Create specific, measurable steps with clear completion conditions
- Track step status (in_progress, completed, failed)
- Automatic step progression on completion
- Ability to handle step failures with alternative approaches



## Tools



### `create_plan`



Creates a new plan with a descriptive name and description.
- **Parameters:**
  - `name`: string - Name of the plan
  - `description`: string - Detailed description of the plan and its objectives
- **Returns:** Plan details including ID, name, description, and status



### `list_plans`



Lists all available plans with their current status and active steps, ordered by creation date (newest first). Results are paginated with 10 plans per page. Returns a helpful message if no plans exist.
- **Parameters:**
  - `page`: number (optional) - Page number to retrieve (1-based, defaults to 1)
- **Returns:**
  - Array of plans with their details (or a message if no plans exist)
  - Current page number
  - Total number of pages
  - Whether there is a next page available



### `create_step`



Adds a new step to a plan. Steps should be specific, measurable actions that contribute to the plan's completion.
- **Parameters:**
  - `plan_id`: string - ID of the plan
  - `description`: string - Step description
  - `completion_condition`: string - Clear condition that must be met to consider this step complete
- **Returns:** Created step details



### `get_active_step`



Gets the current active step of a plan.
- **Parameters:**
  - `plan_id`: string - ID of the plan
- **Returns:** Active step details if exists



### `complete_step`



Marks a step as completed and automatically advances to the next step.
- **Parameters:**
  - `step_id`: string - ID of the step to complete
- **Returns:** Next step details if available



### `fail_step`



Marks the current active step as failed and creates a new alternative step.
- **Parameters:**
  - `step_id`: string - ID of the active step to mark as failed
  - `new_step_description`: string - Description of the new alternative step
  - `new_step_completion_condition`: string - Completion condition for the new alternative step
- **Returns:** Failed step ID and new step details
- **Note:** Can only fail the current active step



### `list_steps`



Lists all steps in a plan in their execution order.
- **Parameters:**
  - `plan_id`: string - ID of the plan
- **Returns:** Array of steps with their details



### `export_plan`



Exports a plan to markdown format including all steps and their status. The output will be formatted as a markdown document suitable for sharing or documentation purposes.
- **Parameters:**
  - `plan_id`: string - ID of the plan to export
- **Returns:**
  - Object containing:
    - `markdown`: string - Markdown formatted content of the exported plan
    - Includes plan details, status, and all steps with their descriptions and completion conditions
    - Steps are ordered by their execution sequence



## Database Schema



### Plans Table



- `id`: TEXT PRIMARY KEY
- `name`: TEXT NOT NULL
- `description`: TEXT NOT NULL
- `created_at`: DATETIME
- `active_step_id`: TEXT



### Steps Table



- `id`: TEXT PRIMARY KEY
- `plan_id`: TEXT NOT NULL
- `description`: TEXT NOT NULL
- `completion_condition`: TEXT NOT NULL
- `status`: TEXT (in_progress, completed, failed)
- `step_order`: INTEGER NOT NULL
- `created_at`: DATETIME
- FOREIGN KEY(plan_id) REFERENCES plans(id)



## Development



### Installation



```bash
npm install
```



### Build



```bash
npm run build
```



### Development Watch Mode
```bash
npm run watch
```



### Debugging
Use the MCP Inspector:
```bash
npm run inspector
```


## Best Practices



### Creating Plans



- Provide clear, descriptive names
- Include detailed descriptions of objectives
- Break down into multiple specific steps
- Avoid creating plans with single steps



### Creating Steps



- Make steps specific and measurable
- Define clear completion conditions
- Keep steps focused on single objectives
- Use testable completion conditions (e.g., "API endpoint returns 200 status code")



### Managing Progress



- Complete steps only when completion conditions are met
- When a step fails, provide a clear alternative approach
- Review step history to identify patterns in successes and failures



## Contribution Guidelines

1. Fork the repository
2. Create a feature branch
3. Submit a pull request
4. Include tests for new features
5. Update documentation
6. Follow existing code style