Skip to main content
Managed Deep Agents use connectors to load tools from remote MCP servers. Declare the MCP servers in connectors/mcp.ts or connectors/mcp.py, export a named mcp declaration, and MDA loads those tools into the agent at runtime.
Managed Deep Agents is in private beta, available on LangSmith Cloud in the US region only. Join the waitlist to request access.
The current mda CLI does not include workspace MCP server management commands. Do not use older deepagents mcp-servers ... examples for Managed Deep Agents projects. For MCP tools, use the connectors/ project convention documented here.

Add a connector

Add connectors/mcp.py or connectors/mcp.ts next to your agent entry file. For the full project layout, see the CLI project file reference. The connector module must export a named mcp declaration.
from managed_deepagents.connectors import define_mcp_servers

mcp = define_mcp_servers(
    mcp_servers={
        "langchainDocs": {
            "transport": "http",
            "url": "https://docs.langchain.com/mcp",
        },
    },
)
import { defineMcpServers } from "managed-deepagents";

export const mcp = defineMcpServers({
  mcpServers: {
    langchainDocs: {
      transport: "http",
      url: "https://docs.langchain.com/mcp",
    },
  },
});
You do not import MultiServerMCPClient or call getTools() / get_tools() yourself. mda discovers the connector module, injects the MCP adapter dependency into the compiled build, creates the client in the managed runtime, loads the tools, and appends them to the authored tools from agent.ts or agent.py.

Supported servers

Connectors support remote MCP servers only:
TransportUse
httpStreamable HTTP MCP servers.
sseLegacy SSE MCP servers.
Stdio MCP servers are not supported in connectors. If a server needs local process management, expose it over HTTP/SSE or wrap the behavior as a normal authored tool.

Configure server options

Each server key is the logical server name MDA uses for validation, tracing metadata, and tool-name prefixing. Server configs can include static headers. Connectors do not run an OAuth authorization flow. If an MCP server requires OAuth, provide a pre-provisioned access token or another static credential through headers. Store the token in .env so mda dev can load it locally and mda deploy can forward it as a hosted deployment secret. The connector module is normal project code, so read secrets as environment variables with os.environ in Python or process.env in TypeScript. You do not import the .env file directly.
import os

from managed_deepagents.connectors import define_mcp_servers

mcp = define_mcp_servers(
    mcp_servers={
        "github": {
            "transport": "http",
            "url": "https://example.com/mcp",
            "headers": {
                "Authorization": f"Bearer {os.environ['GITHUB_MCP_TOKEN']}",
            },
        },
    },
)
import { defineMcpServers } from "managed-deepagents";

export const mcp = defineMcpServers({
  mcpServers: {
    github: {
      transport: "http",
      url: "https://example.com/mcp",
      headers: {
        Authorization: `Bearer ${process.env.GITHUB_MCP_TOKEN}`,
      },
    },
  },
});
Do not commit MCP tokens, API keys, OAuth access tokens, or passwords. Put local values in .env; mda dev loads them for local development, and mda deploy forwards non-reserved .env values as hosted deployment secrets.

Connector defaults

MDA applies managed defaults when it loads connector tools:
OptionDefaultDescription
prefixToolNameWithServerName / prefix_tool_name_with_server_nametruePrefix MCP tool names with the server name, for example github__search, to avoid collisions.
throwOnLoadError / throw_on_load_errortrueFail when tools cannot be loaded instead of starting with a partial tool surface.
useStandardContentBlocks / use_standard_content_blockstrueConvert MCP tool outputs to standard LangChain content blocks. Python connectors currently require the default true value.
onConnectionError / on_connection_error"throw"Fail when a server cannot be reached. "throw" is the only supported value.
Disable tool-name prefixing only when you know the MCP tool names do not collide. MDA validates duplicate MCP tool names when prefixing is disabled.

Combine connectors with authored tools

Connector tools are appended to the tools you define in the agent file. Use custom tools for project-owned code and custom middleware for cross-cutting behavior around model calls, tool calls, lifecycle hooks, retries, limits, and data handling.

Test and deploy

Test the project locally with mda dev, then deploy it with mda deploy. Open deployment traces in LangSmith to inspect model calls, tool calls, errors, and latency. Connector misconfiguration surfaces during local startup or first tool load, depending on when the runtime reaches the MCP server.

Next steps

Deploy an agent

Run and deploy the connector-enabled agent.

CLI reference

Look up mda dev and mda deploy flags.