Connecting Claude Code, Cursor and Other Clients
This page assumes you've created a personal access token and run uvx opteryx-mcp login. If you haven't, start with Using Opteryx from Your AI Assistant.
What You'll Be Able to Do
By the end of this page you'll be able to:
- register Opteryx with Claude Code in one command
- register it with any other MCP client
- point the bridge at a different Opteryx environment
Claude Code
claude mcp add opteryx -- uvx opteryx-mcp --user <user>The tools appear as mcp__opteryx__search_datasets and so on. The SQL dialect reference is also available as the /mcp__opteryx__opteryx_sql_dialect slash command. Load it before asking Claude to write Opteryx SQL in your code.
Any Other MCP Client
opteryx-mcp is a standard stdio MCP server, so any client that launches one can run it with the same command. For example, Cursor's mcp.json:
{
"mcpServers": {
"opteryx": {
"command": "uvx",
"args": ["opteryx-mcp", "--user", "<user>"]
}
}
}If the client can't find uvx, give its full path. which uvx prints it on macOS and Linux, and where uvx on Windows. On platforms without a Keychain, pass the token as an environment variable:
"env": { "OPTERYX_TOKEN": "opt_..._01" }Configuration
| Variable | Default | Purpose |
|---|---|---|
OPTERYX_USER |
— | The user, if --user isn't given |
OPTERYX_TOKEN |
the Keychain entry stored by login |
The personal access token |
OPTERYX_MCP_URL |
https:// |
The MCP endpoint |
OPTERYX_AUTH_URL |
https:// |
Where access tokens are minted |
Why a Local Bridge
The MCP endpoint at https://agent.opteryx.app/mcp/ takes a bearer token, and Opteryx access tokens last five minutes. A client configured with a fixed header would be disconnected almost straight away. opteryx-mcp holds your personal access token and fetches a fresh access token a minute before each one expires. If the server forgets your session, it reconnects without the client noticing.
Generic bridges such as mcp-remote send one fixed header for the life of the process. Once that token expires they fail, typically with does not support dynamic client registration, an error that doesn't point to the real cause.