mc — project management for developers and AI agents
Manage tasks, meetings, research, contacts, and sprints with plain Markdown files. No database, no server, no account — just files in your repo that you can git diff, review in PRs, and edit with any tool. Works from your terminal and from AI editors via MCP.
Quickstart
&&
That's it. You now have a .mc/ folder with task tracking in your project.
Why mc?
- Plain Markdown + YAML frontmatter —
git diffyour project management - No database, no server, no account — just files in your repo
- Built for AI agents — full MCP server, one command to connect
- Embedded mode —
.mc/folder lives alongside your code - Kanban board, sprint planning, meeting notes, research tracking, contact management — all from the terminal
Two Ways to Use It
Embedded Mode (recommended for most projects)
Add mc to an existing project. Creates a .mc/ folder for tasks, meetings, research, sprints, and proposals (no customers, projects, or contacts).
my-project/
├── .mc/
│ ├── config.yml
│ ├── tasks/
│ ├── meetings/
│ ├── research/
│ ├── sprints/
│ └── proposals/
└── (your code)
Standalone Mode (for portfolios and CRM)
Create a dedicated repository for managing customers, projects, and all related work.
my-company/
├── config/config.yml
├── customers/
├── projects/
├── meetings/
├── research/
├── tasks/
├── sprints/
└── proposals/
Standalone mode adds customers, contacts, and projects — useful for agencies, freelancers, or anyone managing multiple clients.
What You Can Track
| Entity | Description | Example |
|---|---|---|
| Tasks | Work items with priority, status, dependencies | mc new task "Fix auth bug" --priority 1 |
| Sprints | Time-boxed iterations | mc new sprint "2026-W06" --goal "Auth module" |
| Meetings | Notes with date, attendees, PDF export | mc new meeting "Sprint Review" --date 2026-02-10 |
| Research | Multi-agent research topics, PDF export | mc new research "LLM Benchmarks" --agents claude,gemini |
| Customers | Client profiles (standalone only) | mc new customer "Acme Corp" |
| Contacts | Per-customer contacts (standalone only) | mc new contact "Alice Smith" --customer CUST-001 |
| Projects | Project containers (standalone only) | mc new project "Robot Arm" --customers CUST-001 |
| Proposals | Decision records (BIP/ADR-style) | mc new proposal "Migrate to Postgres" |
Task Management
Tasks are first-class citizens with a full kanban workflow.
Kanban Board
┌─────────────────────────────────────────────────────────────────────┐
│ backlog todo in-progress done │
├─────────────────────────────────────────────────────────────────────┤
│ TASK-003 [P3] TASK-002 [P2] TASK-001 [P1] │
│ Write tests Update docs Fix auth bug │
└─────────────────────────────────────────────────────────────────────┘
Move Tasks
Next Task
Get the highest-priority unblocked task:
Filtering
Dependencies
Tasks can depend on other tasks:
Blocked tasks are hidden from mc task next until their dependencies are done.
AI Agent Integration (MCP)
Connect your AI editor to mc with one command:
Claude Code:
Cursor, Windsurf, Claude Desktop (add to your MCP config):
VS Code (.vscode/mcp.json):
Now your AI assistant can create tasks, move them through the board, query status, create meetings, and more.
Available MCP Tools
All tools return JSON with documented fields. Parameter descriptions include valid values, defaults, and examples — AI agents can discover the full API from the tool schema alone.
| Tool | Description |
|---|---|
get_status |
Status overview with per-entity counts and recent activity |
list_entities |
List entities by kind with optional status/tag filters |
list_tasks |
List tasks with rich filtering (status, project, customer, priority, sprint, owner, tag) |
get_entity |
Get entity detail with frontmatter fields and body preview |
read_entity_file |
Read full markdown content (YAML frontmatter + body) |
create_task |
Create a task (with priority, sprint, dependencies, scoping) |
create_sprint |
Create a sprint |
create_meeting |
Create a meeting |
create_research |
Create a research topic |
create_customer |
Create a customer (standalone only) |
create_project |
Create a project (standalone only) |
create_contact |
Create a contact under a customer (standalone only) |
create_proposal |
Create a proposal / decision record (standalone only) |
move_task |
Move a task to a new status, optionally assign a sprint |
print_meeting |
Export meeting to PDF |
print_research |
Export research to PDF |
print_file |
Generate branded PDF from any markdown file |
validate_repo |
Validate repo structure and frontmatter |
build_index |
Rebuild JSON index files for the web dashboard |
MCP Resources
Resources provide read-only data snapshots. Start with mc://config to discover valid status values and ID prefixes.
| Resource | Description |
|---|---|
mc://config |
Valid status values, ID prefixes, and directory paths |
mc://entities/customers |
All customers (standalone only) |
mc://entities/contacts |
All contacts |
mc://entities/projects |
All projects (standalone only) |
mc://entities/meetings |
All meetings |
mc://entities/research |
All research topics |
mc://entities/tasks |
All tasks (unfiltered — use list_tasks tool for filtering) |
mc://entities/sprints |
All sprints |
mc://entities/proposals |
All proposals |
Web Dashboard
Browse all your data in a local web UI:
# Open http://localhost:5000
Installation
From crates.io
Prebuilt Binaries
Download from GitHub Releases:
| Platform | Archive |
|---|---|
| macOS (Apple Silicon) | mc-macos-arm64.tar.gz |
| macOS (Intel) | mc-macos-amd64.tar.gz |
| Linux (x86_64) | mc-linux-amd64.tar.gz |
| Linux (arm64) | mc-linux-arm64.tar.gz |
Build from Source
# Binary is at target/release/mc
Configuration
Config lives at .mc/config.yml (embedded) or config/config.yml (standalone). It controls:
- Directory paths for each entity type
- ID prefixes (
CUST,CONT,PROJ,MTG,RES,TASK,SPR,PROP) - Allowed status values per entity type
The defaults work out of the box. Edit the config when you want to customize status workflows or add new prefixes.
CLI Reference
| Command | Description |
|---|---|
mc init |
Initialize a new repo (use --embedded for existing projects) |
mc new <type> "name" |
Create a new entity |
mc list <type> |
List entities with optional filters |
mc show <ID> |
Display entity details |
mc task board |
Kanban board view |
mc task move <ID> <status> |
Change task status |
mc task next |
Show next actionable task |
mc validate |
Check repo structure and frontmatter |
mc status |
Dashboard with counts and recent activity |
mc print meeting <ID> |
Export meeting to PDF |
mc print research <ID> |
Export research to PDF |
mc print file <path> |
Generate branded PDF from any markdown file |
mc serve |
Start web dashboard |
mc mcp |
Start MCP server |
Use mc <command> --help for detailed options.
Contributing
CI runs on every push and PR:
cargo fmt --checkcargo clippy -- -D warningscargo testcargo build --release
See CLAUDE.md for architecture details and build commands.
License
MIT