compass-mcp
Compass MCP
Local MCP that reads what you're doing and suggests which model fits — copy tweak vs UI vs nasty bug, that kind of thing.
How it runs
Each real task should pass through start_session (compact) once: cheap model by default, heavier only when the task needs it. Agents follow workspace rules to call it at work start (including Multitask / subagents — do not skip). Cursor does not auto-switch the chat dropdown or intercept every message — copy copy_task_model onto Task model=. Same task + stick_action=keep → no repeat recommend (except when work type switches to planning/architecture). If the user says a prompt-only test phrase, still call start_session or recommend_model; do not implement.
Install
git clone https://github.com/JakeLim17/compass-mcp.git
cd compass-mcp
npm run connect -- cursor
npm run connect -- claude
npm run connect -- codexPick one host line. It installs, builds, and writes your MCP config (existing config gets backed up first).
Then restart the app. On Cursor: sidebar Customize → MCPs → toggle off and on.
Not on npm — clone from GitHub. Updates: npm run sync.
One-command install (no manual clone) — for sharing with teammates
curl -fsSL https://raw.githubusercontent.com/JakeLim17/compass-mcp/main/scripts/remote-install.sh \
| bash -s -- cursor # or: claude / codexClones (or fast-forward pulls if already cloned) into ~/.compass-mcp, then runs npm run connect -- <host> — same install/update path as above, one line. Override with COMPASS_MCP_LOCAL_DIR= / COMPASS_MCP_REPO_URL= env vars. Re-running the same command later is the update path (equivalent to npm run sync + re-toggling the MCP).
Catalog maintenance: Cursor adds models often. Recheck Task slugs in src/recommend.ts / src/hosts.ts against Models & Pricing about monthly (or when the Cursor Models picker changes). Then npm run sync and toggle MCP in Customize → MCPs.
Update / deploy (for teammates)
Share these commands when someone already has compass-mcp or needs a fresh install.
Fresh install (one line, no clone)
curl -fsSL https://raw.githubusercontent.com/JakeLim17/compass-mcp/main/scripts/remote-install.sh \
| bash -s -- cursor # or: claude / codexClones (or fast-forward pulls) into ~/.compass-mcp, runs npm install + npm run build, writes MCP config. Then Customize → MCPs → compass-mcp OFF/ON (or restart Cursor).
Already cloned — update to latest
cd ~/.compass-mcp # or your clone path, e.g. ~/ChronoCode/compass-mcp
npm run syncnpm run sync does, in order:
git pull --ff-only origin main(skip if not a git repo)npm installnpm run buildnpm test(smoke)
After sync finishes, refresh MCP so Cursor loads the new build:
Cursor: Customize → MCPs → find
compass-mcp/user-compass-mcp→ toggle OFF then ONStill stale: quit Cursor fully and reopen
Agent can also call MCP tool
how_to_refresh_mcp(host:cursor)
Maintainer: ship a release to GitHub
After merging to main locally:
cd compass-mcp
git pull --ff-only origin main
npm run sync # verify green before push
git push origin main # teammates / remote-install.sh pick this upTeammates on remote-install.sh re-run the same curl one-liner to update; cloned repos use npm run sync only.
Share / propagate to a teammate
Compass MCP (this repo) pairs with cursor-engineering-governance (security/engineering rules injected into every Agent chat). To bring a new machine or teammate fully up to date, run both:
# 1) engineering-governance rules (alwaysApply rules + account-map)
curl -fsSL https://raw.githubusercontent.com/JakeLim17/cursor-engineering-governance/main/install.sh \
| bash -s -- --from-remote
# 2) compass-mcp (model routing MCP)
curl -fsSL https://raw.githubusercontent.com/JakeLim17/compass-mcp/main/scripts/remote-install.sh \
| bash -s -- cursor
# 3) reconnect the MCP in Cursor
# Customize → MCPs → toggle compass-mcp OFF then ON (or restart Cursor)Already have both cloned locally? Same idea, shorter:
cd cursor-engineering-governance && git pull --ff-only && ./install.sh --skip-accounts
cd ../compass-mcp && npm run sync
# then: Customize → MCPs → toggle compass-mcp OFF/ONSee cursor-engineering-governance/README.md §Share for the full governance-side procedure and flags.
Use it
Just say what you're doing in chat. The agent calls Compass and gets a model suggestion.
Examples:
"What model should I use for this?"
"Fix the login copy with Fable"
"Debug this flaky type-error regression"
Say a model name if you want (페이블로, use codex) — that wins over the score.
What it usually picks
You're doing… | Typical pick |
Copy, i18n, hyphen/dash punctuation, one-line fix | Composer Standard ( |
Small code patch | Same light tier — Standard over Fast |
General UI (일상) | Composer ( |
General UI (mid, Composer 부족) | Sonnet ( |
Urgent multi-file UI / layout refactor | Fable ( |
Broad UI redesign | Sonnet (Fable 아님) |
Design, planning, tradeoffs | Grok 4.6 ( |
Hard bug, CI, type errors | Sol → Terra/Codex ( |
Long codebase / code context | Kimi K2.7 ( |
Extreme / huge scope (rare) | Opus 5 ( |
Cursor catalog (Task slugs)
Speed tier (speed_tier) and effort (effort) are parsed straight from the slug string — not a hand-maintained side table — via hosts.parseSlugSpeedEffort(slug). -fast suffix → speed_tier: "fast"; otherwise "standard" (chat UI "Fast" toggle off, or a family with no fast variant). -thinking-high/-high → effort: "high", -medium → "medium", "n/a" when the family has no effort suffix (Composer, Kimi).
Slug | Role | Cost tier | Speed tier | Effort |
| Chat UI Standard (light work) | low | standard | n/a |
| Task fallback for Composer | low | fast | n/a |
| General UI / mid Claude | medium | standard | high |
| Opus 4.8 (legacy) | medium-high | standard | high |
| Extreme difficulty (rare) | medium-high | standard | high |
| Urgent multi-file UI only (exception) | medium-high | standard | high |
| Design / planning (default Grok) | medium-high | fast | high |
| Grok 4.5 legacy | medium-high | fast | high |
| Lighter bug/CI probe | medium-high | standard | medium |
| Hard bug / Terra | high | standard | medium |
| Long code context | medium | standard | n/a |
Notes:
Only Composer has a real Standard-vs-Fast pair today (
composer-2.5UI Standard vscomposer-2.5-fastTask). Every other family's catalog slug is Fast-only (Grok) or has no Fast variant at all (Sonnet/Opus/Fable/Sol/Terra/Kimi) — for those, "standard" in the table above means "not a-fastslug", not "a verified non-Fast Task option exists". Grok 4.6/4.5 Standard (non-Fast) is chat-UI-only today (turn Fast off in the picker); there is no non-Fast Task slug yet — recheck against Models & Pricing.effortreflects the reasoning-effort suffix in the slug name (Anthropic "thinking-high", GPT "medium"), not a separate universal 3-level scale Cursor exposes for every model — some families (Composer, Kimi) simply don't have one (n/a).recommend_model/start_sessionresults now include top-levelspeed_tier+effort(for the primary pick) and per-candidatespeed_tier/efforton everycandidates[]entry — see Use it output shape below."Lightest" depends on the host — Cursor's cheap slot is Composer, not Haiku. If the top pick isn't available, it falls back to the next in the list.
Limits
Does not change the chat dropdown for you — you or the agent still pick the model.
Failure mode: saying “추천 모델로 다시” without putting
must_do.task_model(copy_task_model) on Taskmodel=leaves Composer. Cursor MCP cannot auto-bind Task.task_model_required+ rules enforce the copy;verify_run_compliancecannot see the parent chat runtime.Cursor is the main target; Claude Code and Codex CLI work too.
Remote web connectors are optional (see below).
Remote HTTP (optional)
For Claude.ai / ChatGPT connectors, not day-to-day Cursor:
export COMPASS_MCP_API_KEY="$(openssl rand -hex 32)"
npm run start:http
# → http://127.0.0.1:3920/mcpTunnel that port over HTTPS and point the connector at /mcp with Authorization: Bearer <key>. Local stdio (npm run connect) is enough for most people.
License
MIT
한국어: 작업 문장 보고 모델 추천하는 로컬 MCP (v0.9.10+). 우선순위: Composer → Grok → Sonnet · Fable 지양(토큰 큼, 긴급 멀티파일 UI·레이아웃 리팩터만 예외). npm run connect -- cursor|claude|codex 한 줄 설치, 또는 클론 없이 curl -fsSL .../scripts/remote-install.sh | bash -s -- cursor. 업데이트: 클론 경로에서 npm run sync → Customize → MCPs OFF/ON. 간단 문자·카피·하이픈/구두점·i18n은 Composer 2.5 Standard(Fast 아님) — Task slug는 composer-2.5-fast fallback. copy_task_model을 Task model=에 복사해야 함(말만 switch=위반). v0.9.10: Cursor pool 우선 정책(Composer 기본, Grok 설계·기획, mid UI Sonnet, Fable 강감점) + README §Update/deploy. 팀 전파: docs/SHARE.md(governance) 또는 이 README §Share.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JakeLim17/compass-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server