Skip to main content

Connect your AI agent (MCP)

mtdt.io exposes a remote MCP server, so any MCP-capable AI coding agent — Claude Code, Cursor, OpenAI Codex, OpenCode, and others — can run your Salesforce DevOps workflow: list orgs, create deployments, browse and retrieve metadata, run pre-deploy checks, validate with tests, and quick-deploy.

One endpoint, every client:

https://mcp.mtdt.io/mcp

Transport is Streamable HTTP. Authentication is OAuth 2.0 (authorization code + PKCE, with Dynamic Client Registration): your agent opens a browser, you sign in to mtdt and grant scopes on a consent screen. No API keys and no tokens to copy.

Requirements

  • An mtdt.io account with at least one connected Salesforce org.
  • MFA-enrolled mtdt accounts are not yet supported by the MCP connection (coming).

Claude Code​

The plugin bundles the MCP connection with two skills (mtdt-deploy, mtdt-troubleshoot):

/plugin marketplace add mtdt-io/mcp
/plugin install mtdt@mtdt

MCP server only, no skills:

claude mcp add --transport http mtdt https://mcp.mtdt.io/mcp

or in .mcp.json:

{
"mcpServers": {
"mtdt": {
"type": "http",
"url": "https://mcp.mtdt.io/mcp"
}
}
}

Claude Code requires the "type": "http" field — a bare url entry is skipped with a warning. To sign in: run /mcp inside a session and pick Authenticate, or claude mcp login mtdt.

Cursor​

Add mtdt to Cursor

Or manually in ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
"mcpServers": {
"mtdt": {
"url": "https://mcp.mtdt.io/mcp"
}
}
}

Cursor infers the remote transport from url (omit the type field) and starts the OAuth browser flow on first connection. Verify under Cursor Settings → MCP.

OpenAI Codex​

codex mcp add mtdt --url https://mcp.mtdt.io/mcp
codex mcp login mtdt

or in ~/.codex/config.toml:

[mcp_servers.mtdt]
url = "https://mcp.mtdt.io/mcp"

OAuth is the default when no bearer token is configured.

Known issue in Codex 0.143–0.146

Login fails with Authorization server response missing required issuer (openai/codex#31573): Codex's OAuth callback drops the RFC 9207 iss parameter its own validator then requires. Works again on 0.147.0 (verified end-to-end against this server, 2026-08-25). On an affected version, upgrade (npm install -g @openai/codex) or pin 0.141 — and check which -a codex for an older binary shadowing the new one.

OpenCode​

In opencode.json (project) or the global config:

{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mtdt": {
"type": "remote",
"url": "https://mcp.mtdt.io/mcp",
"enabled": true
}
}
}

OpenCode uses the mcp key with "type": "remote", detects the 401 and runs the OAuth flow automatically; trigger it manually with opencode mcp auth mtdt if needed.

The type field gotcha​

Copy-pasting one client's snippet into another silently fails — the required type differs:

ClientConfig keytype field
Claude CodemcpServersrequired, "http"
CursormcpServersomit
Codex[mcp_servers.*]none (inferred from url)
OpenCodemcprequired, "remote"

What your agent can do​

Read tools (the View / mtdt:read scope): list orgs and deployments, browse source metadata, deployment and task status, the pre-flight battery (preflight_deployment — the same checks a human gets in the Deploy modal), impact analysis, target-conflict checks, profile & permission warnings, record-backup recommendations, Apex test recommendations.

Write tools (the Run / mtdt:deploy scope, granted separately on the consent screen): create deployments, retrieve metadata, validate with tests, quick-deploy, run metadata backups. Long-running deploys are awaitable server-side (await_deploy_status), so agents follow a real deploy without busy-polling.

Built-in guidance for every client​

The server hands your agent the deployment playbook at connection time (the MCP instructions field): the standard flow — resolve the target, create or resume a deployment, browse and pick components, pre-flight, validate with tests, quick-deploy — plus the guardrails (confirm production targets, the 75% Apex coverage rule, how to wait on long operations). Any MCP client receives it; no plugin needed.

The same two playbooks are also served as MCP prompts, mtdt-deploy and mtdt-troubleshoot, for clients with a prompt picker (Claude Desktop, Cursor, Zed). The Claude Code plugin ships them as skills with a little more detail.

FAQ​

Does the agent bypass my team's permissions?​

No. Every MCP call runs under your mtdt user and your team roles. Approval-gated targets stay approval-gated, and deploy-capable tools refuse without the Run scope.

Which AI agents work with mtdt?​

Any client that supports remote MCP servers over Streamable HTTP with OAuth: Claude Code, Cursor, OpenAI Codex, OpenCode, Claude Desktop (via connectors), and more. The four above are verified end-to-end; for anything else, point it at https://mcp.mtdt.io/mcp.

Do I get the deployment know-how outside Claude Code?​

Yes. The playbook arrives with the connection as MCP instructions, and the mtdt-deploy / mtdt-troubleshoot prompts are available in any client that lists server prompts. The Claude Code plugin adds the same content as skills, so Claude applies it without being asked.

Do I need an API key?​

No. The connection uses OAuth: the agent opens a browser, you sign in to mtdt and approve the scopes. Revoke access at any time from your mtdt account.

Why does sign-in fail for my account?​

The most common cause today: MFA-enrolled mtdt accounts are not yet supported by the MCP connection. On Codex, also see the version caveat above.