MCP, but without the MCP.
Context7, Superpowers, GitHub, Stripe… — none loaded until you actually need them.
MCP is the GUI for AI agents. Teleport replaces it with credentials in env vars, disabled MCPs (reversible), and small skills loaded on demand. Smaller baseline context per turn, and the agent composes calls instead of swallowing whatever the MCP tool returns.
Want teleport to support an MCP? Thumbs-up (or add it) on the MCP Request Board.
Want to submit your own MCP? Increase adoption — users discover and use it while coding. See CONTRIBUTING.md.
MCP tool definitions get loaded into every turn. In a multi-server setup, that's tens of thousands of tokens paid upfront — every turn, for schemas the agent may not use. Bigger context windows raise the ceiling, but they don't change the per-turn cost, cache invalidation, or the "process everything the tool returns" problem.
Teleport-loaded skills cost ~400–800 tokens each, only when the agent needs them.
…reuse MCP since it already standardizes integration? MCP solves "one integration, many clients". Teleport solves "keep the baseline context small when I'm only using one or two services per turn". Different problems. If you don't feel the per-turn baseline cost, MCP is fine.
…lazy-load MCPs instead? Claude Code's tool-search MCP does that. Teleport goes a step further — the MCP server is off entirely, loaded only when the skill fires.
…handle OAuth like MCP does? For API-key auth it's just an env var. For OAuth-based MCPs (Notion HTTP, Figma hosted, Atlassian Rovo) there's no OAuth bypass — the user generates a PAT from the service dashboard and teleport stores that. MCP's OAuth handling is genuinely nicer there.
curl -sL https://raw.githubusercontent.com/mnlt/teleport/main/setup/install.sh -o /tmp/teleport-install.sh && bash /tmp/teleport-install.shInstalls the teleport-setup CLI into ~/.local/bin and the teleport meta-skill into ~/.claude/skills/teleport/.
teleport-setupScans your installed MCPs, auto-migrates the ones whose credentials are already in the MCP's env block (copies them to ~/.claude/settings.local.json and adds the MCP to disabledMcpServers[]), and walks you through the rest. Then restart Claude Code (/exit, then claude) and ask naturally — the agent calls the service's REST API directly via the matching skill.
Need a credential later?
teleport-setup add-key <service>Opens the signup page, validates the format, saves it with masked input.
Teleport can activate on its own, but if you want to be sure, drop "use teleport" in your prompt
How do I set up Next.js 15 app with Auth.js ... use teleportNot every MCP stores its credential somewhere teleport can read. Both paths end up the same place: env var in settings.local.json, MCP disabled, skill hits REST API directly.
| Path | When it applies | What teleport does | User effort |
|---|---|---|---|
| One-click migration | Credential already in the MCP's env block in ~/.claude.json — most self-hosted stdio MCPs (GitHub, Slack, Stripe, Supabase, Linear, etc. installed with --env) |
Copies the credential to settings.local.json, disables the MCP |
Zero typing |
| Generate-and-paste | Hosted / OAuth-based MCPs (Notion HTTP, Figma hosted, Atlassian Rovo) where the token lives in a Claude Code cache teleport can't access | Opens the signup page, you generate an API token, paste it (masked input) | One extra step, handled inline |
21 MCP-wrapper skills — credential check, imperative "run teleport-setup add-key" guidance, and curl recipes for the common operations:
Context7 · GitHub · Slack · Notion · Linear · Figma · Jira · Exa · Stripe · Supabase · Vercel · Netlify · Cloudflare · Railway · Resend · Sentry · PostHog · Lemon Squeezy · Discord · Wellread · n8n
- Read
~/.claude.json→ find installed MCPs and any credentials in theirenvblocks. - For each MCP matched in
mcp-knowledge.json, copy the credential to~/.claude/settings.local.jsonunderenv. - Add the MCP name to
disabledMcpServers[]in the same config — the server stops loading, its tool schemas disappear from the agent's context. - When you ask for something that service covers, the agent loads the matching skill from the teleport catalog, reads the env var, and hits the REST API.
Reversible at any time:
claude mcp enable <name>Teleport also ships self-contained skills:
- 10 from
anthropics/skills— pdf, docx, xlsx, pptx, canvas-design, webapp-testing, mcp-builder, frontend-design, algorithmic-art, slack-gif-creator.
All fetched on-demand from /tmp/ when you ask for something they cover; nothing persists in ~/.claude/skills/.
See catalog.json — 45 entries (21 MCP-wrappers + 24 self-contained skills. Each skill's license is governed by its upstream source_repo.
- Disable, don't delete:
disabledMcpServers[]keeps the config intact — enable any server again with one command. - Credentials never echo: the credential check uses
[ -n "$VAR" ] && echo PRESENT || echo MISSINGso values never leak to the transcript. - Imperative skill guidance: when a credential is missing, the skill instructs the agent to respond with a specific
teleport-setup add-key <service>message verbatim — no paraphrasing, no suggestions to hand-editsettings.local.json. - No runtime deps beyond
curl, Python 3.10+, and Claude Code.
- Claude Code only. Leans on Claude (Sonnet/Opus) knowing the popular REST APIs. Smaller or weaker models — local LLMs, other cloud providers — won't work the same way. For obscure APIs the skill contains the curl recipe so the model's prior knowledge matters less; but the baseline assumption is Claude Code + Sonnet or Opus.
- Self-contained skills that need Python packages, browsers, or system tools still require those installed locally.