Skip to content

Deploy the MCP

The primedelta-mcp server exposes the PrimeDelta tools to any MCP client. This page covers installing it, the environment it reads, and the ways to run it.

Install

pip install "primedelta-mcp @ git+https://github.com/PrimeDeltaCorp/primedelta-mcp.git"
pip install "primedelta[kms] @ git+https://github.com/PrimeDeltaCorp/primedelta-python.git"  # for KMS

The package installs the primedelta-mcp console command.

Choose a signing mode

On a server there's no browser, so:

Mode Signer Use
execute + PRIMEDELTA_MCP_KMS_KEY_ID AWS KMS Recommended — key never leaves KMS
execute + PRIMEDELTA_MCP_PRIVATE_KEY Raw key Dev / sandbox only
craft Returns unsigned transactions for your own tooling

Browser mode can't work headless. See Signing modes.

Environment variables

The most-used ones:

Variable Controls Default
PRIMEDELTA_MCP_NETWORK dev / testnet / mainnet — selects contracts, chain id, and the derived RPC dev
PRIMEDELTA_MCP_PROVIDER_URL Override the derived RPC (custom node) derived
PRIMEDELTA_MCP_MODE browser / execute / craft (aliases aws/privatekeyexecute) browser
PRIMEDELTA_MCP_KMS_KEY_ID KMS key id/ARN for execute/craft
PRIMEDELTA_MCP_KMS_REGION AWS region for the KMS client default AWS region
PRIMEDELTA_MCP_PRIVATE_KEY Raw key (dev only) — sensitive
PRIMEDELTA_MCP_MAX_TRADE_USD Per-trade dUSD cap none
PRIMEDELTA_MCP_MAX_DAILY_USD Daily dUSD cap (per UTC day, persisted) none
PRIMEDELTA_MCP_ALLOW_ORDERS Gate: brokerage orders off
PRIMEDELTA_MCP_ALLOW_WITHDRAWALS Gate: withdrawals off
PRIMEDELTA_MCP_ALLOW_DEPOSITS Gate: deposits off
PRIMEDELTA_MCP_ALLOW_SUBACCOUNTS Gate: confirm AI subaccounts off

The chain id is derived from the network and checked against the RPC on startup — there's no chain-id variable. Additional allowlist and HTTP/auth variables are covered in Operator hardening and Connect Claude web.

Run it

stdio (default)

For a local MCP client (Claude Code, Cursor, …):

export PRIMEDELTA_MCP_NETWORK=testnet
export PRIMEDELTA_MCP_MODE=execute
export PRIMEDELTA_MCP_KMS_KEY_ID=<key-id>
primedelta-mcp

A Claude Code .mcp.json entry:

{
  "mcpServers": {
    "primedelta": {
      "command": "primedelta-mcp",
      "env": {
        "PRIMEDELTA_MCP_NETWORK": "testnet",
        "PRIMEDELTA_MCP_MODE": "execute",
        "PRIMEDELTA_MCP_KMS_KEY_ID": "<key-id>"
      }
    }
  }
}

HTTP (hosted)

primedelta-mcp --transport http --host 0.0.0.0 --port 8000

HTTP refuses to start without authentication — a bearer token or OAuth. There's an unauthenticated GET /healthz for liveness. See Connect Claude web.

Docker

docker build -t primedelta-mcp .
docker run -p 8000:8000 \
  -e PRIMEDELTA_MCP_NETWORK=testnet \
  -e PRIMEDELTA_MCP_MODE=execute \
  -e PRIMEDELTA_MCP_KMS_KEY_ID=<key-id> \
  -e PRIMEDELTA_MCP_AUTH_TOKEN=<token> \
  primedelta-mcp --transport http --host 0.0.0.0 --port 8000

The container is headless, so use KMS or a private key — never browser mode.


Next → Connect Claude web · AWS KMS · Operator hardening