docs
How to use cdbx
MCP Connectors

MCP Connectors

Connectors give the AI live access to your external services and let it take actions on your behalf. Connect once in Settings → Connectors and every app can use them.

There are three things connectors can do:

Bring context in — the AI reads from an external service so it can write better code. Search your Notion workspace and the AI knows your actual page structure. Connect your GitHub repo and the AI reads real files. Connect Supabase and the AI never guesses column names again.

Push artifacts out — the AI generates code, then uses a connector to deliver it. Open a GitHub PR, create a new repo, create a Linear ticket — all from a single chat message. This is the "generate → ship" workflow.

Augment AI coding ability — tools that improve what the AI generates. The Supabase connector injects your full database schema into every conversation so the AI writes correct queries on the first try.

How it works

  1. Connect a service in Settings → Connectors
  2. The AI sees your connected services in its context
  3. When your request is relevant, the AI fetches what it needs — or takes an action
  4. Results flow back into the AI's response — no copy-pasting required

The AI only calls a connector when it's relevant. There's no upfront loading or overhead. Supabase schema is the exception — it's injected once when you open the chat so it's always available without a tool call, and the AI can also re-read it on demand mid-conversation (useful if you change the schema during the session).

Quick connect

These services are built-in. Click Connect next to any service in Settings → Connectors to get started.

ServiceAuthWhat the AI can do
NotionOAuthSearch pages, read page content, create pages, query databases
GitHubOAuthList repos, read files, list issues, create issues, search code, create repos, open PRs
Google DriveOAuthOnly the files you choose: read files; read and add to Docs; read, update and add rows to Sheets; create new Docs and Sheets
OutlookOAuthList, search and read email; send email; list and create calendar events
OneDriveOAuthRead-only: list and search files, read text files
Microsoft ExcelOAuthFind workbooks in OneDrive, read ranges, update cells, append rows
Google AnalyticsOAuthRead-only: list your properties, run reports (visitors, pages, traffic sources, countries, conversions) over a date range, see who's on the site right now
AirtableOAuthList bases and tables with their fields, read records, add and update records. Only the bases you choose when connecting
VercelAccess tokenRead-only: list projects and deployments, read a deployment's build log to see why it failed, list a project's domains
SlackOAuthList channels, read channel history, search messages, send messages
SupabaseOAuthReads your full DB schema — injected into every chat so AI writes correct queries
LinearOAuthList and search issues, read issue details, create issues
StripeAPI keyList products, prices, and webhook endpoints; AI scaffolds correct payment flows
FigmaOAuthRead components, design tokens, and frame structure; AI generates UI that matches your designs
AmplitudeAPI keyList event types, event properties, and user properties from your taxonomy
Jira & ConfluenceOAuthList and search issues (JQL), create issues, list spaces, search and read pages
IntercomOAuthList and search conversations, read a conversation's full thread, search contacts, reply as the connected admin
SentryOAuthRead-only: list production error issues, read one issue's full stack trace, list recent error events in a time window

Stripe uses an API key (not OAuth). After clicking Connect, enter a restricted key (rk_) with read access to products, prices, and webhooks — or a secret key (sk_). The key is encrypted and stored on your account.

Google Drive only sees the files you choose. After connecting, press Choose files on the Google Drive row and pick them in Google's own file chooser. Add more any time. Docs and Sheets you pick work through the same connection; files the AI creates are included automatically.

The AI asks before it changes anything. Reading is automatic. Anything that writes — adding a row, adding to a document, posting a message — is shown to you first, exactly as it would be sent, and runs when you press Run it.

Amplitude uses an API key (not OAuth). After clicking Connect, enter your API Key and Secret Key separated by a colon (api_key:secret_key). Find both under Settings → Projects → [your project] in the Amplitude dashboard.

Once connected, the AI can access tools for that service automatically. You can also pull specific content inline using @-mentions (see below).

Sentry — fix production errors in the chat

Connect Sentry and the AI can read the errors your published app is actually throwing. Ask "what errors have happened in the last 24 hours?", then "show me the stack trace", then "fix it" — it finds the file and line the error came from and edits it, without you copying anything out of a dashboard.

Setting it up

  1. In Sentry, create a project for your app and copy its DSN.
  2. Add the DSN to your app under Settings ⚙ → Environment Variables. This is what tells cdbx which Sentry project belongs to this app — see the scoping note below.
  3. Ask the AI to install and initialise the Sentry SDK using that variable.
  4. Restart the app. Environment variables are read when the app boots, so a running app won't see one you just added.
  5. Publish. Errors only reach Sentry from somewhere actually running.

If your app is built with Vite, the variable has to be named VITE_SENTRY_DSN — Vite only exposes variables beginning with VITE_ to browser code, and Sentry silently does nothing when its DSN is undefined.

Each app only sees its own errors. cdbx reads the app's DSN and asks Sentry about that project alone, so another app's errors can never show up in the wrong conversation. An app with no DSN set says so and asks you to add one, rather than showing you everything in your Sentry organisation.

It can only read. cdbx asks Sentry for read permission only (org:read, project:read, event:read), so the connection cannot resolve, ignore, or reassign an issue — nothing cdbx does will change what your team sees in their triage queue.

Browsing connectors from the vibe input

Click the + button in the vibe input (or in Quick Plan's "Share anything else" note field) and choose Connectors to open a searchable catalog of ~70 popular services — sortable by "Most popular" or "A–Z". Icons render in each service's real brand color once it's live; the color is muted and a Coming soon tag appears for anything not built yet.

  • If a service is already connected, click Add to attach it as a chip above your prompt. Its name is folded into the request so the AI knows it's available to use.
  • If a service is one of the built-in managed connectors above but you haven't connected it yet, click Connect — this opens Settings → Connectors in a new tab (so your in-progress prompt isn't lost) and refreshes automatically when you switch back, so you can then click Add.
  • Everything else in the catalog is marked Coming soon — it's on the roadmap but not connectable yet, so the card is greyed out and not clickable rather than pretending to do something it can't.

This modal is for quickly referencing a service while describing what to build. It doesn't replace Settings → Connectors, which remains the place to manage real connections.

Adding a custom MCP server

For any service not listed above, add it manually under Add Custom MCP Server:

FieldWhat to put
NameA label the AI will recognise (e.g. My API)
URLThe HTTP(S) endpoint of your MCP server
Auth headersOptional — e.g. Authorization: Bearer your-token

Auth headers are stored on your account and sent server-side with every request — they are never exposed to the browser or to other users.

Connecting with OAuth instead of a static token

Some MCP servers don't hand out static tokens at all — they require you to log in and approve access, the same way the built-in connectors above work. For these, click Try OAuth connect on the custom connector row instead of pasting a header.

cdbx automatically discovers whether the server supports OAuth and connects using the same standard flow other MCP clients use (no per-server setup needed on cdbx's side). If the server doesn't support OAuth, you'll see a message saying so — use the static-header flow instead. If it does, you'll be redirected to log in and approve access, then sent back with the connector marked Connected via OAuth. You can still add static headers alongside an OAuth connection (useful for things like a tenant ID), and you can disconnect just the OAuth session without deleting the connector, from the same row.

Connecting a locally running MCP server

If you're developing or testing a local MCP server, expose it with a tunnel:

With ngrok:

ngrok http 3001

Copy the https://xxxx.ngrok-free.app URL and paste it into the connector form.

With Cloudflare Tunnel:

cloudflared tunnel --url http://localhost:3001

Copy the generated https://xxxx.trycloudflare.com URL and paste it into the connector form.

This is useful for testing an MCP server you're building, connecting local tooling, or iterating on tool schemas before deploying anywhere.

Enabling and disabling connectors

Each connector has a toggle. Disabling a connector removes it from the AI's context without deleting it — useful if you want to temporarily stop the AI from accessing a service.

Each connected managed service also shows a status dot: green means the token is valid, grey means cdbx is verifying it, and red means the token has expired and you should disconnect and reconnect to restore access.

Auth header security

Auth headers are stored on your account and sent server-side through the cdbx proxy — they are never exposed to the browser or to other users. The proxy validates connector ownership before forwarding any request.

When the AI wants to change something in a connected service

Reading is automatic. If the AI needs to search Notion, read a GitHub file, or look at a Linear issue, it just does it.

Anything that changes something outside your app stops and asks you first — sending a Slack message, creating a Notion page, opening a GitHub issue, and so on. You'll see a box in the chat that says which service and which action, followed by the exact request the AI wants to send, in full:

Needs your OK: notion_create_page on Notion —
this changes something outside this app.

{
  "parent_id": "3477d439-830e-809d-b793-df1143ed72f1",
  "parent_type": "page",
  "title": "Test",
  "content": "Created from cdbx."
}

Click Run it and the AI carries on. Click Don't and it doesn't happen.

The arguments are shown in full rather than summarised on purpose. The AI reads content from other people — Slack messages, issue descriptions, pages — and that content can try to talk it into doing something you didn't ask for. Seeing the actual request is how you catch that.

Your approval covers that one action with those exact details. It isn't a standing permission for the service, so a later action asks again.

If the AI tries to call a tool cdbx doesn't recognise, it's refused outright rather than passed through to the service.

Referencing content with @-mentions

You can pull specific content directly into a message by typing an @-mention in chat:

SyntaxWhat it fetches
@github:owner/repo/path/to/file.tsFetches and injects that file's content
@github:owner/repoNotes the repo in context
@notion:search termSearches Notion and injects the top results
@google-drive:search termSearches Drive and injects matching file info
@slack:channel-nameInjects recent messages from that channel
@linear:ISSUE-123Fetches and injects that issue's details
@figma:file_keyFetches and injects the file's components and design tokens
@amplitude:EventNameFetches and injects properties for that event type
@jira:PROJ-123Fetches and injects that issue's details
@sentry:CDBX-4FFetches that error's details and the stack frames from its most recent event

The content is fetched before the message is sent, so the AI sees it inline rather than having to call a tool.

Example:

@github:your-username/your-repo/src/models/user.ts

Can you explain how this model is structured and suggest improvements?

Supported MCP transports

cdbx currently supports HTTP-based MCP servers (JSON-RPC over HTTP POST). This covers most hosted MCP servers.

stdio-based servers (local npm packages like @modelcontextprotocol/server-notion) are not directly supported — use the ngrok/tunnel approach above to bridge them to HTTP if needed.

cdbx as an MCP server

The above covers connecting other services to cdbx. cdbx is also its own MCP server, so other AI tools can connect to it:

  • Claude Desktop, Claude Code, Cursor, or claude.ai can browse and read your cdbx apps
  • External agents — running in a CI pipeline or another AI tool — can push generated code into an app you own, or build a new one from a plain-language description

→ See cdbx MCP Server for setup and the full tool list.

Custom and community tools (coming soon)

In the future you'll be able to define your own tools — give a tool a name, a JSON schema, and an endpoint URL, and the cdbx AI can call it just like any built-in connector.