Einheitliche MCP-Konfiguration fuer Claude Code, OpenCode und OMP ermoeglicht
Wer dieselben MCP-Server wie Figma oder Linear in Claude Code und OpenCode nutzen will, muss sie bisher in jeweils eigenen Dateien mit eigenen Schluesseln pflegen. Ein gemeinsames Config-Setup soll diesen Dreifach-Aufwand vermeiden.
Posted on Oct 15 • Originally published at ivar.run
You use Claude Code for one task and OpenCode for another, and both should see the same Figma and Linear MCP servers. Each harness wants them in its own file, under its own keys:
Writing three files once is tedious. Keeping them equal is the real cost: change a URL in one, forget the others, and half your sessions start without the server. Then each harness needs its own login.
The files are the easy part. Authentication fails differently in each harness:
Where the harness's own login works, ivar uses it. It only takes over where the harness cannot finish. Figma MCP on OpenCode: fix "Authentication failed" explains the Figma case in detail.
Install ivar, create a hall in an empty directory with the harnesses you use, and add the servers:
curl -fsSL 'https://ivar.run/install?ref=one-mcp-config' | sh mkdir tools-hall && cd tools-hall ivar init --provider claude-code ivar provider add opencode ivar provider add omp ivar mcp add figma ivar mcp add linear Enter fullscreen mode Exit fullscreen mode figma and linear are known names, so ivar mcp add fills in their URLs. Any other HTTP server takes --url, for example ivar mcp add sentry --url https://mcp.sentry.dev/mcp. Adding a server that is already declared the same way changes nothing; adding one with the same name and a different URL is refused instead of overwriting it.
The declaration lives in the hall's ivar.json:
{ "mcp": [ { "name": "figma", "type": "http", "url": "https://mcp.figma.com/mcp" }, { "name": "linear", "type": "http", "url": "https://mcp.linear.app/mcp" } ] } Enter fullscreen mode Exit fullscreen mode ivar mcp add writes each harness's file from it on the spot. After you edit ivar.json by hand, ivar sync rewrites the three files to match.
ivar mcp auth figma --all-providers ivar mcp auth linear --all-providers ivar mcp status Enter fullscreen mode Exit fullscreen mode --all-providers runs every harness the hall lists, one after the other, because each login takes over the terminal and waits on the browser. Every harness is attempted even if an earlier one fails, and the run is reported as needing attention when any of them does. When a client registration happens first, as with Figma on OpenCode, it is reported apart from the login: a registered client is not yet an authenticated one.
ivar mcp status prints which server has credentials on which harness. The client secret lives in.ivar/secrets/mcp.env, outside git. Tokens never go into ivar.json, so you can commit the file and a teammate gets the same servers after their own ivar mcp auth.
With one harness and a server whose login works there, no. Add the server to that harness's file and run its login. ivar earns its place when you use more than one harness, when a team should share the same servers, or when the login fails, as it does for Figma on OpenCode and for any OAuth server on OMP.
The hall that holds your MCP servers is also where ivar mounts your repositories and runs a feature across them, with every session reading the same servers. The quickstart mounts the first repo. The MCP guide covers transports and OAuth per harness.