Axis MCP server
{
"mcpServers": {
"useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server@latest"
],
"env": {
"AXIS_ORG_ID": "<axis_org_id>",
"SUPERSET_WORKSPACE_PATH": "/path/to/directory",
"SUPERSET_ROOT_PATH": "/path/to/directory",
"SHARED_CONTEXT_API_URL": "https://...",
"SHARED_CONTEXT_API_SECRET": "<shared_context_api_secret>",
"OPENAI_API_KEY": "sk-..."
}
}
}
}{
"mcpServers": {
"useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server@latest"
],
"env": {
"AXIS_ORG_ID": "<axis_org_id>",
"SUPERSET_WORKSPACE_PATH": "/path/to/directory",
"SUPERSET_ROOT_PATH": "/path/to/directory",
"SHARED_CONTEXT_API_URL": "https://...",
"SHARED_CONTEXT_API_SECRET": "<shared_context_api_secret>",
"OPENAI_API_KEY": "sk-..."
}
}
}
}{
"mcpServers": {
"useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server@latest"
],
"env": {
"AXIS_ORG_ID": "<axis_org_id>",
"SUPERSET_WORKSPACE_PATH": "/path/to/directory",
"SUPERSET_ROOT_PATH": "/path/to/directory",
"SHARED_CONTEXT_API_URL": "https://...",
"SHARED_CONTEXT_API_SECRET": "<shared_context_api_secret>",
"OPENAI_API_KEY": "sk-..."
}
}
}
}{
"servers": {
"useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server@latest"
],
"env": {
"AXIS_ORG_ID": "${input:axis_org_id}",
"SUPERSET_WORKSPACE_PATH": "${input:superset_workspace_path}",
"SUPERSET_ROOT_PATH": "${input:superset_root_path}",
"SHARED_CONTEXT_API_URL": "${input:shared_context_api_url}",
"SHARED_CONTEXT_API_SECRET": "${input:shared_context_api_secret}",
"OPENAI_API_KEY": "${input:openai_api_key}"
}
}
},
"inputs": [
{
"id": "axis_org_id",
"type": "promptString",
"description": "Axis org id",
"password": true
},
{
"id": "superset_workspace_path",
"type": "promptString",
"description": "Superset workspace path",
"password": true
},
{
"id": "superset_root_path",
"type": "promptString",
"description": "Superset root path",
"password": true
},
{
"id": "shared_context_api_url",
"type": "promptString",
"description": "Shared context api url",
"password": true
},
{
"id": "shared_context_api_secret",
"type": "promptString",
"description": "Shared context api secret",
"password": true
},
{
"id": "openai_api_key",
"type": "promptString",
"description": "Openai api key",
"password": true
}
]
}{
"mcpServers": {
"useaxis-axis": {
"command": "npx",
"args": [
"-y",
"@virsanghavi/axis-server@latest"
],
"env": {
"AXIS_ORG_ID": "<axis_org_id>",
"SUPERSET_WORKSPACE_PATH": "/path/to/directory",
"SUPERSET_ROOT_PATH": "/path/to/directory",
"SHARED_CONTEXT_API_URL": "https://...",
"SHARED_CONTEXT_API_SECRET": "<shared_context_api_secret>",
"OPENAI_API_KEY": "sk-..."
}
}
}
}file .mcp.json (in your project root)file claude_desktop_config.jsonfile ~/.cursor/mcp.jsonfile .vscode/mcp.jsonfile ~/.codeium/windsurf/mcp_config.jsoninstall npx -y @virsanghavi/axis-serverversion 1.14.2
What it does
Axis is an MCP server that coordinates work across multiple developers running different AI coding agents (Claude Code, Cursor, Codex, Windsurf, Antigravity) on the same repository. It maintains a shared job board where agents claim work and lock files before editing to prevent collisions and overwrites.
- Prevent multiple agents from editing the same file simultaneously by checking file locks before edits are proposed.
- Assign coding tasks from a shared job board so different team members' agents work on different jobs without duplication.
- Track what work is in progress across all agents on a team's codebase in real time via a live board view.
Tools this server exposes
| Tool | Does |
|---|---|
| claim_next_job | Atomically claim the next available job from the shared board, respecting dependencies. |
| propose_file_access | Request a lock on a file before editing; returns GRANTED or REQUIRES_ORCHESTRATION with details if another agent holds it. |
| update_shared_context | Update the shared notepad for coordination between agents. |
| search_codebase | Search the repository using ripgrep and keyword ranking (local server); blends hosted results when available with a Pro key. |
| force_unlock | Override a file lock if the holding agent has crashed. |
Before you enable it
An MCP server runs with whatever access you give it. Start with a development account rather than production, and check which tools the server exposes before you let an agent call them unattended.