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
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.
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:
| Client | Config key | type field |
|---|---|---|
| Claude Code | mcpServers | required, "http" |
| Cursor | mcpServers | omit |
| Codex | [mcp_servers.*] | none (inferred from url) |
| OpenCode | mcp | required, "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.