MDRN MCP server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MDRN MCP serverroll back the checkout service in production to the last release"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MDRN MCP server
@mdrnio/mcp-server gives an AI assistant MDRN's workspaces, projects, products, builds, releases
and logs, and a few safe changes: deploy a connected repository, roll back, turn a product on or
off, set or unset a service variable, create a service. Nothing it offers deletes a service, a
product's data or a domain.
The same tools are served two ways:
Hosted (streamable HTTP, MCP protocol 2025-06-18) at
https://mcp.mdrn.io/mcp(development stage:https://development.mcp.mdrn.io/mcp). You sign in with MDRN (OAuth 2.1) and choose one workspace and the scopes the assistant gets.Local (stdio):
npx -y @mdrnio/mcp-server, signed in as you are on this machine (below).
Install (local)
The local server needs Node.js 20 or later; npx -y @mdrnio/mcp-server fetches it on first use
and runs it, so there is nothing else to install. Sign in once with mdrn login
(npm install -g @mdrnio/cli), or set MDRN_API_TOKEN to a management token (a workspace Admin
creates one in the console under Settings, Tokens).
With
mdrn login, the server uses the CLI profile (MDRN_PROFILE, ordefault) and its origin: the sign-in's access token, refreshed by the CLI's own code when it is about to expire or once after MDRN refuses it, somdrn logoutends this server's access too.MDRN_API_TOKENwins when set, with optionalMDRN_API_ORIGIN(defaulthttps://api.mdrn.io; https only, except a development server on localhost).
Claude Desktop (claude_desktop_config.json, Settings, Developer, Edit Config):
{
"mcpServers": {
"mdrn": {
"command": "npx",
"args": ["-y", "@mdrnio/mcp-server"]
}
}
}Cursor (.cursor/mcp.json in the project, or ~/.cursor/mcp.json for every project):
{
"mcpServers": {
"mdrn": {
"command": "npx",
"args": ["-y", "@mdrnio/mcp-server"]
}
}
}Claude Code: claude mcp add mdrn -- npx -y @mdrnio/mcp-server.
To use a management token instead of the sign-in, add "env": { "MDRN_API_TOKEN": "mdrn_mgmt_..." }
to the entry (Claude Code: claude mcp add mdrn -e MDRN_API_TOKEN=mdrn_mgmt_... -- npx -y @mdrnio/mcp-server).
On Windows, a client that starts the command itself (not through a shell) needs npx run
through cmd:
{
"mcpServers": {
"mdrn": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@mdrnio/mcp-server"]
}
}
}Related MCP server: butterstack
Connect (hosted)
Claude.ai (and Claude Desktop): Settings, Connectors, Add custom connector, URL
https://mcp.mdrn.io/mcp. Claude opens MDRN's sign-in, then the consent page: pick the workspace and tick the scopes.ChatGPT: Settings, Connectors (developer mode), Create, URL
https://mcp.mdrn.io/mcp, authentication OAuth; the same sign-in and consent follow.Claude Code:
claude mcp add --transport http mdrn https://mcp.mdrn.io/mcp, then/mcpto sign in.
A connection is listed in the console under Settings, Tokens, Connected apps, where Revoke ends it at once: the next tool call answers 401 and the client asks you to sign in again.
Tools
Tool | Arguments | Does |
| optional | The workspaces this credential reaches, with your role in each (their ids are what the other tools take) |
|
| The workspace's projects you are authorized for |
|
| Product state in one project environment |
|
| The app hostnames with sign-in registered, and whether it is on |
|
| A durable operation; pending is not success |
|
| Workspace billing state (never opens checkout) |
|
| Raw and normalized usage, optionally one period statement |
|
| Deployment services in the environment |
|
| One deployment |
|
| Custom domains with their DNS records and state, and the workspace quota (adding one is not available here) |
|
| One exact allowlisted inspection route (the reads above it, and the trace below) |
|
| A service's builds and the artifact each produced |
|
| One build's progress and artifact |
|
| A build's output, while it runs or after |
|
| A service's releases (their artifacts are what a rollback publishes) |
|
| Every release attempt for a service |
|
| Searches the environment's application logs |
|
| Every log item of one request across the environment's services, joined on its trace id |
|
| Write (deploy:write): builds and releases what the connected branch holds now |
|
| Write (deploy:write): releases an earlier artifact again |
|
| Write (the product's write scope, workspace Admin): turns a product on |
|
| Write (the product's write scope, workspace Admin): turns a product off, keeping its data |
|
| Write (deploy:write): sets a service variable; the value is never shown again |
|
| Write (deploy:write): removes a service variable |
|
| Write (deploy:write): creates a deployment service |
environmentId is sandbox or production; product is database, storage, mail, logs
or auth. Tool schemas reject unknown arguments. Every write sends an Idempotency-Key: the
idempotencyKey you pass (repeat it to retry safely), or a fresh one per call. Writes are
annotated readOnlyHint: false, destructiveHint: false; reads readOnlyHint: true.
Behaviour
API requests have a 10-second deadline and reject redirects. Login, checkout, arbitrary URLs and
private routes are excluded, and mdrn_get reads only its allowlist. The bearer is redacted from
output, but authorized API data is returned to the client; grant the least scopes required.
The local server sends the sign-in's access token (or the management token) to the API and
nothing else; when the API answers 401 to a sign-in's token, the token is refreshed once and the
call sent again only if the refresh gave a new one. A sign-in that has ended answers each tool
call with what to do (mdrn login); a server started before mdrn login picks the sign-in up on
its next call.
The hosted server is stateless (one JSON answer per POST, no SSE stream or session; GET and
DELETE answer 405) and holds no credential. A request without a bearer answers 401 with
WWW-Authenticate: Bearer resource_metadata="https://mcp.mdrn.io/.well-known/oauth-protected-resource/mcp";
that metadata (RFC 9728) names MDRN's API (https://api.mdrn.io) as the authorization server.
Every request's token is checked with Platform first: one unknown, expired, revoked or issued for
another resource answers 401 invalid_token. A tool needing a scope the connection was not
granted answers a tool error insufficient_scope without calling MDRN. The checked token is then
sent to MDRN's API, which enforces its workspace, role and scopes on every call; it was issued by
that same API for this server, so nothing is exchanged. A browser page of another origin is
refused (403).
Source: src/server.js (the tools, shared), src/stdio.js (the package's mdrn-mcp command,
which reads the CLI profile through @mdrnio/cli/config), src/worker.js (released as the mcp
Worker of each stage, wrangler.<stage>.jsonc; not part of the npm package).
Guide: https://mdrn.io/docs/mcp/
Contributing
This repository is a mirror: the code is published here from MDRN's main repository on every release, where it is tested together with the console, the API and the SDKs. Issues are welcome here. Pull requests are reviewed here and merged in the main repository, from where the next release brings them back.
This server cannot be deployed
Related MCP Connectors
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Give your AI agents trusted access to the full Postman platform.
- HAVNOAuthapp.havnre
Read-only AI access to HAVN properties, leads, tasks, files, media, and analytics.
Governed memory and workspace for any AI: tasks, calendar, mail and pages, with per-action consent.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to interact with Replit workspaces directly, including managing repls, file operations, environment variables, and deployments without constant user intervention.244-

butterstackofficial
AlicenseNot gradedqualityAmaintenanceGrants AI assistants read/write access to your ButterStack game dev pipeline, including tasks, builds, asset approvals, and project status through MCP.6 npmMIT- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to build and manage Genesys Cloud resources such as queues, skills, users, wrap-up codes, Architect flows, and outbound campaign cadences, while deliberately preventing deletes and leaving campaigns off until humans start them.-
- AlicenseAqualityBmaintenanceEnables AI assistants to access Saxo Bank portfolio data, account balances, positions, orders, transactions, and market data such as instruments, quotes, and charts. It is read-only by default, with trading tools available only when explicitly enabled.10MIT