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.
cargo install mc
cd my-project && mc init --embedded
mc -y new task "Ship the feature" --priority 2
mc task boardThat's it. You now have a .mc/ folder with task tracking in your project.
- 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
Add mc to an existing project. Creates a .mc/ folder for tasks, meetings, research, sprints, and proposals (no customers, projects, or contacts).
cd my-project
mc init --embeddedmy-project/
├── .mc/
│ ├── config.yml
│ ├── tasks/
│ ├── meetings/
│ ├── research/
│ ├── sprints/
│ └── proposals/
└── (your code)
Create a dedicated repository for managing customers, projects, and all related work.
mc init --name "My Company"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.
| 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" |
Tasks are first-class citizens with a full kanban workflow.
mc task board┌─────────────────────────────────────────────────────────────────────┐
│ backlog todo in-progress done │
├─────────────────────────────────────────────────────────────────────┤
│ TASK-003 [P3] TASK-002 [P2] TASK-001 [P1] │
│ Write tests Update docs Fix auth bug │
└─────────────────────────────────────────────────────────────────────┘
mc task move TASK-001 in-progress
mc task move TASK-001 doneGet the highest-priority unblocked task:
mc task nextmc list tasks --status in-progress --priority 1
mc list tasks --sprint 2026-W06 --owner alice
mc task board --project PROJ-001Tasks can depend on other tasks:
mc new task "Deploy to prod" --depends-on TASK-001,TASK-002Blocked tasks are hidden from mc task next until their dependencies are done.
Connect your AI editor to mc with one command:
Claude Code:
claude mcp add mc -- mc mcpCursor, Windsurf, Claude Desktop (add to your MCP config):
{
"mcpServers": {
"mc": {
"command": "mc",
"args": ["mcp"]
}
}
}VS Code (.vscode/mcp.json):
{
"servers": {
"mc": {
"type": "stdio",
"command": "mc",
"args": ["mcp"]
}
}
}Now your AI assistant can create tasks, move them through the board, query status, create meetings, and more.
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 |
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 |
Browse all your data in a local web UI:
mc serve
# Open http://localhost:5000For non-LLM clients (custom UIs, mobile apps, CI bots, multi-tenant gateways), mc api serve exposes the same surface as MCP over HTTP/JSON with bearer auth and an OpenAPI 3.1 spec.
mc api hash-token "your-secret" > hash.txt
cat > tokens.yml <<EOF
tokens:
- name: deploy-bot
hash: "$(cat hash.txt)"
capabilities: [read, write]
EOF
mc api serve --tokens-file tokens.yml --port 5100curl -H "Authorization: Bearer your-secret" http://127.0.0.1:5100/v1/tasksSee docs/api.md for the full reference (endpoints, auth, error model, multi-tenant gateway pattern) and docs/examples/curl-cookbook.md for copy-paste recipes. The live spec is at /v1/openapi.json.
cargo install mcDownload 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 |
tar xzf mc-<platform>.tar.gz
sudo mv mc /usr/local/bin/git clone https://github.com/RaaSaaR-org/mission-control.git
cd mission-control
cargo build --release
# Binary is at target/release/mcConfig 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.
| 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 index |
Rebuild JSON index files (data/*.json) |
mc export <type> <ID> |
Export entity to a zip archive |
mc serve |
Start web dashboard |
mc mcp |
Start MCP server |
Use mc <command> --help for detailed options.
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.
MIT