MCP
Connect Cursor, Claude, ChatGPT, and other assistants to SignalDock with OAuth.
Assistants can use SignalDock through MCP (Model Context Protocol). After you connect and allow access, the assistant works with the same account and organization membership you use in the app (RLS-scoped tools).
The local MCP address is:
https://mcp.localhostOn the shared production host the path is /mcp (rewritten to the mcp
service). Do not paste access tokens into a client. The assistant signs in
through SignalDock’s consent screen (/oauth/consent on the SaaS app).
Supabase Auth is the OAuth 2.1 authorization server (dynamic client
registration on).
- Open in Cursor
- Open in Claude
- Open ChatGPT
claude mcp add --transport http signaldock https://www.signaldock.dev/mcp
- Open in Cursor adds SignalDock in Cursor. Confirm the prompt, then sign in when Cursor asks.
- Open in Claude opens Claude with SignalDock already filled in.
- Open ChatGPT takes you to ChatGPT. ChatGPT has no one-click add; follow the steps below.
Cursor
- Choose Open in Cursor above, or open Customize → MCPs and add a remote server yourself.
- If you add it by hand, use the name
signaldockand this address locally:
{
"mcpServers": {
"signaldock": {
"url": "https://mcp.localhost"
}
}
}- When Cursor asks you to sign in, finish in the browser and choose Allow on the consent screen.
Claude
claude mcp add --transport http signaldock https://mcp.localhostOn the web, Customize → Connectors → Add custom connector, then paste the MCP URL. Sign in and choose Allow when SignalDock asks.
ChatGPT
Custom connectors need Developer mode on a paid plan.
- Turn on Developer mode in ChatGPT settings.
- Add a connector: Streamable HTTP, paste the MCP URL.
- Leave bearer token / token env vars empty. Choose OAuth if the form has an authentication control.
- Save, sign in, and enable the connector in a chat.
What the assistant can do
Tools run with your membership and row-level security, so the assistant sees exactly what you see in the app.
| Area | Read | Act |
|---|---|---|
| Account | me, organizations_list | |
| Signals | signals_list, signals_get | signals_reprocess, sources_run |
| Pipeline | projects_get, opportunities_list, opportunities_get, companies_list, companies_get, contacts_list, research_list | opportunities_setOutcome |
| Campaigns | campaigns_list, campaigns_get, campaigns_enrollments | campaigns_propose, campaigns_accept, campaigns_enroll |
| Approval queue | messages_list (status pending_approval), messages_get | messages_approve, messages_reject, threads_resolve |
| Meetings and results | meetings_list, analytics_outreach, settings_scoring_suggestions_list | |
| Help | docs_index, docs_search, docs_get |
Tools that start durable work (source runs, reprocessing, campaign proposals, enrollments, and approving or rejecting drafts) are forwarded to the API with your token, so they behave exactly like the app. Well-behaved clients ask you before calling an action tool; the instructions tell them to.
Creating organizations, changing scoring, and connecting mailboxes or CRMs still happen in the app. The in-app copilot uses the same tools.
If something goes wrong
- The form asks for a bearer token. Leave it empty. SignalDock uses OAuth.
- Protected resource mismatch. Keep the MCP URL (
/mcpin production,https://mcp.localhostlocally). Discovery is served at/.well-known/oauth-protected-resource. - The consent screen lists more access than you want. Choose Deny.
Last updated on