Skip to main content
Glama

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 -- codex

Pick 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 / codex

Clones (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 / codex

Clones (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 sync

npm run sync does, in order:

  1. git pull --ff-only origin main (skip if not a git repo)

  2. npm install

  3. npm run build

  4. npm 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 ON

  • Still 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 up

Teammates 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/ON

See 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 (composer-2.5 UI; Task composer-2.5-fast)

Small code patch

Same light tier — Standard over Fast

General UI (일상)

Composer (composer-2.5-fast) — Cursor pool

General UI (mid, Composer 부족)

Sonnet (claude-sonnet-5-thinking-high)

Urgent multi-file UI / layout refactor

Fable (claude-fable-5-thinking-high) — 예외만 (토큰 큼)

Broad UI redesign

Sonnet (Fable 아님)

Design, planning, tradeoffs

Grok 4.6 (cursor-grok-4.6-high-fast) — Cursor pool, don’t under-use

Hard bug, CI, type errors

Sol → Terra/Codex (gpt-5.6-sol-mediumgpt-5.6-terra-medium)

Long codebase / code context

Kimi K2.7 (kimi-k2.7-code)

Extreme / huge scope (rare)

Opus 5 (claude-opus-5-thinking-high)

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/-higheffort: "high", -medium"medium", "n/a" when the family has no effort suffix (Composer, Kimi).

Slug

Role

Cost tier

Speed tier

Effort

composer-2.5

Chat UI Standard (light work)

low

standard

n/a

composer-2.5-fast

Task fallback for Composer

low

fast

n/a

claude-sonnet-5-thinking-high

General UI / mid Claude

medium

standard

high

claude-opus-4-8-thinking-high

Opus 4.8 (legacy)

medium-high

standard

high

claude-opus-5-thinking-high

Extreme difficulty (rare)

medium-high

standard

high

claude-fable-5-thinking-high

Urgent multi-file UI only (exception)

medium-high

standard

high

cursor-grok-4.6-high-fast

Design / planning (default Grok)

medium-high

fast

high

cursor-grok-4.5-high-fast

Grok 4.5 legacy

medium-high

fast

high

gpt-5.6-sol-medium

Lighter bug/CI probe

medium-high

standard

medium

gpt-5.6-terra-medium

Hard bug / Terra

high

standard

medium

kimi-k2.7-code

Long code context

medium

standard

n/a

Notes:

  • Only Composer has a real Standard-vs-Fast pair today (composer-2.5 UI Standard vs composer-2.5-fast Task). 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 -fast slug", 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.

  • effort reflects 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_session results now include top-level speed_tier + effort (for the primary pick) and per-candidate speed_tier/effort on every candidates[] 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 Task model= leaves Composer. Cursor MCP cannot auto-bind Task. task_model_required + rules enforce the copy; verify_run_compliance cannot 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/mcp

Tunnel 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

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