Skip to main content

MCP sessions and security

Setup authorizes a dedicated session for an existing Nord owner and account. A profile stores the network, owner, selected account, session identity, authoritative expiry and renewal deadline, and a credential-store reference. Network and owner changes require another profile.

Browser authorization

nord-mcp setup --profile personal --method browser --network devnet

Connect an external Solana wallet that controls the Nord owner, select an account in the terminal if prompted, review the session details, and sign the message in your wallet. Supply --account-id to select a known account during setup. Wait for the CLI to verify authorization before using the profile.

The temporary approval page runs on loopback and closes after completion, cancellation, or ten minutes. Keep its single-use URL private. The browser returns only the owner public key and signature; the session secret remains in the CLI. Email/Turnkey login and hardware-wallet transaction-signing fallbacks are not supported.

For a headless host, forward the port printed by setup to the same port on your local machine, then open the printed URL in your wallet-enabled browser. For example, replace 54321 and host below with your setup port and SSH host:

ssh -N -L 54321:127.0.0.1:54321 host

Owner keyfile authorization

Use a Solana JSON keypair file through the setup CLI:

nord-mcp setup --profile headless --method keyfile \
--network devnet --owner-keyfile /private/path/owner.json --storage file

Setup displays the authorization and asks for confirmation. Owner key material and its path are not saved as runtime profile configuration. Never paste a private key into an agent conversation or pass a raw key as a command argument or tool input.

Credential authority and storage

Nord session keys permit more than the MCP trading tools, including transfers and withdrawals. Account selection and omitted tools are local package boundaries, not protocol-enforced restrictions. Someone with the session secret can use it outside this package. Use a dedicated account with funds appropriate to that authority.

OS credential storage is the default. Linux requires a supported, unlocked credential-store backend. An unavailable backend produces an error and does not silently fall back to files.

Use --storage file explicitly for hosts without a credential store. File mode stores plaintext credentials in owner-only files and private directories; the package does not encrypt them. Unsafe ownership, permissions, and symlink paths are rejected.

Profiles and request journals are stored outside the source repository:

  • macOS: ~/Library/Application Support/nord-mcp
  • Linux: $XDG_CONFIG_HOME/nord-mcp, or ~/.config/nord-mcp when unset
  • Override: NORD_MCP_CONFIG_HOME

Protect this directory and preserve request history when recovering interrupted operations. Never commit credentials or setup URLs to source control.

Session lifetime

A session has a 24-hour lease, with renewal bounded by a seven-day authorization deadline. The server checks at startup and hourly, renewing when fewer than 12 hours remain. It does not renew an expired session or extend beyond the verified deadline. Run setup again after expiry or the end of the authorization window.

Interrupted setup preserves pending state and checks the exact session public key on Nord before another authorization. Re-run setup with the same profile to recover; do not discard its pending state. Replacement verifies and activates the new session before attempting to revoke the previous one. If that revocation cannot be verified, the old session remains recorded and another replacement is blocked until access is resolved.

Manage sessions and requests

Only one process may hold a profile at a time. While an agent is connected, use nord_get_connection and nord_get_request to inspect readiness and requests. Stop that profile's serving process before CLI commands that access or change it, including status, request inspection, setup, renewal, revocation, and removal. This also applies when a client automatically restarts its server.

nord-mcp profiles list
nord-mcp status --profile personal
nord-mcp requests list --profile personal
nord-mcp requests inspect order-example-001 --profile personal
nord-mcp renew --profile personal

An ambiguous renewal is reconciled before another attempt. For an unresolved trade, follow request recovery.

To stop session access, revoke it and wait for remote verification:

nord-mcp revoke --profile personal

Then remove the local profile if it is no longer needed:

nord-mcp profiles remove personal

Revocation checks Nord before reporting success and covers a recorded previous session when one remains. Local removal deletes the profile and credentials, but retains request history and reports any unverified remote access. Removing local files alone does not prove remote revocation.

Neither revocation nor removal cancels outstanding orders. Handle open orders separately before retiring a trading profile.

Troubleshooting

SymptomNext step
Executable not found by a desktop clientConfigure the absolute path from command -v nord-mcp and confirm Node.js is available to the client
No compatible wallet detectedOpen the setup URL in a browser with a Wallet Standard wallet that supports Solana message signing
Setup link unavailable or expiredCheck the CLI result, then restart setup with the same profile if it did not complete
No Nord account foundCreate and fund the account outside the MCP package, then retry after Nord processes it
Profile in useStop the other serving process, or use separate profiles for simultaneous clients
Session expired or revokedRun setup again; expired sessions cannot be renewed
Stale RFQ pricingWait for fresh reference data and retry the preview; do not infer a fill from a placement acknowledgement
Unknown execution outcomeInspect the original request ID; do not submit a replacement with a new ID

These materials are provided for informational purposes only and do not constitute financial, investment, legal, or tax advice, or an offer or solicitation to buy or sell any asset. Trading digital assets and derivatives involves substantial risk, including the possible loss of some or all capital. Products may not be available in all jurisdictions. Users are responsible for evaluating suitability and complying with applicable laws.