mpl

Compare

mpl vs MCP

Short version: MCP is a transport protocol for agent–tool communication. mpl is a contract / quality / audit layer that runs on top of MCP (or A2A, or plain HTTP). They are not substitutes.

The mpl README puts the stack diagram explicitly: mpl sits above MCP, between your agent logic and the transport. The proxy speaks MCP on the wire; the contracts and quality measurement happen in the layer above.

Fair side-by-side

MCP mpl
Layer in the stack Transport & capability protocol (client-server) Protocol layer above the transport
Primary concern How an agent discovers and invokes tools, resources, prompts Typed contracts, quality measurement, audit trails for those invocations
Type system JSON-Schema tool inputs/outputs, declared per-tool Versioned stype identifiers in a shared registry; same envelope across tools
Quality scoring Not in scope QoM profiles: schema fidelity, instruction compliance, groundedness, determinism, ontology adherence, tool outcome
Audit / provenance Not in scope (clients can log) BLAKE3 content hash, provenance block, QoM report on every envelope
Deployment shape Server you run; client library in the agent Sidecar proxy in front of the MCP server; transparent or strict mode
Cross-namespace policy Per-tool, declared by the tool server Glob-pattern policies (e.g. org.finance.*) at the proxy boundary
Substitutable? No — MCP is the transport No — mpl composes over MCP, doesn’t replace it

When MCP alone is enough

If you’re building a single-agent system, the messages are short-lived, nothing downstream needs forensic auditability, and “the tool either returned a value or raised” is all the validation you need — MCP on its own is fine. Don’t add a layer for a problem you don’t have.

When you also want mpl

How they run together

Agent ──(MCP)──▶ mpl proxy ──(MCP)──▶ Your MCP server
                     │
                     ├── validates contract
                     ├── scores QoM profile
                     ├── applies policy
                     └── writes audit record

Sources

Spot something inaccurate? Open an issue.