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

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. Until the fix ships, use Codex 0.141 (npm install -g @openai/codex@0.141.0; check which -a codex for a newer binary shadowing it).

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, 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.

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 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.