.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.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.
Elixium uses the Model Context Protocol (MCP) โ the universal standard adopted by GitHub Copilot, Claude, Cursor, Gemini, and more. Configure once, use everywhere.
Every deployment model works the same way โ your agent connects to an MCP endpoint. Only the endpoint (and how you authenticate to it) differs:
| Deployment | Endpoint | Auth |
|---|---|---|
| Hosted (SaaS) | https://connect.elixium.ai/mcp | OAuth 2.1 sign-in โ no key, nothing stored in files |
| Self-hosted | https://connect.<your-domain>/mcp | OAuth via your deployment's identity provider (endpoint discovery metadata) |
| Air-gapped / offline | local 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.
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.
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.
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).
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.
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.
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.
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>"
}
}
}
}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.
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.
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>"
}
}
}
}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.
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.ELIXIUM_BOARD_SLUG in the env block.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.
The remote entry needs no credential at all โ just the URL. The stdio server authenticates with a workspace API key:
ELIXIUM_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.my-project from elixium.ai/tenant/myteam/board/my-project).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.
# Check if Node.js is installed
node --version
# If not installed, get it from nodejs.org or use:
brew install node # macOS
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.
The stdio server is configured with these environment variables (the remote entry needs none of them):
| Variable | Required | Description |
|---|---|---|
| ELIXIUM_API_KEY | Yes | Your workspace API key from Settings |
| ELIXIUM_API_URL | Yes | Your tenant API URL (e.g., https://acme.elixium.ai/api) |
| ELIXIUM_BOARD_SLUG | Recommended | Board slug to connect to (defaults to main) |
| ELIXIUM_USER_EMAIL | Optional | Your 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.
Once connected, your AI agent can use these tools:
list_storiesList all stories on the board
get_iteration_contextGet Current + Backlog for planning
create_storyCreate a new story with AC
update_storyUpdate story state, lane, or description
prepare_implementationFetch full context for a story
record_learningLog what you learned from a story
list_epicsList all epics on the roadmap
list_objectivesList workspace objectives (OKRs)
Add a rules file to your repo so the AI knows how to use Elixium effectively.
.github/copilot-instructions.md.cursor/rules/elixium.md.windsurf/rules/elixium.mdCLAUDE.md at repo rootAGENTS.md at repo root# 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
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 startimplement-story.md โ Full story implementation flowmanage-board.md โ Create/update stories and epicsThe 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.
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.
.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.Ctrl+C or /exit, then relaunch."servers", all others use "mcpServers". Using the wrong key silently fails."Invalid API Key" or "401 Unauthorized"
ELIXIUM_API_URL includes your tenant subdomain (e.g., https://my-team.elixium.ai/api, not https://elixium.ai/api).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."Board not found" or wrong board
ELIXIUM_BOARD_SLUG (stdio) or the X-Elixium-Board header (remote) matches your board URL exactly (case-sensitive)main โ check your board URL to verify"Connection closed" or "Failed to parse message"
# Install once
npm install -g @elixium.ai/mcp-server
cmd /c:which npx (macOS/Linux) or where npx (Windows) to find itnpm install -g @elixium.ai/mcp-server also fixes thisTools not appearing after connection
ELIXIUM_API_KEY, ELIXIUM_API_URL) are set in the env block๐ฃ Claude Code
/mcp to see all server connection statuses/doctor to validate config files and diagnose errors.mcp.json (project, shareable) or ~/.claude/settings.json (user).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.๐ GitHub Copilot (VS Code)
.vscode/mcp.json uses "servers" (not "mcpServers")๐ฏ Cursor
.cursor/mcp.json in project rootStill 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.
Book a quick call with our team to get set up.
๐ Book a 30-min Demo