Composing MCP Servers
Composition merges tools from one or more template MCP servers into a private endpoint you own. Your AI client calls one MCP URL; the platform resolves that to a single bundle_id and serves the union of included tools.
Why compose?
| Approach | URLs in your AI config | Tool set | Connections configured on |
|---|---|---|---|
| Several workspace servers | One URL per server | Each server’s tools only | Each server’s detail page |
| One composed private server | One URL | Tools from every included template | The composed server’s Connections section |
Hub (/hub/) | One URL | Dynamic across enabled servers | Per-server as you enable them |
Compose when you want a fixed, curated tool surface in Direct mode (under the 100-tool rule). Use the Hub when you want one URL and dynamic discovery. See The Hub and Execution modes.
How composition works (backend)
When template server A is included in private server B:
- Tools by reference — A’s tools are not copied; they are linked through
bundle_template_links. Updates on A flow to B. - One MCP URL — Clients call B’s URL (
https://mcp.mcpbundles.com/bundle/{slug}). Every tool invocation is scoped to B’s bundle id. - Connections on B — Credential injection uses
UserBundleProviderCredentialrows on the composed server, not bindings on the original catalog copy of A. Connect Stripe, CRM, etc. on B’s page under Connections. - Auto-bind after include — When a template is added, the platform may bind one verified workspace credential per required provider onto B. If you have zero or more than one verified credential for that provider, nothing is auto-selected; the header shows Connect or Fix connections until you pick bindings on B.
- Same credential, two rows — You can bind the same saved credential on both a catalog server and a composed server; those are separate binding rows. The composed URL only sees bindings attached to its bundle id.
- Stacks — B can include many templates (e.g. CRM + email + payments).
Dedicated servers vs multi-include stacks
| Pattern | What it is |
|---|---|
| Dedicated server | Composition with one child template — own name, URL, and connections. Listed under Dedicated servers on the parent. See Accounts and dedicated servers. |
| Multi-include stack | One private URL with several templates (e.g. “Sales Ops”). Same connection rules: everything is configured on that composed server. |
| Multiple accounts, one URL | Attach more than one connection for the same provider on the composed server; agents disambiguate when N>1. Same as any MCP server — see Accounts and dedicated servers. |
What you can do in the dashboard today
Composition is supported in the product (include, remove, MCP calls, auto-bind). Some self-serve “add include” buttons are temporarily hidden while the Studio-centric IA is refined.
| Action | Status |
|---|---|
| View Included MCP Servers on a private server | Available |
| Remove an included server | Available (Remove on each card) |
| Add another template from the bundle page | Add MCP Servers / empty-state add controls are commented out on the server page; catalog Add MCP Server (include into existing private server) is also commented out |
| Add external MCP by URL | Use Add remote MCP URL on MCP Servers (separate from template composition) |
| Connect providers for composed tools | Connections on the composed server — always the source of truth |
If you already have a composed server, open it, finish Connections there, and use Quick Setup for your AI host. To extend includes when the UI returns, the underlying flow is addBundleToComposition (browse providers/servers in the add dialog and include whole template bundles — not a global per-tool checklist).
For creating an empty private server first, see Creating custom MCP servers — note the list header does not expose Create until those flows are re-enabled.
Example: Sales operations stack (mental model)
Goal: One MCP URL for CRM, email, billing, and chat.
- Create or open a private MCP server (e.g. “Sales Ops”).
- Include template servers for each service (when the add-include UI is available, or via existing composed servers you already have).
- On Sales Ops, open Connections and Connect each provider (CRM, email, etc.) on this server — not only on the original catalog pages.
- Wait for Ready, then copy the MCP URL from Quick Setup.
https://mcp.mcpbundles.com/bundle/sales-ops-a3f
Until include-from-catalog is visible again, many teams use the Hub for cross-service workflows or run separate URLs per catalog server.
Execution mode
Composed servers follow the same rules as other servers:
- Under 100 tools — Direct mode allowed
- Over 100 tools — Dynamic mode required
See Execution modes.
Composition vs Hub
Composed private server
- Fixed includes you (or your workspace) chose
- Direct mode when tool count allows
- Connections maintained on that bundle
Hub
- Dynamic discovery and execution across enabled servers
- One URL, no manual include list
Related
- Understanding MCP servers — readiness, URLs, accounts, dedicated servers
- Creating custom MCP servers
- Add a remote MCP URL
- Connecting your AI