mc -- MissionControl CLI
A command-line tool for managing git-based knowledge repositories. Scaffolds new entities, validates repo structure, builds JSON indexes, exports archives, and serves a local dashboard.
Installation
From crates.io
Prebuilt binaries
Download the latest release for your platform from the GitHub Releases page:
| 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 |
Extract and place mc somewhere on your PATH:
Build from source
Or clone and build locally:
# Binary is at target/release/mc
Usage
mc [--root <PATH>] [-y|--yes] <COMMAND>
| Flag | Description |
|---|---|
--root <PATH> |
Path to repo root (auto-detected if omitted) |
-y, --yes |
Skip interactive prompts and use defaults |
Commands
| Command | Description |
|---|---|
mc new <type> "<name>" |
Scaffold a new entity from template |
mc list <type> |
List entities with optional --status / --tag filters |
mc list tasks |
List tasks with --project, --customer, --priority, --sprint, --owner filters |
mc show <ID> |
Display entity details |
mc validate |
Check naming conventions, frontmatter, and repo structure |
mc index |
Rebuild JSON indexes in data/ |
mc export customer <ID> |
Export a customer folder to ZIP |
mc status |
Repo overview with status counts |
mc serve [--port PORT] |
Local web dashboard (default port: 5000) |
mc mcp |
Start MCP server over stdio |
mc new
Creates directories, files, and YAML frontmatter from templates. IDs are assigned automatically.
mc validate
Checks all entities for:
- Folder/file naming conventions
- Frontmatter presence and YAML validity
- Required fields (
id,name/title,status) - ID prefix correctness
- Status values against
config/config.yml
Exits with code 1 if any issues are found.
Configuration
The CLI reads config/config.yml from the repo root. This file defines directory paths, ID prefixes (CUST, PROJ, MTG, RES, TASK), and allowed status values per entity type.
MCP Server Integration
The mc mcp command exposes all CLI functionality as MCP tools and resources, allowing AI assistants to interact with MissionControl directly.
Editor setup
--rootis a global flag and must come before themcpsubcommand.
If mc is installed via cargo install mc (or a prebuilt binary on your PATH), use mc as the command. Otherwise replace with the full path to the binary.
Claude Code:
Cursor (.cursor/mcp.json), Windsurf (~/.codeium/windsurf/mcp_config.json), Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
VS Code (.vscode/mcp.json):
Available MCP tools
| Tool | Description |
|---|---|
list_entities |
List entities by kind with optional filters |
get_entity |
Get detailed info about an entity |
read_entity_file |
Read full markdown content |
create_customer |
Create a new customer |
create_project |
Create a new project |
create_meeting |
Create a new meeting |
create_research |
Create a new research topic |
create_task |
Create a new task |
move_task |
Move a task to a new status |
list_tasks |
List tasks with rich filtering |
print_meeting |
Export a meeting to PDF |
print_research |
Export a research topic to PDF |
validate_repo |
Check repo structure and frontmatter |
build_index |
Rebuild JSON index files |
get_status |
Status overview with counts and recent activity |
Available MCP resources
| URI | Description |
|---|---|
mc://config |
Repository configuration |
mc://entities/customers |
All customers |
mc://entities/projects |
All projects |
mc://entities/meetings |
All meetings |
mc://entities/research |
All research topics |
mc://entities/tasks |
All tasks |
CI/CD
Continuous integration
Every push to main and every pull request runs:
cargo fmt --checkcargo clippy -- -D warningscargo testcargo build --release
Releasing a new version
Releases are fully automated. When you push a version tag, the pipeline builds platform binaries, creates a GitHub Release, and publishes to crates.io.
- Bump the version in
Cargo.toml - Commit and push:
- Tag and push:
| Job | What it does |
|---|---|
| build | Cross-compiles binaries for Linux and macOS (amd64 + arm64) |
| release | Attaches .tar.gz archives to a GitHub Release |
| publish | Publishes the crate to crates.io |
One-time setup: Add your crates.io API token as the GitHub secret CARGO_REGISTRY_TOKEN in repo Settings > Secrets and variables > Actions.
License
MIT