aicode8
AI AgentsUpdated: 2026-09-10

MCP architecture: layered patterns for high-concurrency edge apps

The edge-delivery view of MCP's layering and data flow.

On this page

Quick answer

Can MCP stdio and HTTP transports be mixed?

No — one Server picks one transport. Remote endpoints must use Bearer auth with the scope minimized to read-only, or you are effectively shipping your source naked.

Machine-readable page data: /data/mcp-architecture.json

In-depth analysis

MCP (Model Context Protocol) is an open standard released in 2024 that lets large language models connect to tools and data sources through one uniform protocol. Write a Server once and any MCP-compatible agent (Claude Desktop, Cursor) discovers and calls it. Architecture should be edge-first — static pre-render sinks to the edge, dynamic capability falls back to functions with circuit breakers.

MCP · Config example
// mcp-server.ts — @modelcontextprotocol/sdk ^1.0 stdio read-only Server
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

const server = new McpServer({ name: 'docs-readonly', version: '1.0.0' });
server.tool('read_doc', { path: schema.string() }, async ({ path }) => {
  // scope is minimized to read-only — never expose write or full filesystem access
  return { content: [{ type: 'text', text: readAllowed(path) }] };
});

const transport = new StdioServerTransport();
await server.connect(transport);

// Client registration in claude_desktop_config.json:
// "mcpServers": { "docs": { "command": "node", "args": ["mcp-server.ts"] } }
Best practices:Static pre-rendering sinks to the edge; dynamic capability falls back to functions with circuit breakers. Third-party calls get timeouts and circuit breakers so a single failure cannot take the site down.
Pitfalls:stdio and SSE/HTTP transports cannot be mixed on the same Server. Remote endpoints must use Bearer auth with the scope minimized to read-only — otherwise you are effectively shipping your source code naked. Declare the tool list explicitly rather than exposing blanket file-read permissions. Every third-party call needs a timeout and circuit breaker — otherwise a single failure takes the whole site down.

MCP Architecture · Key takeaways

  • Static and dynamic boundaries defined
  • Third-party calls wrapped in circuit breakers
  • Environment config separated from code
  • Boundary contracts documented

FAQ & pitfalls

How do I authenticate an MCP Server deployed at the edge?

Remote MCP uses Bearer-authenticated SSE or HTTP, with scope limited to read-only tools. Local stdio stays off the network — never expose it to avoid privilege escalation.

Share & save

My shelf0
← Back to homeTopic: Mcp Architecture

What readers are asking

Questions that keep coming back in reader feedback, already answered.

  1. 01
    Can one MCP server speak both stdio and HTTP?

    No — a server picks a single transport. A remote endpoint must carry Bearer auth and scope its tools to read-only, otherwise you are exposing source execution to the public internet.

    See the full guide →
  2. 02
    How should auth work when an MCP server runs at the edge?

    Remote MCP goes over SSE or HTTP with a Bearer token, and tools get read-only scope; local stdio is never network-exposed. Do not put both transports behind the same server.

    See the full guide →
  3. 03
    Why is my Astro component's interactivity not working?

    Components ship as zero-JS HTML by default, so an interactive one needs a client:* directive (client:load, client:visible, …). Without it the script is never bundled into the page.

    See the full guide →
All questions →

Follow along as I build with AI

Get the honest, real-time record: what I build, what breaks, and what I learn — from a non-technical founder. No jargon, no fluff.

We respect your inbox. One click to unsubscribe, anytime.