Repository navigation
08_MCP Servers
Imza supports many MCP servers directly: GitHub, Linear, Slack, Notion,
Stripe, Figma, and dozens more. Manage servers with /mcp at any time.

In the Add Server section:
-
Server: type to open the catalog dropdown and filter it. Entries
marked
(key)need an API key;(sign-in)entries authorize through your browser. Custom server… takes any https endpoint or a local command. PressEnterto pick. - Transport (custom servers): a toggle between HTTP for a remote endpoint and stdio to launch a local program.
- API Key: shown only when the server needs one, masked in the list. The catalog says what to paste (for example, a GitHub personal access token).
- URL: custom HTTP servers only; the https address of the endpoint.
-
Command / Args / Env / Work dir: custom stdio servers
only. The command runs directly (no shell); args are space-separated,
env is
KEY=VALUEpairs, and the working directory is optional. - Timeout: custom HTTP servers only, optional, in seconds.
- Label: optional, tells servers apart.
- Add: saves the server and connects it.
Catalog addresses resolve automatically, so they keep working across
app updates. Custom servers accept ${NAME} or ${NAME:-fallback}
environment references in the URL, token, headers, args, and env values;
expansion happens when the connection is made.
Stdio servers run as local child processes and are stopped when you disconnect or remove them (stdin is closed, then the process is signaled). They are started only when you add them, never auto-started from project files.

Saved servers are listed at the top:
| Status | Meaning |
|---|---|
✓ |
Connected; the tool count is shown |
⟳ |
Connecting |
✗ |
Failed; the reason is on the row |
○ |
Offline |
Disabled |
Inactive; hidden from the agent |
Buttons on the selected row: Connect/Disconnect, Disable/Enable, Remove. A failed connection retries on its own a few times before giving up; Connect retries sooner.
Keyboard: ↑↓ move between rows and the add form · Enter press the
focused button · DEL remove the selected server (y confirms) ·
Esc close.
(sign-in) entries authorize through the browser instead of an API key.
Pick one, optionally give it a label, and press Sign in. Imza opens
your browser to the service's consent page; once you approve, the row
connects and shows its tool count. While the browser is open the row reads
waiting for browser… and offers Cancel. A canceled or refused
first sign-in leaves the row in the list; press Sign in on it to try
again, or remove it.
Imza discovers the authorization server from the server itself (no endpoints to configure), registers a client automatically, and uses PKCE with a localhost callback. No password is involved.
If no browser can be opened (Imza running over SSH, for example), the
wait times out after five minutes and the row shows the sign-in link to
open by hand. The link's 127.0.0.1 callback port must still reach the
machine running Imza (an SSH port forward of that port does it), so
headless setups may prefer a (key) service instead.
Tokens live in your local configuration file under the server's oauth
object. Unlike model API keys, they are not moved to the OS keychain. When an
access token expires Imza renews it in the background; if renewal fails the
row shows that sign-in is needed again; press Sign in to redo it.
The agent sees every server you configured, connected or not. When a task needs one, it loads that server's tool reference (names, descriptions, argument schemas) and calls the tools directly. With the matching servers connected you can ask it to check a Sentry issue, find the Linear issue for a bug, or pull up a library's current API.
An offline server connects when the agent loads it, once you say yes.
--allow-mcp <id> says yes ahead of time for one run (see
Headless mode).
Loading a disabled or failed server does not ask; the agent just gets
the reason.
When a server changes its tools, the inventory updates on its own; no reconnect needed.
A connected server's tools are available to the agent in every run, so Disable a server you do not want used. Disabling and removal take effect immediately.
Servers are stored under mcp_servers in your configuration file, one entry per
id, keyed by the transport and address you chose. That is where you can see the
stored token, set autoload for a server you always want connected, raise
timeout_secs for a slow one (the /mcp form offers that field only for
custom HTTP servers), or add headers.
See Configuration for every key and its default.