Claude Code & Codex
Both command-line agents speak MCP, so they can read your Dubsado account while you work.
Server URL
https://mcp.dubsado.dev/mcpClaude Code
claude mcp add --transport http dubsado https://mcp.dubsado.dev/mcp
Then start Claude Code and run /mcp. Choose dubsado and pick
the authenticate option. Your browser opens the Dubsado sign-in and consent screen. Once you
approve, /mcp shows the server as connected and its tools become available.
Add --scope user to make the server available in every project instead of
just the current one:
claude mcp add --transport http --scope user dubsado https://mcp.dubsado.dev/mcp
Useful follow-ups: claude mcp list to check status, and
claude mcp remove dubsado to disconnect.
Codex CLI
Remote MCP servers are configured in ~/.codex/config.toml. Add:
[mcp_servers.dubsado]
url = "https://mcp.dubsado.dev/mcp"
auth = "oauth"
Then sign in. This opens the Dubsado consent screen in your browser:
codex mcp login dubsado
codex mcp list shows the configured servers.
If your Codex version predates remote-server support, bridge to it with
mcp-remote, which runs the OAuth flow locally (requires Node.js):
[mcp_servers.dubsado]
command = "npx"
args = ["-y", "mcp-remote", "https://mcp.dubsado.dev/mcp"]
Any other MCP client
Configure the URL above as a remote (streamable HTTP) MCP server. Discovery is standard:
an unauthenticated request returns 401 with a
WWW-Authenticate header pointing at
https://mcp.dubsado.dev/.well-known/oauth-protected-resource,
which names the Dubsado authorization server. Clients that support OAuth 2.1 with PKCE and
dynamic client registration need nothing else.
If something goes wrong
- The browser window never opens: check that the URL you pasted ends in
/mcpand starts withhttps://. - Approval succeeds but no tools appear: disconnect and reconnect the connector. Tool definitions are fetched fresh on each connection.
- "Unauthorized" after it worked before: access was revoked or expired; reconnect from your AI app's connector settings.
- An assistant reports partial results: it hit the 120 calls-per-minute limit. Ask again in a minute, or narrow the question.