Skip to content

Connectors

Gaby talks to your systems via MCP — every external integration speaks the standard initialize + tools/list handshake, either as a local subprocess over stdio or a remote server over HTTP. First-party connectors ship with Gaby and pass a shared contract suite (connectors/_contract/).

First-party connectors

Connector Scope Source
Postgres read connectors/postgres/
Keycloak read connectors/keycloak/
Redis read connectors/redis/
Sentry read connectors/sentry/
Stripe read + simulate-only refund connectors/stripe/
Zoho Desk (ticket source) inbound + writeback backend/src/gaby/ticketing/zoho_desk.py
Slack (MCP ticket source) inbound mcp-servers/gaby-mcp-slack/

Community + bring-your-own

Beyond the first-party set, the catalogue is open:

  • Community catalogue — curated third-party MCP servers (GitHub, GitLab, Linear, Notion, Atlassian, Slack, Filesystem, Cloudflare, PagerDuty, Datadog) that the Connectors page pre-fills for you.
  • Bring your own MCP — a local command (mcp_custom) or a remote server at a URL (mcp_http), e.g. a consolidated internal MCP.
  • One MCP vs many — whether to federate or consolidate.

The full, current list with status lives on the Connectors page in the app.

Contract

Every connector — first-party or community — must pass the 8-test suite in connectors/_contract/test_contract.py:

  1. initialize returns within 2 s.
  2. tools/list returns at least one tool.
  3. Tool descriptions declare a scope=read|write|admin marker.
  4. healthcheck is implemented and returns {ok: bool}.
  5. Re-init within the same process is idempotent.
  6. Stdio frames are clean JSON-RPC (no stray prints to stdout).
  7. Healthcheck never echoes secrets from env vars.
  8. Disconnect closes cleanly within 1 s.

The Python tests parametrise across every entry in the CONNECTORS list; adding a connector is two lines.