> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Servers

> Connect an external MCP server so its tools become AI actions — OAuth or header auth, per-tool opt-out, and a preset gallery for Slack, HubSpot, Notion, and more.

<Info>
  **Beta.** MCP servers are available now, but the surface is still settling — expect changes.
</Info>

Instead of authoring one HTTP action per endpoint, point OpenCX at an MCP server and every tool it publishes becomes available to your AI agents. Useful for vendors that already ship a remote MCP server — Slack, HubSpot, Notion, Stripe — where hand-authoring each operation as a separate action would just be re-describing their own tool definitions.

## Connect a Server

Go to **[Actions](https://platform.open.cx/actions)** and add a server from the **MCP servers** section — either pick one from the preset gallery (OpenCX, Slack, HubSpot, Intercom, Linear, Notion, Stripe) or add a custom URL.

<Steps>
  <Step title="Enter the server URL">
    A Streamable HTTP or SSE endpoint, e.g. `https://mcp.example.com/mcp`. OpenCX probes it to detect how it authenticates.
  </Step>

  <Step title="Authenticate">
    * **OAuth** — if the server advertises OAuth (discovery + dynamic client registration), OpenCX opens its authorization page. Approve, and you're redirected back connected. Tokens are refreshed automatically and never shown in OpenCX again.
    * **Request headers** — if the server expects a static credential instead (an API key, a bearer token), enter it as a header. Values are encrypted at rest and never displayed again; reference a [named secret](/actions/authentication#named-secrets) instead of pasting a raw value so the credential lives in one place.

    <Note>
      Slack's MCP server supports neither automatic path, so it uses a pre-registered OAuth client instead of discovery.
    </Note>
  </Step>

  <Step title="Review and enable">
    Once connected, OpenCX lists every tool the server publishes. The server is enabled by default — flip it off to keep the connection and its tool list without letting agents call anything.
  </Step>
</Steps>

## Per-Tool Control

Open a connected server's detail page to see its live tool catalog, grouped by what each tool does — write, fetch, or other. Switch individual tools off, or a whole group at once.

* The catalog is re-read from the server (`tools/list`) every time you open the page, so a tool the vendor adds later shows up already enabled.
* Switching a tool off stores it in a disabled set on your connection — it stays off even after the vendor's catalog changes, until you turn it back on.
* Write tools default to visible/open in the list since they're the ones worth auditing before an agent gets to call them; fetch tools default collapsed.

## How Agents Call MCP Tools

Once enabled, an MCP server's tools are available to the AI agent exactly like any other action — the agent decides whether a tool matches the customer's request, same as for [HTTP actions](/actions/introduction).

Tool names are namespaced as `<server>__<tool>` so two servers can each expose a tool with the same raw name (e.g. two different `search` tools) without colliding. If a server is unreachable when the agent tries to list its tools, that server's tools are omitted without breaking the whole tool list; its detail page reports the failure reason inline.

## Troubleshooting

| Symptom                                                       | Cause                                                                                                                                                                       |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| "Reconnect required" badge                                    | The OAuth grant expired or was revoked upstream. Reconnect from the server's detail page.                                                                                   |
| Server shows connected but tools list is empty or errors      | The server itself is unreachable or erroring on `tools/list` — check the vendor's status, then revisit the page to re-probe.                                                |
| A credential stopped working after you changed the server URL | Stored header values and OAuth tokens are pinned to the URL they were saved against. Repointing a server to a new host drops them — re-authenticate after changing the URL. |
| A tool you expected to see is missing                         | It may be switched off in [per-tool control](#per-tool-control) above, or the vendor removed it from their catalog.                                                         |

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="AI Actions" icon="bolt" href="/actions/introduction">
    How actions fit alongside integration and system tools.
  </Card>

  <Card title="Authentication" icon="shield-halved" href="/actions/authentication">
    Named secrets, global variables, and header auth for actions.
  </Card>

  <Card title="OpenAPI Import" icon="file-import" href="/actions/openapi-import">
    The other way to bulk-add actions, from your own OpenAPI spec.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/actions/troubleshooting">
    General action failures — import errors, 401s, AI not calling.
  </Card>
</CardGroup>
