# Custom MCP Connections

Custom MCP Connections let your Duvo Assignments call tools from an MCP server you host. Use them when a built-in Connection doesn't cover the system you need — internal tools, legacy platforms, custom-built APIs — and you'd rather expose those tools via MCP than build a one-off integration.

To Duvo, a Custom MCP Connection looks like any other Connection. Your Assignment's Setup picks tools from your MCP server alongside tools from Gmail, Slack, or Snowflake.

## When to use a Custom MCP Connection

* You have a proprietary internal system (CRM, warehouse API, internal tool) that isn't a built-in Duvo Connection.
* You've already built or can build an MCP server for that system.
* You want consistent setup across teammates — add the Connection once, every teammate can connect with their own credentials.

If you want to drive Duvo from an MCP host instead, see [Duvo MCP server](/mcp/duvo-mcp-server.md).

## What you need to bring

* **A deployed MCP server** accessible over the internet via a public HTTPS URL. Localhost is not supported.
* **Streamable HTTP transport.** Servers that only support STDIO or HTTP/SSE cannot connect.
* **Your authentication method** — Custom MCP supports no-auth, API key, custom HTTP headers, and OAuth (with automatic Dynamic Client Registration where available).

## Setup at a glance

Full step-by-step instructions live on the Custom MCP Connection page: [Custom MCP](https://github.com/duvoai/monorepo/blob/gitbook-prod/knowledge-base/connections/available-connections/custom-mcp.md).

The short version:

1. Open the [Connections page](https://app.duvo.ai/integrations) in Duvo and click **Add custom connection**.
2. Give the Connection a recognizable name (for example, "Internal CRM").
3. Pick an authorization method (None, API key, custom headers, or OAuth).
4. Enter your server's public HTTPS URL.
5. Click **Create**. Teammates then sign into the Connection individually with their own credentials.

## OAuth support

If your MCP server uses OAuth, Duvo automatically detects whether it supports **Dynamic Client Registration (DCR,** [**RFC 7591**](https://datatracker.ietf.org/doc/html/rfc7591)**)**:

* **DCR-capable servers** — Duvo registers itself automatically. No Client ID or Secret required.
* **Servers without DCR** — Provide your own Client ID and Client Secret in the **Advanced settings** when setting up the Connection. Duvo displays the redirect URI you need to register on your OAuth provider.

You can also force the manual path if you'd rather use a pre-registered OAuth app instead of auto-registration.

## Related

* [Custom MCP connection page](https://github.com/duvoai/monorepo/blob/gitbook-prod/knowledge-base/connections/available-connections/custom-mcp.md) — the detailed setup walkthrough with every field and option
* [Building an MCP server for Duvo](/mcp/building-mcp-servers.md) — what to consider when implementing the server itself
* [Duvo MCP server](/mcp/duvo-mcp-server.md) — the other direction: connect MCP hosts to Duvo


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.duvo.ai/mcp/custom-mcp-servers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
