the recordCopied from the official MCP registry, exactly as it holds it.
{
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "ai.midplane/midplane",
"description": "Safe-by-default SQL guardrails for AI agents: AST-checked queries, per-table policy, audit log.",
"title": "Midplane",
"repository": {
"url": "https://github.com/midplaneai/midplane",
"source": "github",
"subfolder": "engine/packages/mcp-server"
},
"version": "0.19.0",
"websiteUrl": "https://midplane.ai/docs",
"packages": [
{
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"identifier": "midplane",
"version": "0.19.0",
"runtimeHint": "npx",
"transport": {
"type": "stdio"
},
"packageArguments": [
{
"value": "server",
"type": "positional",
"valueHint": "subcommand"
},
{
"type": "named",
"name": "--stdio"
}
],
"environmentVariables": [
{
"description": "Postgres connection string the agent's queries run against. Give it a least-privilege role: Midplane constrains what SQL is allowed, it does not widen or narrow what the role itself can reach.",
"isRequired": true,
"format": "string",
"isSecret": true,
"name": "DATABASE_URL"
},
{
"description": "Path to a policy YAML granting per-table read/read_write access, tenant scoping, and column masking. Omit for the safe default: reads allowed, writes and DDL denied. Generate one with `npx midplane init`.",
"format": "filepath",
"name": "MIDPLANE_POLICY_FILE"
},
{
"description": "Where the local SQLite audit log is written. Defaults to ~/.midplane/audit.db; read it back with `midplane audit denies`.",
"format": "filepath",
"name": "DB_PATH"
},
{
"description": "Set to 0 to disable anonymous usage telemetry (DO_NOT_TRACK=1 also works). Never includes SQL, table or column names, or identifiers.",
"default": "1",
"choices": [
"1",
"0",
"debug"
],
"name": "MIDPLANE_TELEMETRY"
}
]
},
{
"registryType": "oci",
"identifier": "docker.io/midplane/midplane:0.19.0",
"runtimeHint": "docker",
"transport": {
"type": "streamable-http",
"url": "http://localhost:8080/mcp"
},
"environmentVariables": [
{
"description": "Postgres connection string the agent's queries run against. Pass it with --env-file, never with an inline -e: a DSN on the docker command line leaks the password to `ps aux` and your shell history.",
"isRequired": true,
"format": "string",
"isSecret": true,
"name": "DATABASE_URL"
},
{
"description": "Path (inside the container) to a policy YAML granting per-table read/read_write access, tenant scoping, and column masking. Omit for the safe default: reads allowed, writes and DDL denied.",
"format": "filepath",
"name": "MIDPLANE_POLICY_FILE"
},
{
"description": "Port the Streamable HTTP transport binds. Must match the url above if changed.",
"default": "8080",
"name": "PORT"
}
]
}
]
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"statusChangedAt": "2026-08-19T11:23:21.892159Z",
"publishedAt": "2026-08-19T11:23:21.892159Z",
"updatedAt": "2026-08-19T11:23:21.892159Z",
"isLatest": true
}
}
}
Make it installable
Draft an Agent Plugin from this
An MCP server is raw capability: some tools, wired to something. An Agent Plugin is the packaging that says what job it does, what it leaves behind and where it stops. The prompt below carries this record and asks for the packaging; your own assistant writes it, and nothing here is sent anywhere.
What this is
MCP server
application/mcp-server-record+jsonlocal · you run it yourselfversion 0.19.0last seen 2026-08-23
These are the publisher's own words, filed by them with the official MCP registry and mirrored here. This catalog did not read them from the publisher and has not run, called or installed anything.