Skip to content
AINOX App
Esc
↑↓navigate↵open⌘Jpreview
On this page

Connect a client

Settings for adding the AINOX App MCP server to Claude Code, Cursor, VS Code, and Codex, or calling it over plain HTTP.

Every client needs the same two things: the endpoint and your API key in an Authorization header. The examples read the key from an AINOX_API_KEY environment variable so it stays out of files you might commit.

export AINOX_API_KEY="paste-your-key-here"

Add it for yourself, in every project:

claude mcp add --transport http --scope user ainox https://app-builder.poring.arkcube.com/api/mcp/code/mcp \
  --header "Authorization: Bearer $AINOX_API_KEY"

Or share it with a repository in .mcp.json. Claude Code expands ${AINOX_API_KEY} when it starts, so each teammate uses their own key:

{
  "mcpServers": {
    "ainox": {
      "type": "http",
      "url": "https://app-builder.poring.arkcube.com/api/mcp/code/mcp",
      "headers": { "Authorization": "Bearer ${AINOX_API_KEY}" }
    }
  }
}

Run /mcp inside Claude Code to check that ainox is connected.

Add the server to ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:

{
  "mcpServers": {
    "ainox": {
      "url": "https://app-builder.poring.arkcube.com/api/mcp/code/mcp",
      "headers": { "Authorization": "Bearer ${env:AINOX_API_KEY}" }
    }
  }
}

Cursor reads the variable from the environment it was launched in, so start it from a shell where AINOX_API_KEY is set.

Add the server to .vscode/mcp.json. VS Code prompts for the key the first time and stores it securely:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "ainox-api-key",
      "description": "AINOX App API key",
      "password": true
    }
  ],
  "servers": {
    "ainox": {
      "type": "http",
      "url": "https://app-builder.poring.arkcube.com/api/mcp/code/mcp",
      "headers": { "Authorization": "Bearer ${input:ainox-api-key}" }
    }
  }
}

Add the server to ~/.codex/config.toml. Codex sends the variable’s value as the bearer token:

[mcp_servers.ainox]
url = "https://app-builder.poring.arkcube.com/api/mcp/code/mcp"
bearer_token_env_var = "AINOX_API_KEY"

Each request is a JSON-RPC message posted to the endpoint. The Accept header must list both JSON and event streams:

curl -s https://app-builder.poring.arkcube.com/api/mcp/code/mcp \
  -H "Authorization: Bearer $AINOX_API_KEY" \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_threads","arguments":{}}}'

The transport is stateless, so you can call tools/list or tools/call directly without an initialize handshake. A tool’s result is in result.structuredContent. When result.isError is true, result.content[0].text is a JSON string whose message field holds the error.

Check the connection

Ask your agent to “list my ainox threads”. It should call list_threads and show your most recent chats. If it reports Missing or invalid API key, see Troubleshooting.

Was this page helpful?