Agent Integration

Connect Elixium to Claude and your AI coding assistants. Access your backlog, update stories, and get AI guidance โ€” one approach for every agent: point it at an Elixium MCP endpoint.

๐Ÿ”Œ One Integration, Every AI Agent

Elixium uses the Model Context Protocol (MCP) โ€” the universal standard adopted by GitHub Copilot, Claude, Cursor, Gemini, and more. Configure once, use everywhere.

๐Ÿงญ One Path Across Every Subscription

Every deployment model works the same way โ€” your agent connects to an MCP endpoint. Only the endpoint (and how you authenticate to it) differs:

DeploymentEndpointAuth
Hosted (SaaS)https://connect.elixium.ai/mcpOAuth 2.1 sign-in โ€” no key, nothing stored in files
Self-hostedhttps://connect.<your-domain>/mcpOAuth via your deployment's identity provider (endpoint discovery metadata)
Air-gapped / offlinelocal stdio server (@elixium.ai/mcp-server)Workspace API key โ€” no traffic leaves your network

The per-agent instructions below show the hosted URL; self-hosted deployments substitute their own connect URL, and air-gapped installs use the stdio config shown in each section.

๐ŸŸ  Claude (Desktop & Web): One-Click Connector

For the Claude desktop app and claude.ai, connect Elixium as a remote MCP connector: paste one URL and sign in. No API key, no config files, nothing to install.

  1. In Claude, open Settings โ†’ Connectors โ†’ Add custom connector.
  2. Paste the connector URL:
    https://connect.elixium.ai/mcp
  3. Click Add, then Connect โ€” Claude opens an Elixium sign-in page.
  4. Sign in (Google, GitHub, or Microsoft), choose the workspace to connect, and click Allow.
  5. Done โ€” Claude can now read and update that workspace's board. Try: "What stories are in Current?"

Why the connector beats a pasted key: you sign in with OAuth 2.1 instead of copying an API key. The connection is scoped to the one workspace you pick, carries your own permission level, can be revoked anytime, and refreshes automatically so you stay connected โ€” no long-lived secret living on your machine.

Claude Desktop tip: if clicking Add shows "server URL already exists", fully restart the Claude desktop app โ€” the connector will be in your list when it reopens. This is a known Claude Desktop quirk, not an Elixium error.

๐Ÿค– Connect Your Coding Agent

Each agent connects with either the remote entry (one URL, OAuth sign-in on first use, no credential in any file) or the stdio config (key-based local server โ€” required for air-gapped, works everywhere else too).

๐ŸŸฃ Claude Code

Fastest: one command, then sign in when prompted:

claude mcp add --transport http elixium https://connect.elixium.ai/mcp

Or create .mcp.json in your project root (shared with your team; the X-Elixium-Board header pins the board for this repo):

{
  "mcpServers": {
    "elixium": {
      "type": "http",
      "url": "https://connect.elixium.ai/mcp",
      "headers": { "X-Elixium-Board": "<YOUR_BOARD_SLUG>" }
    }
  }
}

Run /mcp inside Claude Code to check the connection and complete the OAuth sign-in. Air-gapped? Use the stdio config shape below with "mcpServers" in .mcp.json.

๐Ÿ™ GitHub Copilot (VS Code)

MCP support is GA as of VS Code 1.102. Create .vscode/mcp.json in your project โ€” note Copilot uses the servers root key:

{
  "servers": {
    "elixium": {
      "type": "http",
      "url": "https://connect.elixium.ai/mcp",
      "headers": { "X-Elixium-Board": "<YOUR_BOARD_SLUG>" }
    }
  }
}

Gallery alternative: Elixium is listed in the VS Code MCP Server Gallery โ€” Command Palette โ†’ "MCP: Add Server" โ†’ search "elixium", or find it in the GitHub MCP Registry. The gallery installs the key-based stdio server and prompts for the environment variables listed below.

๐ŸŽฏ Cursor

Create .cursor/mcp.json in your project:

{
  "mcpServers": {
    "elixium": {
      "type": "http",
      "url": "https://connect.elixium.ai/mcp",
      "headers": { "X-Elixium-Board": "<YOUR_BOARD_SLUG>" }
    }
  }
}

Cursor signs in via OAuth on first use. Check Settings โ†’ MCP for connection status.

โœจ Gemini / Google Antigravity

Configure the stdio server in your global or workspace MCP settings:

{
  "mcpServers": {
    "elixium": {
      "command": "npx",
      "args": ["-y", "@elixium.ai/mcp-server@latest"],
      "env": {
        "ELIXIUM_API_KEY": "<YOUR_API_KEY>",
        "ELIXIUM_API_URL": "https://<YOUR_TENANT>.elixium.ai/api",
        "ELIXIUM_BOARD_SLUG": "main",
        "ELIXIUM_USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

โŒจ๏ธ OpenAI Codex CLI

Create .codex/mcp.json in your project:

{
  "mcpServers": {
    "elixium": {
      "command": "npx",
      "args": ["-y", "@elixium.ai/mcp-server@latest"],
      "env": {
        "ELIXIUM_API_KEY": "<YOUR_API_KEY>",
        "ELIXIUM_API_URL": "https://<YOUR_TENANT>.elixium.ai/api",
        "ELIXIUM_BOARD_SLUG": "main",
        "ELIXIUM_USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

Codex does not support per-server request headers โ€” pin the board with ELIXIUM_BOARD_SLUG (stdio) or select_board in-session.

๐Ÿ„ Windsurf

Create .windsurf/mcp.json in your project:

{
  "mcpServers": {
    "elixium": {
      "command": "npx",
      "args": ["-y", "@elixium.ai/mcp-server@latest"],
      "env": {
        "ELIXIUM_API_KEY": "<YOUR_API_KEY>",
        "ELIXIUM_API_URL": "https://<YOUR_TENANT>.elixium.ai/api",
        "ELIXIUM_BOARD_SLUG": "main",
        "ELIXIUM_USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

Windsurf does not support per-server request headers โ€” pin the board with ELIXIUM_BOARD_SLUG (stdio) or select_board in-session.

๐ŸŸ  Claude Desktop โ€” offline / key-based alternative

Recommended: use the hosted connector at the top of this page (https://connect.elixium.ai/mcp) โ€” OAuth sign-in, no API key. The stdio config below is for air-gapped setups or if you specifically want a key-based local server.

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "elixium": {
      "command": "npx",
      "args": ["-y", "@elixium.ai/mcp-server@latest"],
      "env": {
        "ELIXIUM_API_KEY": "<YOUR_API_KEY>",
        "ELIXIUM_API_URL": "https://<YOUR_TENANT>.elixium.ai/api",
        "ELIXIUM_BOARD_SLUG": "main",
        "ELIXIUM_USER_EMAIL": "<YOUR_EMAIL>"
      }
    }
  }
}

๐Ÿ“Œ Pin Your Board

A workspace can have many boards. Pinning tells every session which board this repo works against โ€” unpinned agents fall back to your server-side default, which can silently point at the wrong board.

  • Remote entries (Claude Code, Copilot, Cursor): set the X-Elixium-Board header on the server entry, as shown in the configs above. The pin lives in the repo, so every teammate and every session lands on the same board.
  • Stdio configs (all agents): set ELIXIUM_BOARD_SLUG in the env block.
  • Agents without header support (Codex, Windsurf) on remote entries: ask the agent to call select_board at the start of the session โ€” the choice also persists as your server-side default for later sessions.

Find your board slug in the board URL โ€” e.g. my-project from elixium.ai/tenant/myteam/board/my-project.

๐Ÿ”‘ Get an API Key (stdio / air-gapped setups)

The remote entry needs no credential at all โ€” just the URL. The stdio server authenticates with a workspace API key:

  1. Get your API Key โ€” Open the Elixium app and click your profile (top right) to open the Profiletab. Scroll to the Workspaces section, find the card for the workspace you want a key for, and clickGenerate Key. A confirmation prompt will appear; confirm, then copy the key immediately โ€” it is only shown once and cannot be retrieved later. Paste it into your IDE config asELIXIUM_API_KEY. To rotate, clickGenerate Key again on the same workspace card โ€” the old key is invalidated as soon as the new one is created.
  2. Find your Board Slug โ€” Copy the slug from your board URL (e.g., my-project from elixium.ai/tenant/myteam/board/my-project).
  3. Configure your AI Agentโ€” Add the MCP config from your agent's section above.
  4. Verifyโ€” Ask your AI: "What stories are in Current?"
Generate Your API Key

๐Ÿ“ฆ Prerequisites

Remote connection: nothing to install. The stdio MCP server runs via npx (included with Node.js) โ€” no separate installation required; it downloads automatically on first use.

Required for stdio: Node.js 18+

# Check if Node.js is installed

node --version

# If not installed, get it from nodejs.org or use:

brew install node # macOS

Optional: Pre-install the MCP Server

While npx auto-downloads on first run, you can pre-install globally for faster startup:

npm install -g @elixium.ai/mcp-server

If globally installed, change "command": "npx" to "command": "elixium-mcp-server" in your config. For fully offline installs, ship the package from your deployment bundle โ€” see offline install docs.

๐Ÿ’ก Tip: The configs above use npx -y @elixium.ai/mcp-server@latest which always fetches the latest version. This is the recommended approach.

โš™๏ธ Environment Variables (stdio server)

The stdio server is configured with these environment variables (the remote entry needs none of them):

VariableRequiredDescription
ELIXIUM_API_KEYYesYour workspace API key from Settings
ELIXIUM_API_URLYesYour tenant API URL (e.g., https://acme.elixium.ai/api)
ELIXIUM_BOARD_SLUGRecommendedBoard slug to connect to (defaults to main)
ELIXIUM_USER_EMAILOptionalYour email address. Used as the "Requested by" field when creating stories via AI. If not set, defaults to the API key owner's email.

๐Ÿ’ก Tip: Setting ELIXIUM_USER_EMAIL ensures stories you create through your AI assistant are attributed to you, not the workspace API key owner.

๐Ÿ› ๏ธ Available MCP Tools

Once connected, your AI agent can use these tools:

list_stories

List all stories on the board

get_iteration_context

Get Current + Backlog for planning

create_story

Create a new story with AC

update_story

Update story state, lane, or description

prepare_implementation

Fetch full context for a story

record_learning

Log what you learned from a story

list_epics

List all epics on the roadmap

list_objectives

List workspace objectives (OKRs)

๐Ÿ“‹ Teaching Your AI Agent

Add a rules file to your repo so the AI knows how to use Elixium effectively.

Rules File Locations

  • GitHub Copilot: .github/copilot-instructions.md
  • Cursor: .cursor/rules/elixium.md
  • Windsurf: .windsurf/rules/elixium.md
  • Claude Code: CLAUDE.md at repo root
  • Codex CLI: AGENTS.md at repo root

Sample Rules Content

# Elixium Integration

At the start of each session:
1. Call `get_iteration_context` to load the board
2. Review Current lane for active work

When implementing a story:
1. Call `prepare_implementation` for full context
2. Follow TDD: write tests first
3. Update story state to "started"
4. Commit with story ID in message

When complete:
1. Update story state to "finished"
2. Call `record_learning` with outcomes

๐Ÿ”„ Built-in Workflows

Initialize ready-to-use workflows in your project:

# Initialize Elixium workflows

npx @elixium.ai/mcp-server init

This creates .agent/workflows/ with:

  • load-board-context.md โ€” Load board at session start
  • implement-story.md โ€” Full story implementation flow
  • manage-board.md โ€” Create/update stories and epics

๐Ÿ” Security

Hosted Connection: OAuth 2.1 (recommended)

The sign-in flow puts no long-lived secret in any file: sessions use short-lived access tokens with rotating refresh tokens (reuse revokes the whole chain), are scoped to the one workspace you pick with your own permission level, and can be revoked anytime. See API & MCP Security for the full surface.

Tenant-Scoped API Keys (stdio path)

Each API key is hardcoded to your workspace. Even if a key is compromised, it only provides access to your specific projects. Keys can be rotated or revoked at any time from workspace settings.

Best Practice: Use environment variables or a secrets manager instead of hardcoding keys in config files. Add key-bearing configs like .cursor/mcp.json to your .gitignore. Claude Code's .claude/settings.local.json is gitignored by default. Remote entries contain no secret and are safe to commit.

๐Ÿ”ง Troubleshooting

Quick Diagnostic Checklist

  1. Restart your IDE / agent โ€” MCP servers are loaded at startup. After changing config, you must fully restart (not just reload the window). For Claude Code: exit with Ctrl+C or /exit, then relaunch.
  2. Test the command in your terminal first โ€” Run the server manually to check for errors:
    npx -y @elixium.ai/mcp-server@latest
    If this fails or hangs, your IDE won't be able to start it either.
  3. Verify Node.js is available โ€” The stdio MCP server requires Node.js 18+:
    node --version # Should be v18+
  4. Check the config key name โ€” GitHub Copilot uses "servers", all others use "mcpServers". Using the wrong key silently fails.
  5. Verify your API key โ€” Go to your workspace Command Center (Profile tab) and confirm the key is active and not revoked.

Common Errors

"Invalid API Key" or "401 Unauthorized"

  • Double-check the key โ€” copy/paste from Command Center, don't type it manually
  • Make sure ELIXIUM_API_URL includes your tenant subdomain (e.g., https://my-team.elixium.ai/api, not https://elixium.ai/api)
  • Check the key hasn't been revoked in workspace settings
  • Check for duplicate config files โ€” If you have both .mcp.json (project root) and .claude/settings.local.json, the .mcp.json file takes precedence. A stale key in .mcp.json will override your updated key. Run cat /proc/$(pgrep -f elixium-mcp)/environ | tr '\0' '\n' | grep ELIXIUM_API_KEY to verify which key the running server is actually using.
  • Fully quit your IDE โ€” A window reload may not restart the MCP server process. Quit completely and reopen to pick up config changes.

"Board not found" or wrong board

  • Confirm ELIXIUM_BOARD_SLUG (stdio) or the X-Elixium-Board header (remote) matches your board URL exactly (case-sensitive)
  • Default slug is main โ€” check your board URL to verify
  • Unpinned remote sessions use your server-side default board โ€” pin per the Pin Your Board section above

"Connection closed" or "Failed to parse message"

  • npx stdout pollution (most common):When npx downloads the package for the first time, it prints installation output ("changed 38 packages...") to stdout. MCP uses stdout for JSON-RPC, so the IDE can't parse it and the connection drops. Fix: pre-install globally so npx has nothing to download:

    # Install once

    npm install -g @elixium.ai/mcp-server

    Then update your config to use the installed binary:
    "command": "elixium-mcp-server", "args": []
  • Version managers (asdf, nvm, fnm): These can print reshimming or version-switch messages to stdout/stderr when npx runs, causing the same parse failure. The global install fix above avoids this.
  • Windows users: You must wrap npx with cmd /c:
    "command": "cmd", "args": ["/c", "npx", "-y", "@elixium.ai/mcp-server@latest"]
  • If npx isn't found, use the full path: which npx (macOS/Linux) or where npx (Windows) to find it
  • Corporate proxies can block npx downloads โ€” the global install with npm install -g @elixium.ai/mcp-server also fixes this

Tools not appearing after connection

  • The server may be connected but the env vars are missing โ€” check the required vars (ELIXIUM_API_KEY, ELIXIUM_API_URL) are set in the env block
  • Try asking your AI: "What MCP tools are available?" to see if Elixium tools are listed

IDE-Specific Diagnostics

๐ŸŸฃ Claude Code

  • Run /mcp to see all server connection statuses
  • Run /doctor to validate config files and diagnose errors
  • Config files: .mcp.json (project, shareable) or ~/.claude/settings.json (user)
  • Config precedence: If a .mcp.json file exists in your project root, it takes priority over .claude/settings.local.json. Use only one to avoid stale-key issues when regenerating API keys.
  • After changing config, fully quit VS Code (not just reload window) โ€” the MCP server process may persist across reloads with the old environment variables.

๐Ÿ™ GitHub Copilot (VS Code)

  • Open Output panel โ†’ select "GitHub Copilot" channel for MCP logs
  • Check .vscode/mcp.json uses "servers" (not "mcpServers")
  • Requires VS Code 1.102+ and Copilot extension

๐ŸŽฏ Cursor

  • Go to Settings โ†’ MCP to see connected servers and connection status
  • Config file: .cursor/mcp.json in project root
  • Restart Cursor completely after config changes (not just reload)

Still stuck? If none of the above helps, check that the config JSON is valid (no trailing commas, correct brackets). You can validate it by pasting into jsonlint.com or running cat your-config.json | python3 -m json.tool.

Need Help?

Book a quick call with our team to get set up.

๐Ÿ“… Book a 30-min Demo