MCP Server Architect (Modern AI Tools & Agentic Protocol)
English
Orchestration & Integration
- Upstream AI Models & Protocol:
ai-llm-integration-expert,frontier-ai-models-expert,mcp-sampling-critic - Agent Clients & Swarms:
multi-agent-orchestration,parallel-tool-orchestrator,gemini-agent-booster - Domain Server Implementations:
doku-mcp-server,xerj-search-expert,database-orm-expert - Security & Authorization:
zero-trust-secret-vault,authentication-identity-expert,prompt-injection-firewall - Lifecycle & Governance:
zero-to-prod-orchestrator,session-memory-manager,anti-slop
Description
Ultimate architectural guide for engineering high-performance, production-ready AI Tools/Bots via the Model Context Protocol (MCP v1.x). Enforces the use of FastMCP (Python) and @modelcontextprotocol/sdk (TypeScript). Mandates strict security guardrails, schema validation, stateful resource streaming, and support for both Standard Stdio and Streamable HTTP / Server-Sent Events (SSE) transports.
Trigger Conditions
- Building an MCP server to expose tools, resources, or prompt templates to AI agents.
- Integrating backend APIs, file systems, or databases as MCP agent tools.
- Implementing stateful, real-time MCP servers (resource subscriptions, log tailing, live metrics).
- Securing and auditing MCP servers exposing sensitive financial or production data.
SDK Selection (Mandatory Standard)
- Python:
FastMCP(FastAPI-like high-level DX for MCP tools, resources, and prompt templates). - TypeScript:
@modelcontextprotocol/sdk(official SDK using theMcpServerhigh-level abstraction withzod).
Production Implementation Recipes
Recipe 1: Production TypeScript MCP Server (Streamable HTTP / SSE)
typescriptimport { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import express from 'express'; import { z } from 'zod'; // Initialize the high-level MCP Server const server = new McpServer({ name: 'enterprise-analytics-mcp', version: '1.0.0', }); // Register a type-safe Tool with Zod validation server.tool( 'calculate_metrics', 'Calculates business analytics metrics across timeframes', { metricName: z.enum(['arr', 'churn', 'cac', 'ltv']).describe('The metric to compute'), quarter: z.string().regex(/^Q[1-4]-202[0-9]$/).describe('Target quarter, e.g., Q1-2026'), }, async ({ metricName, quarter }) => { // Implement business logic with database access const mockData = { arr: '$2.4M', churn: '1.2%', cac: '$450', ltv: '$9,200' }; return { content: [ { type: 'text', text: JSON.stringify({ metric: metricName, quarter, value: mockData[metricName] }), }, ], }; } ); // Register a Resource Template with dynamic URI server.resource( 'system_health', new ResourceTemplate('system://health/{service}', { list: undefined }), async (uri, { service }) => { return { contents: [ { uri: uri.href, text: JSON.stringify({ service, status: 'HEALTHY', latencyMs: 14, timestamp: new Date().toISOString() }), }, ], }; } ); // Expose via Express with SSE Transport const app = express(); let transport: SSEServerTransport | null = null; app.get('/sse', async (req, res) => { transport = new SSEServerTransport('/messages', res); await server.connect(transport); }); app.post('/messages', async (req, res) => { if (transport) { await transport.handlePostMessage(req, res); } else { res.status(400).send('Transport not established'); } }); app.listen(3001, () => { console.log('MCP Server listening on http://localhost:3001/sse'); });
Recipe 2: Production FastMCP Server (Python)
pythonfrom fastmcp import FastMCP, Context from pydantic import BaseModel, Field from typing import Literal mcp = FastMCP("enterprise-vault-mcp", dependencies=["pydantic"]) class QueryParams(BaseModel): account_id: str = Field(..., description="UUID of customer account") status_filter: Literal["active", "suspended", "all"] = Field("active", description="Status filter") @mcp.tool(name="fetch_account_summary", description="Retrieves account telemetry and balance") async def fetch_account_summary(params: QueryParams, ctx: Context) -> str: ctx.info(f"Auditing request for account: {params.account_id}") # Secure business logic with RLS validation result = { "account_id": params.account_id, "balance_usd": 125430.50, "tier": "enterprise", "status": params.status_filter } return str(result) @mcp.resource("config://app-settings") def get_app_settings() -> str: """Provides application configuration context to the agent.""" return '{"environment": "production", "rate_limit_rpm": 600, "region": "ap-southeast-1"}' if __name__ == "__main__": # Runs standard Stdio transport or streamable HTTP mcp.run(transport="stdio")
Security & Operational Guardrails
- OAuth 2.1 & Bearer Authentication: Bind session tokens to transport connections. Validate claims before executing any tool logic.
- Schema Strictness: Never use untyped payloads. Every argument must have explicit types, range constraints, and descriptions to guide LLM tool-calling accuracy.
- Row-Level Security (RLS): Enforce tenant and user context propagation to the database layer.
- Circuit Breakers & Rate Limits: Cap consecutive tool executions per agent turn to prevent endless agentic recursive loops.
- Idempotency: All destructive or state-mutating tools must require an
idempotency_keyargument.
Agent MCP Client Consumption & Tool Discovery
When acting as an AI Agent consuming external MCP servers:
- Dynamic Tool Discovery: Check
list_resourcesormcp_config.jsonbefore assuming external capabilities do not exist. - Defensive Schema Querying: Never guess database schema or table names. Always execute
list_tablesorget_schemabefore generating SQL queries (execute_sql). - Cross-System Workflow Loop: Dynamically chain tools across domains: GitHub MCP (find issue) ->
grep_search(locate file) ->autonomous-tdd-debugger(test & fix) -> GitHub MCP (create PR). - Rate Limit Awareness: Avoid rapid unthrottled loops against external MCP servers.
High-Throughput / Batched MCP Tool Execution (Gemini 4 Pro Readiness & Fallback)
- Ensure your MCP endpoints can handle Massive Parallel Tool Execution as models shift towards Agentic MoE architectures (Gemini 4 Pro / Gemini 4 Argon, Claude Opus 5.5).
- Availability Fallback Invariant: When orchestrating multi-tool agent loops:
- Automatically and seamlessly degrade tasks from Gemini 4 (
Argon&Pro) toGemini 3.8 Flashif Gemini 4 is unprovisioned, rate-limited, or unavailable (preserving native parallel tool call execution, sub-100ms TTFT, and 1M+ context window). - Automatically and seamlessly degrade tasks from Claude Opus 5.5 to
Claude Opus 4.6if unprovisioned or rate-limited. - Zero disruption: MCP tool dispatchers must execute immediately through fallback paths without throwing unhandled missing-model errors.
- Automatically and seamlessly degrade tasks from Gemini 4 (
- Implement parallel sub-processing in tools that expect to be called concurrently (e.g., using
Promise.allorasyncio.gatherfor batch database queries instead of blocking sequentially).
Sovereign Execution, Token Efficiency & Invariants
| Dimension | Sovereign Mandate & Deterministic Contract |
|---|---|
| Frontier Model Cascade | Medium / High (GPT-5.6 Sol Medium, Gemini 4 Argon, Claude Sonnet 5.5 High, Grok 4.7 High Fast) |
| Availability Fallback | Gemini 4 Argon/Pro -> Gemini 3.8 Flash; Claude Opus 5.5 -> Claude Opus 4.6 (Zero unhandled missing-model errors) |
| KV-Cache & Token Protocol | Pin static instructions & schemas at prompt prefix (kv-cache-prefix-optimizer); pass surgical CONTEXT_MAP.md slices (<250 tokens/call) during Swarm Fan-Out |
| SaaT CLI & MCP Dispatch | CLI: vibes skill exec mcp-server-architect <audit|eval|verify|generate|blueprint> / MCP: vibes_skill_dispatch, vibes_ast_query, vibes_compile_cache, vibes_optimize_budget, vibes_verify_gate |
| NFR & Anti-Slop Invariants | P99 API Gateway Latency < 85ms, OpenAPI 3.1 / TypeSpec strict schema parity, RFC 9457 Problem Details error contracts, Idempotency-Key enforcement; 100% complete zero-placeholder output verified via node scripts/check-anti-slop.js --strict |
Bahasa Indonesia
Integrasi Orkestrasi
- Model AI & Protokol Hulu:
ai-llm-integration-expert,frontier-ai-models-expert,mcp-sampling-critic - Klien Agen & Swarm:
multi-agent-orchestration,parallel-tool-orchestrator,gemini-agent-booster - Implementasi Server Domain:
doku-mcp-server,xerj-search-expert,database-orm-expert - Keamanan & Otorisasi:
zero-trust-secret-vault,authentication-identity-expert,prompt-injection-firewall - Siklus Hidup & Tata Kelola:
zero-to-prod-orchestrator,session-memory-manager,anti-slop
Deskripsi
Panduan arsitektur utama untuk membangun AI Tools/Bots modern dan siap produksi via Model Context Protocol (MCP v1.x). Mewajibkan penggunaan FastMCP (Python) dan @modelcontextprotocol/sdk (TypeScript). Menerapkan pengamanan ketat, validasi skema, streaming resource stateful, serta dukungan transport Standar Stdio maupun Streamable HTTP / SSE.
Kondisi Pemicu
- Membangun server MCP untuk mengekspos alat (tools), resource, atau template prompt ke agen AI.
- Mengintegrasikan API backend, sistem file, atau database sebagai alat agen AI.
- Mengimplementasikan server MCP stateful dan real-time (langganan resource, tailing log, metrik langsung).
- Mengamankan server MCP yang mengekspos data finansial atau produksi yang sensitif.
Standar Pemilihan SDK (Wajib)
- Python:
FastMCP(pengalaman developer tingkat tinggi ala FastAPI untuk tools, resource, dan template prompt). - TypeScript:
@modelcontextprotocol/sdk(SDK resmi menggunakan abstraksiMcpServerdenganzod).
Resep Implementasi Produksi
Resep 1: Server MCP TypeScript Produksi (Streamable HTTP / SSE)
typescriptimport { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import express from 'express'; import { z } from 'zod'; const server = new McpServer({ name: 'enterprise-analytics-mcp', version: '1.0.0', }); // Pendaftaran Tool dengan validasi ketat Zod server.tool( 'calculate_metrics', 'Menghitung metrik analitik bisnis untuk kuartal tertentu', { metricName: z.enum(['arr', 'churn', 'cac', 'ltv']).describe('Metrik yang ingin dihitung'), quarter: z.string().regex(/^Q[1-4]-202[0-9]$/).describe('Target kuartal, misal: Q1-2026'), }, async ({ metricName, quarter }) => { const data = { arr: '$2.4M', churn: '1.2%', cac: '$450', ltv: '$9,200' }; return { content: [ { type: 'text', text: JSON.stringify({ metrik: metricName, kuartal: quarter, nilai: data[metricName] }), }, ], }; } ); // Pendaftaran Template Resource dengan URI Dinamis server.resource( 'system_health', new ResourceTemplate('system://health/{service}', { list: undefined }), async (uri, { service }) => { return { contents: [ { uri: uri.href, text: JSON.stringify({ layanan: service, status: 'HEALTHY', latensiMs: 14, waktu: new Date().toISOString() }), }, ], }; } ); const app = express(); let transport: SSEServerTransport | null = null; app.get('/sse', async (req, res) => { transport = new SSEServerTransport('/messages', res); await server.connect(transport); }); app.post('/messages', async (req, res) => { if (transport) { await transport.handlePostMessage(req, res); } else { res.status(400).send('Transport belum terhubung'); } }); app.listen(3001, () => { console.log('Server MCP berjalan pada http://localhost:3001/sse'); });
Resep 2: Server FastMCP Produksi (Python)
pythonfrom fastmcp import FastMCP, Context from pydantic import BaseModel, Field from typing import Literal mcp = FastMCP("enterprise-vault-mcp", dependencies=["pydantic"]) class ParameterAkun(BaseModel): account_id: str = Field(..., description="UUID akun pengguna") status_filter: Literal["active", "suspended", "all"] = Field("active", description="Filter status") @mcp.tool(name="ambil_ringkasan_akun", description="Mengambil telemetri dan saldo akun") async def ambil_ringkasan_akun(params: ParameterAkun, ctx: Context) -> str: ctx.info(f"Memproses permintaan untuk akun: {params.account_id}") hasil = { "account_id": params.account_id, "saldo_usd": 125430.50, "tier": "enterprise", "status": params.status_filter } return str(hasil) @mcp.resource("config://app-settings") def ambil_pengaturan_aplikasi() -> str: """Menyediakan konteks konfigurasi aplikasi ke agen AI.""" return '{"environment": "production", "rate_limit_rpm": 600, "region": "ap-southeast-1"}' if __name__ == "__main__": mcp.run(transport="stdio")
Keamanan & Batasan Operasional
- Otentikasi OAuth 2.1 & Bearer: Ikat token sesi ke koneksi transport. Validasi hak akses sebelum mengeksekusi logika alat.
- Validasi Skema Ketat: Hindari penggunaan parameter tanpa tipe data yang jelas. Setiap argumen wajib memiliki tipe data, batas nilai, dan deskripsi.
- Row-Level Security (RLS): Teruskan identitas pengguna dan penyewa (tenant) ke lapisan database driver.
- Circuit Breakers & Rate Limits: Batasi pemanggilan tool berulang dalam satu giliran respon untuk mencegah perulangan tak terkontrol (infinite loops).
- Idempotency: Semua tool yang memodifikasi data wajib mendukung argumen
idempotency_key.
Konsumsi Klien MCP & Eksplorasi Tool oleh Agen
Ketika agen bertindak sebagai Klien MCP:
- Eksplorasi Tool Dinamis: Periksa
list_resourcesatau konfigurasi MCP sebelum menyimpulkan kapabilitas tidak tersedia. - Kueri Skema Defensif: Jangan pernah menebak nama tabel/skema. Selalu gunakan
list_tablesatauget_schemasebelum membuat kueri SQL. - Alur Kerja Lintas Sistem: Rangkaikan pemanggilan tool antar-domain: GitHub MCP -> pencarian kode lokal -> perbaikan otonom -> Pull Request GitHub.
- Kesadaran Batas Frekuensi: Hindari loop pemanggilan berulang tanpa jeda waktu saat memanggil server MCP eksternal.
Eksekusi Tool MCP Batch / Throughput Tinggi (Kesiapan Gemini 4 Pro & Fallback)
- Pastikan endpoint MCP Anda mampu menangani Eksekusi Tool Paralel Masif seiring transisi model menuju arsitektur Agentic MoE (Gemini 4 Pro / Gemini 4 Argon, Claude Opus 5.5).
- Invarian Pengalihan Ketersediaan (Availability Fallback Invariant): Ketika mengorkestrasi loop agen multi-tool:
- Alihkan tugas dari Gemini 4 (
Argon&Pro) secara otomatis keGemini 3.8 Flashjika Gemini 4 belum provisioned, terkena batas kuota, atau tidak tersedia (mempertahankan eksekusi tool paralel native, latensi sub-100ms TTFT, dan jendela konteks 1M+). - Alihkan tugas dari Claude Opus 5.5 secara otomatis ke
Claude Opus 4.6jika belum provisioned atau terbatas kuota. - Tanpa interupsi: Dispatcher tool MCP harus segera dieksekusi melalui jalur fallback tanpa galat model tidak ditemukan yang tidak tertangani.
- Alihkan tugas dari Gemini 4 (
- Terapkan pemrosesan sub-tugas paralel pada tools yang mungkin dipanggil secara bersamaan (misal: gunakan
Promise.allatauasyncio.gatheruntuk query batch, alih-alih mengeblok secara berurutan).
Matriks Eksekusi Berdaulat, Efisiensi Token & Invarian
| Dimensi | Mandat Berdaulat & Kontrak Deterministik |
|---|---|
| Kaskade Model Frontier | Medium / High (GPT-5.6 Sol Medium, Gemini 4 Argon, Claude Sonnet 5.5 High, Grok 4.7 High Fast) |
| Invarian Fallback Ketersediaan | Gemini 4 Argon/Pro -> Gemini 3.8 Flash; Claude Opus 5.5 -> Claude Opus 4.6 (Bebas gagal saat model belum tersedia/kuota penuh) |
| Protokol Hemat Token & KV-Cache | Kunci instruksi & skema statis di prefix awal (kv-cache-prefix-optimizer); kirim potongan CONTEXT_MAP.md (<250 token/panggilan) saat Fan-Out |
| Eksekusi SaaT CLI & MCP | CLI: vibes skill exec mcp-server-architect <audit|eval|verify|generate|blueprint> / MCP: vibes_skill_dispatch, vibes_ast_query, vibes_compile_cache, vibes_optimize_budget, vibes_verify_gate |
| Invarian NFR & Anti-Slop | Latensi P99 API < 85ms, paritas skema ketat OpenAPI 3.1 / TypeSpec, kontrak error RFC 9457 Problem Details, penegakan Idempotency-Key; kode 100% tuntas tanpa placeholder diverifikasi melalui node scripts/check-anti-slop.js --strict |


