MCP servers

Declare the MCP servers your agents should get — a local stdio program or an HTTP service — scoped to one project or to all of them, and wired in at session start without touching your CLI configuration.

The MCP servers tab lets you declare the Model Context Protocol servers your agents should have. OFM wires them in when each session starts, and unwires them when it ends.

Declaring a server

Two transports:

stdio — a local program OFM launches for the agent.

Field Example
Name context7
Command npx
Arguments (one per line) -y then @upstash/context7-mcp
Environment variables API_KEY=…, one KEY=value per line

HTTP — a service already running somewhere.

Field Example
Name internal-docs
URL https://example.com/mcp
Token (Bearer) optional; stored, then passed by environment variable

Names are validated, and three are reserved for OFM’s own servers: memvault, ofm_project_memory and obsidian. They belong to project memory and the Obsidian vault.

Scope: this project or all projects

Every server has a scope:

  • This project — only sessions opened in this folder get it.
  • All projects — every session gets it, marked with an all projects badge.

Use project scope for anything client-specific, and global scope for tools you always want (documentation lookups, a design system server, an internal API).

Each server also has an Active toggle, so you can keep a declaration around without handing it to agents.

Test before you trust

Test probes the server and reports plainly: reachable or unreachable. Error messages are sanitized so a token never appears in a diagnostic string. Run it once after declaring a server — a silent MCP failure is otherwise invisible until an agent mysteriously lacks a tool.

How each CLI receives them

CLI Mechanism
Claude Code A generated --mcp-config file, passed at launch
Codex -c mcp_servers.<name>.… command-line overrides
All others Not wired — no side-effect-free injection path

Two Codex specifics worth knowing. HTTP servers require experimental_use_rmcp_client=true, and without it Codex ignores the transport silently — no error, no tools; OFM adds the flag automatically. And because Codex takes no inline env table on the command line, stdio server variables are injected into the session environment, which the server inherits when Codex spawns it.

Security posture

  • Tokens live in the local registry and travel through the session environment, never through argv. A command line is readable by every process on the machine.
  • OFM never edits ~/.claude.json or ~/.codex/config.toml. Everything is per-session, so removing a server from this tab really removes it.
  • Declared servers are independent from memory and vault wiring: enabling one never enables or disables the others.

Frequently asked

Which CLIs receive declared MCP servers?
Claude Code and Codex. The other CLIs offer no injection path that leaves the user's own configuration untouched, so their sessions start without these servers.
Where is my bearer token stored?
In the local SQLite registry, and it is passed to the session through an environment variable — never on the command line, where any process on the machine could read it.

Last updated