Skip to main content
InfraGap.com Logo
Home
Getting Started
Core Concept What is a CDE? How It Works Benefits CDE Assessment Getting Started Guide Inner Loop vs Outer Loop Environment Drift Local vs Cloud CDEs for Startups
AI & Automation
AI Coding Assistants Agentic AI AI-Native IDEs Agentic Engineering AI Agent Orchestration AI Governance AI-Assisted Architecture Shift-Left AI LLMOps Autonomous Development AI/ML Workloads CDEs for Data Science GPU Computing
Agent Infrastructure
Agent Experience (AX) Agent Egress Control Computer Use Agents Agent Evals Agent Runbooks Agent Client Protocol AGENTS.md MCP Servers Git Worktrees Kubernetes Agent Sandbox Agent Fleets Agent Identity Prompt Injection Defense Agent Observability Context Engineering AI Code Review Bottleneck Headless Agents in CI Spec-Driven Development Agent Readiness Code Provenance
Implementation
Architecture Patterns DevContainers Advanced DevContainers Language Quickstarts IDE Integration CI/CD Integration Platform Engineering Developer Portals Container Registry Multi-CDE Strategies Remote Dev Protocols Nix Environments Hermetic Builds OpenTofu for CDEs Kubernetes Development
Operations
Performance Optimization High Availability & DR Disaster Recovery Monitoring Capacity Planning Multi-Cluster Development Troubleshooting Runbooks Ephemeral Environments Sandbox Environments Workspace Snapshots Database Branching
Security
Security Deep Dive Zero Trust Architecture Secrets Management Vulnerability Management Network Security IAM Guide Supply Chain Security Air-Gapped Environments AI Agent Security MicroVM Isolation Compliance Guide EU AI Act Cyber Resilience Act Data Residency Governance
Planning
Pilot Program Design Stakeholder Communication Risk Management Migration Guide Cost Analysis FinOps GreenOps Vendor Evaluation Training Resources Developer Onboarding Team Structure Platform Maturity Model Open Source CDEs AI Productivity Paradox Build vs Buy DevEx Metrics Productivity Engineering Industry Guides CDEs for Healthcare CDEs for Financial Services CDEs for Government Edge Development WebAssembly in CDEs
Resources
Tools Comparison State of CDEs 2026 Isolation Decision Tool Template Library
Learning Paths
All Paths Platform Engineer Security and Compliance Engineering Manager
Vendor Reviews
GitHub Codespaces Coder Ona Google Workstations Microsoft Dev Box Okteto Eclipse Che DevPod Daytona E2B
Head to Head
Coder vs Codespaces Coder vs Ona Ona vs Codespaces Coder vs Okteto Self-Hosted vs Managed E2B vs Daytona CDE Market Guide CDE vs Alternatives Case Studies Lessons Learned Glossary FAQ Sources & Citations

MCP Servers for Development Environments

Model Context Protocol servers stopped being a desktop configuration detail and became shared infrastructure. This covers the difference between a registry and a gateway, how to self-host one, and why the protocol's move to a stateless core is fundamentally a horizontal scaling story.

From Local Config File to Platform Concern

What MCP is, who governs it, and why platform teams now own it

The Model Context Protocol is an open protocol for connecting AI applications to external data and tools. It uses JSON-RPC 2.0 between hosts, clients, and servers, and it defines what a server may offer - resources, prompts, and tools - along with client-side features such as sampling, roots, and elicitation. The specification itself draws the comparison to the Language Server Protocol: standardize the integration once and the whole ecosystem stops writing bespoke connectors.

Two things about its governance are worth stating plainly, because both are commonly got wrong. MCP is no longer an Anthropic-controlled project: it is stewarded under the Linux Foundation, through the Agentic AI Foundation, and the project's own site carries the "a Series of LF Projects, LLC" notice. And it is licensed for anyone to implement, which is why competing vendors ship first-class support rather than treating it as a rival's format.

The shift that matters for this site is where these servers run. The original mental model was a developer's machine launching MCP servers as local subprocesses from a JSON config file. That works for one person and fails as an organizational pattern, because every laptop ends up holding its own credentials for internal systems, with no central record of which tools are reachable or who used them. The CNCF's platform engineering guidance for AI-native workloads reflects the correction, listing "model serving, MCP gateways, and agentic guardrails" among the capabilities a platform is expected to provide natively, alongside policy-as-code enforcement and registry governance.

Local subprocess

The server runs as a child process of the client and speaks over stdio. Simple, no network exposure, and appropriate for anything that operates purely on the local workspace, such as filesystem access scoped to the checkout.

Remote server

The server is an HTTP service that many clients connect to. This is where shared internal systems belong, because the credential lives in the service rather than being copied onto every machine that wants access.

Behind a gateway

Clients connect to one internal endpoint that fronts many servers, applying authentication, authorization, and logging in one place. This is the pattern that scales past a handful of enthusiastic early adopters.

Registry, Gateway, Runtime: Three Different Things

A distinction worth getting right before you buy or build anything

These three terms are used loosely, including by vendors, and conflating them leads to procurement decisions that do not deliver what was expected. The short version: a registry tells you a server exists, a gateway sits in the request path and enforces rules, and a runtime is whatever actually executes the server process. Adopting a registry provides discovery and no control whatsoever, which is the mistake most worth avoiding.

ComponentWhat it doesIn the request path?Solves
RegistryA catalog of available servers with metadata and install detailsNoDiscovery, versioning, curation of an approved list
GatewayA runtime proxy fronting many servers behind one endpointYesAuthentication, authorization, rate limits, audit, observability
RuntimeWhatever executes the server: a subprocess, container, or managed serviceIt is the endpointIsolation, resource limits, lifecycle, scaling

A registry entry is not a security review

Publication in any registry means a server was submitted, not that it was audited, and not that it is safe to point at your production database. If you maintain an internal catalog, the value comes from the review you perform before an entry is added, not from the catalog itself. The same caution applies to agent registries in the ACP ecosystem.

The Move to a Stateless Protocol Core

The change that turns MCP hosting into an ordinary scaling problem

The published specification revision is 2025-11-25. The next revision is dated 2026-07-28; it was locked as a release candidate on May 21, 2026, with beta SDKs published on June 29, 2026. Check the specification page for which revision is current when you read this, because the two are close together in the calendar.

The headline change in the 2026-07-28 revision is the elimination of the stateful core. The initialize and initialized handshake and the Mcp-Session-Id header are removed, along with protocol-level sessions entirely. Protocol version and client information move into request metadata instead. Under the previous design, a session pinned a client to one server instance, which is exactly the property that makes a service painful to operate at scale.

The maintainers' own framing

"A remote MCP server that previously needed sticky sessions, a shared session store, and deep packet inspection at the gateway can now run behind a plain round-robin load balancer, route traffic on an Mcp-Method header, and let clients cache tools/list responses for as long as the server's ttlMs permits."

Model Context Protocol blog, "The 2026-07-28 MCP Specification Release Candidate", May 21, 2026.

That is why this belongs on a site about development infrastructure rather than in a protocol changelog. Sticky sessions, a shared session store, and gateway-layer packet inspection are three separate pieces of operational machinery, each with its own failure modes, and the revision deletes the requirement for all of them. An MCP fleet stops being a special case and becomes an ordinary stateless HTTP service that any platform team already knows how to run, scale, and roll out.

The rest of the revision

A formal deprecation policy

Features move through Active, Deprecated, and Removed, with at least twelve months between deprecation and the earliest possible removal. For anyone deciding whether to build on the protocol, a published removal timeline is arguably worth more than any individual feature in the release.

Extensions become first class

An extensions framework adds formal identification, negotiation, and independent versioning, using reverse-DNS identifiers. This lets capabilities evolve on their own schedule instead of forcing everything through the core specification.

Tasks moves out of the core

Tasks graduates from an experimental core feature to an official extension, reshaped for stateless operation. Existing implementations need migration work, so if you have built on it, treat that as planned effort rather than an upgrade you can defer indefinitely.

Authorization hardening

Six protocol enhancement proposals tighten alignment with OAuth 2.0 and OpenID Connect. This matters most for remote servers fronting internal systems, which is precisely the deployment shape organizations are moving toward.

The honest caveat is that this is described by its own maintainers as the most substantial revision since launch, and it requires migration work. Servers, clients, and any gateway you operate all need to agree on a revision. If you are choosing a gateway now, the question to put to a vendor is not whether they support MCP but which specification revisions they support, and what their plan is for running mixed-version traffic during a transition.

Self-Hosting an MCP Gateway

What you get, what it costs, and what the client configuration looks like

From the client's perspective a gateway is unremarkable: one internal URL instead of a list of vendor endpoints and locally launched processes. That indirection is the entire point, because it means the set of reachable tools becomes a platform decision rather than the sum of what each developer happened to configure. A realistic mixed configuration keeps genuinely local, workspace-scoped servers as subprocesses and routes everything touching a shared system through the gateway.

// Client configuration: local server as a subprocess, shared
// systems routed through one internal gateway endpoint.
{
  "mcpServers": {
    "workspace-files": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem",
               "/workspace/payments-api"]
    },
    "issue-tracker": {
      "type": "http",
      "url": "https://mcp-gateway.internal.example/servers/issue-tracker"
    },
    "observability": {
      "type": "http",
      "url": "https://mcp-gateway.internal.example/servers/observability"
    }
  }
}

What a gateway buys you

  • One place to authenticate callers and authorize tool access
  • An audit trail of which tools were invoked, by whom, against what
  • Credentials held by the gateway rather than distributed to endpoints
  • Rate limiting and quotas on tools that hit expensive systems
  • Server changes roll out centrally, without touching every workspace

What it costs you

  • A new production dependency in the path of every agent action
  • A concentrated credential store, which is a high-value target
  • Version-skew management between clients, gateway, and servers
  • Ongoing curation work: someone must own the approved server list
  • Friction that pushes impatient developers back to local configs

That last cost is the one that quietly decides the outcome. A gateway only provides governance if it is the path of least resistance; if approving a new server takes weeks, developers will run it locally and the central record becomes fiction. Treat the approval workflow as part of the system you are designing, in the same way a good internal platform treats the paved path as a product rather than a mandate.

Credentials and the Security Surface

What the specification says implementors must handle themselves

The specification is candid that it cannot enforce its own security principles at the protocol level. It states that MCP "enables powerful capabilities through arbitrary data access and code execution paths," that tools "represent arbitrary code execution and must be treated with appropriate caution," and that tool descriptions and annotations "should be considered untrusted, unless obtained from a trusted server." Those are requirements handed to implementors, not guarantees the protocol provides.

Two categories of problem show up repeatedly in practice. The first is exposure: MCP servers reachable over the network with no authentication at all. Security researchers have reported scans finding these in significant and growing numbers through 2026; the specific counts vary by methodology and are worth treating as indicative rather than precise, but the class of problem is well established and the mitigation is not complicated. The second is the untrusted-content problem, where tool descriptions and returned data both enter the model's context and can carry instructions. A gateway helps materially with the first and only partially with the second.

Never distribute long-lived tokens

A static token copied into every workspace config cannot be scoped per user, is invisible in audit logs, and is unrevocable in practice. Terminate credentials at the gateway and issue short-lived, per-user tokens for the client hop.

Scope tools to least privilege

A server offering read access and one offering write access to the same system are different risk propositions. Split them, and grant the write variant deliberately rather than as a side effect of enabling the integration.

Log invocations, not just connections

Knowing a client connected tells you little. The useful record is which tool ran, with which arguments, on whose behalf, and what it returned - the same standard you would apply to any other privileged automation.

Pin server versions

A config that fetches the latest published package at launch means an upstream change reaches every workspace with no review. Pin versions and update them deliberately, as you would any other dependency in the supply chain.

Isolate the runtime

Third-party server code executing next to source and credentials deserves the same treatment as any untrusted workload. Container or microVM isolation with restricted egress is the appropriate default.

Keep a human in the loop for writes

The specification expects hosts to obtain explicit consent before invoking a tool. For irreversible actions, keep that approval rather than configuring it away for convenience during a pilot and then forgetting.

A Reasonable Sequence

Steps that hold regardless of which specification revision you land on

1. Inventory what is already running

Most organizations have MCP servers in use before anyone decides to adopt MCP, configured individually by developers. Find out which servers are configured, against which systems, with which credentials. This is usually the step that produces the surprises.

2. Separate local from shared

Servers that only touch the workspace can stay as local subprocesses indefinitely; they carry no shared credential and little central value. Anything reaching an internal system is the candidate for centralization. Do not migrate everything on principle.

3. Route shared servers through one endpoint

Start with the two or three servers that matter most rather than a complete platform. Verify that authentication, authorization, and invocation logging genuinely work end to end before expanding the catalog.

4. Plan for the revision boundary

Record which specification revision each client, gateway, and server speaks, and confirm your gateway's position on running mixed versions. If you use Tasks, budget the migration to the extension form explicitly.

5. Design the approval path as a product

Decide who reviews a new server, against what criteria, and how long it should take. A governance process nobody can navigate produces shadow configuration, which is strictly worse than the decentralized state you started from.