Skip to main content
Every client needs the same three things. Create the key first, in the dashboard under API keys in the sidebar. It is shown only once. The same key works for the API and the MCP server, so if you already have one, use it.
Keep the key out of source control. Every example below reads it from the GEOPTIE_API_KEY environment variable, so put it in your shell profile or a secret manager rather than in a file you commit.
Use the https:// URL. Your key is sent with every request, and a client pointed at http:// has already sent it in the clear before the redirect to HTTPS happens.

Claude Code

Add --scope user to make it available in every project rather than just the current one. Check it worked:
The server should show as Connected. Inside a session, /mcp opens the same view with more detail.

Cursor

Add the server to .cursor/mcp.json in your project, or ~/.cursor/mcp.json to use it everywhere:
The ${env:...} syntax reads the key from your environment, so the file stays safe to commit.

Codex

Add the server to ~/.codex/config.toml:
Codex reads the key from that environment variable and sends it as the Authorization header for you.

Any other client

Any client that supports remote MCP servers with custom headers can connect with the three settings at the top of this page. If your client only supports local servers over stdio, put the mcp-remote proxy in front:

Check the connection

Ask your assistant:
List my Geoptie brands.
It should call list_brands and come back with your brands and their ids. That one call proves the key works, the subscription is active, and the brands the key can reach. Most other tools take a brand_id, so this is where every session starts. From here, Recipes has the questions worth asking first.

If it does not connect

A restart of your client picks up config changes. If a key stops working immediately after you revoke and replace it, allow a minute for the change to take effect.

Need help

Email support@geoptie.com with what you asked, the tool name if you have it, and the request id from the error. Every failed call includes one.