MCP servers¶
The steer plugin ships an .mcp.json (source: plugins/steer/.mcp.json)
that wires local Claude Code sessions to a small set of
Model Context Protocol servers. Because they
ship with the plugin rather than the scaffold, every repo that enables steer
picks them up centrally and they refresh on /plugin update — there is no
per-repo .mcp.json to scaffold, drift, or reconcile. Each server still goes
through Claude Code's per-server approval the first time it connects, and a repo
may add its own project .mcp.json for product-specific servers (it merges
additively with the plugin's). This page is kept in sync with the plugin's
.mcp.json and the scaffold README.md by /plugin-docs; the nav/orphan check
in scripts/validate_docs.py guards that it stays linked, but its
server-by-server content is reconciled by hand against the source of truth.
Local sessions only — not CI
The plugin's .mcp.json configures the Claude Code you run on your
machine. GitHub Actions does not read it — the in-CI agent loads steer
and its tools through the action's inputs instead (see
GitHub Actions integration). Interactively
authenticated MCP servers may also be absent in headless/cron runs (see
Known limitations).
Claude Cowork doesn't use this file — MCP config isn't shared across surfaces
This .mcp.json is read by the Claude Code CLI / Code tab, not by the
Cowork or Chat tabs, which wire MCP through their own Connectors.
On Cowork the ${GITHUB_PAT} github server can't authenticate (no shell to
export the PAT into) and the local-process markitdown server can't run (no
installs in the sandbox) — so for GitHub work in Cowork, enable the built-in
GitHub connector instead. See
Known limitations → Claude Cowork's sandbox.
Servers¶
| Server | Transport | Auth | Purpose |
|---|---|---|---|
github |
HTTP (api.githubcopilot.com/mcp/) |
${GITHUB_PAT} (your shell) |
Read issues, comment on PRs, inspect workflow runs. |
markitdown |
local process (uvx markitdown-mcp) |
none | Convert provided Office documents to Markdown. |
context7 |
HTTP (mcp.context7.com/mcp) |
none (optional CONTEXT7_API_KEY) |
Pull up-to-date, version-accurate library/API documentation on demand. |
github¶
Wires the session to GitHub's hosted MCP server so tracker reads/writes can go
through MCP rather than shelling out. It is the preferred path for
/steer:tracker-sync, which falls back to the gh CLI and then a
manual floor when no MCP tracker tool is present.
The config references ${GITHUB_PAT}; the token never lives in the repo —
you export a fine-grained PAT from your shell. Full setup (required scopes, shell
export, secret-manager option) is in the scaffold README.md → "GitHub MCP
server", reachable from any bootstrapped repo.
Never commit the token
Don't put the PAT in a repo file (even a gitignored one) or paste it into a Claude message.
markitdown¶
Wires the session to Microsoft's
markitdown MCP server
(packages/markitdown-mcp), which converts binary Office documents — .docx,
.xlsx, .pptx, plus HTML/EPUB/CSV and more — into clean Markdown. Reach for it
when a stakeholder hands over source material in those formats, so Claude reads it
cheaply instead of choking on raw zip+XML.
PDFs and images don't need it
Claude's native Read tool already handles PDFs (it renders pages visually)
and images. Use markitdown for the Office binaries specifically.
It runs via uvx markitdown-mcp, so it needs uv (and a Python for uv to
manage) on PATH — no token. The scaffold mise.toml pins node, python,
and uv as an always-installed agent-runtime baseline (AI tooling and MCP
servers run packages on demand via npx/uvx), so
mise install makes this work out of the box regardless of product stack. First
use auto-fetches the package from PyPI.
Local, trusted use only
markitdown-mcp is meant for local use — don't expose it over HTTP/SSE.
context7¶
Wires the session to Context7's hosted MCP server, which returns up-to-date, version-accurate documentation for thousands of libraries and frameworks on demand. Reach for it when you're working against a fast-moving dependency and want the current API surface rather than what training data remembers — it pulls the docs for the exact version in play instead of guessing.
Like github, it's an HTTP server (https://mcp.context7.com/mcp), so there
is no local process, package fetch, or runtime dependency — nothing to install
and nothing on PATH to break. It connects with no token: the anonymous free
tier works out of the box.
Optional API key for higher rate limits
A CONTEXT7_API_KEY is optional — it only raises rate limits. If you hit
them, get a key from context7.com, export it from your
shell, and add it via your own project .mcp.json (which merges additively
with the plugin's) as an Authorization header — don't edit the
plugin-managed .mcp.json, which refreshes on /plugin update.
Hosted service — queries leave your machine
Like the github server, context7 is a third-party hosted service: the
library names and queries you send go to context7's API. Don't send anything
sensitive through it.
Verifying¶
Restart Claude Code in the repo and run /mcp. Each configured server should
report connected. A server that shows disconnected means its prerequisite is
missing — a GITHUB_PAT not exported (for github), or uv/python removed
from mise.toml (for markitdown). Nothing breaks when a server is
disconnected; only that server's tools are unavailable.