AI assistants
Connect other AI clients
Connect Gemini CLI, OpenAI Codex or any other MCP client that supports Streamable HTTP, with browser sign-in or an API token.
Any MCP client that supports the Streamable HTTP transport can connect to Budget Smugglers. Setup for a couple of popular ones is below.
Gemini CLI#
Add the server from a terminal. --scope user makes it available in every folder:
gemini mcp add --transport http --scope user budget-smugglers https://my.budgetsmugglers.app/api/mcp
Or add it to ~/.gemini/settings.json yourself. Note it’s httpUrl, not url:
{
"mcpServers": {
"budget-smugglers": {
"httpUrl": "https://my.budgetsmugglers.app/api/mcp"
}
}
}
Then sign in from inside Gemini CLI:
/mcp auth budget-smugglers
Your browser opens Budget Smugglers. Sign in, choose whether Gemini may make changes, and choose Allow. Browser sign-in needs a local browser, so on a remote or headless machine use a token instead: add "headers": { "Authorization": "Bearer bsm_..." } next to httpUrl.
Google says Gemini CLI has been replaced by Antigravity CLI for free-tier and Google One users. These steps are for Gemini CLI.
OpenAI Codex#
Codex keeps MCP servers in ~/.codex/config.toml. The Codex CLI, its IDE extension and the ChatGPT desktop app share this file.
[mcp_servers.budget-smugglers]
url = "https://my.budgetsmugglers.app/api/mcp"
Then sign in:
codex mcp login budget-smugglers
To use a token instead, put it in an environment variable and point Codex at it:
[mcp_servers.budget-smugglers]
url = "https://my.budgetsmugglers.app/api/mcp"
bearer_token_env_var = "BUDGET_SMUGGLERS_TOKEN"
Any other client#
Give it the server URL:
https://my.budgetsmugglers.app/api/mcp
The client needs to support Streamable HTTP. Then it can connect one of two ways.
Sign in with OAuth#
Most current clients find our sign-in page on their own. When the client first connects, it gets a “sign in first” reply that points to Budget Smugglers. The client opens your browser, you sign in and choose what it may do, and it’s connected.
The access it asks for is budget:read, and budget:write for changes.
Use an API token#
If the client can’t sign in through the browser, make a token under Settings › Connections and send it with every request, in either header:
Authorization: Bearer bsm_...
x-api-key: bsm_...
Tokens from the Import statements option are for the Sync extension and won’t work here.