agent-native-ops-demo
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agent-native-ops-demoTest idempotent retry using create_invoice"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agent-native-ops-demo
Agent-Native Operations yazı serisinin demo reposu — MCP 2026-07-28 spec'ine göre, NestJS + MCP-Nest ile yazılmış stateless bir MCP server.
Donmuş snapshot: Bu repo, serinin yazıları için tarihli bir kanıt ortamıdır; MCP 2026-07-28 revizyonu ve
@rekog/mcp-nest@2.0.0esas alınmıştır. Spec değiştikçe güncel tutulmayacaktır — her yazının changelog'u hangi tag'e dayandığını söyler.
Ne gösteriyor
Tool | Ne kanıtlıyor |
| Saf stateless tool — replica ölçekleme ölçümlerinin yükü |
| Server-minted handle (Redis, |
| Mutlu yolda doğru, retry'da duplicate üreten bilerek-naif tool |
|
|
| Bilerek yavaş, progress bildiren tool — pod-kill / kopan-stream deneylerinin hedefi |
Sunucu dual-era çalışır (protocol: 'dual'): aynı /mcp endpoint'i hem eski protokolü (initialize + session) hem stateless 2026-07-28'i cevaplar. tools/list cevabı SEP-2549 gereği ttlMs: 3600000, cacheScope: "public" taşır (cacheHints ile ayarlı; varsayılan ttlMs: 0, private).
Related MCP server: FRD Orchestrator
Hızlı başlangıç
Gereksinimler: Node 22+, Redis (lokal :6379 ya da docker compose up -d), REDIS_URL ile değiştirilebilir.
npm install
npm run build
npm start # :3000/mcp (MCP), :3000/healthz (liveness)Duman testi (modern era, 2026-07-28)
Her istek kendi kendine yeterlidir: _meta içinde protocolVersion + clientCapabilities taşır, Mcp-Method header'ı zorunludur (eksiğinde sunucu hangi alanın eksik olduğunu söyleyen -32602 döner).
curl -s -X POST localhost:3000/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'Mcp-Method: tools/list' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{
"io.modelcontextprotocol/protocolVersion":"2026-07-28",
"io.modelcontextprotocol/clientInfo":{"name":"smoke","version":"0.0.1"},
"io.modelcontextprotocol/clientCapabilities":{}}}}'İdempotency replay'ini görmek için aynı idempotency_key ile create_invoice'u iki kez çağırın (Mcp-Method: tools/call + Mcp-Name: create_invoice) ve redis-cli get invoice:count ile sayacı izleyin: key'li tool'da sayaç 1'de kalır, create_invoice_naive'de her çağrı sayacı artırır.
Alternatif: MCP Inspector ile http://localhost:3000/mcp'ye bağlanın.
Kanıt katmanı
Her tool çalıştırması benzersiz bir executionId ile hem stdout'a (JSON log) hem Redis exec-log listesine yazılır. Retry'lar protokol seviyesinde yeni request-id taşıdığı için (SSE resumability kaldırıldı), duplicate sayımı protokole değil bu kayıtlara yaslanır.
Yol haritası (serinin ölçüm parçaları)
Parça 1 — NestJS + MCP-Nest iskeleti: 5 tool, Redis handle store, idempotency, execution log
Parça 2 — k8s/kind manifest'leri: 1↔3 replica, NodePort Service,
terminationGracePeriodSeconds, chaos endpoint'iParça 3 — k6 senaryoları + koşulmuş deneyler (aşağıda)
Parça 4 — cache katmanı deneyi:
ttlMs+ paylaşımlı cache, origin-hit sayımıParça 5 — OTel GenAI facade + trace waterfall (serinin OTEL-GENAI yazısı)
Deneyler (Parça 2-3)
Ortam: lokal kind cluster'ı (tek node, Docker Desktop, Apple Silicon); k6 aynı makinede. Kurulum:
docker build -t agent-native-ops-demo:0.1.0 .
kind create cluster --config kind-config.yaml
kind load docker-image agent-native-ops-demo:0.1.0 --name anops
kubectl apply -f k8s/Sabit yük (1 vs 3 replica, echo_upper): k6 run -e RATE=100 -e DURATION=60s k6/steady-load.js
Yük | 1 replica p95 / p99 | 3 replica p95 / p99 |
100 rps · 60 sn | 6.7 ms / 21.1 ms | 7.4 ms / 30.8 ms |
600 rps · 45 sn | 14.2 ms / 51.6 ms | 16.2 ms / 52.4 ms |
Bu iş yükünde yatay ölçeklemenin latency getirisi yok — kazanç kapasite değil, dayanıklılık (aşağıda).
Pod-kill duplicate deneyi: 30 rps fatura niyeti, 90 sn, delay_ms=500 (commit-sonrası cevap penceresi); koşu sırasında 8 kez POST /chaos/crash ile rastgele pod'lar düşürüldü. Client, 2026-07-28'in zorunlu kıldığı gibi kopan isteği yeni request-id ile tekrar gönderiyor (k6/pod-kill.js).
Koşu | Niyet | Retry | Duplicate fatura | Oran |
| 2 700 | 132 | 37 | %1.37 |
| 2 108 | 1 121 | 1 | %0.05 |
Sekiz crash'e rağmen kaybolan niyet: naifte 0/2700, key'lide 1/2108 — servis 3 replica ile ayakta kaldı. Key'li koşudaki tek duplicate, crash'in iş commit'i ile idempotency kaydının arasına denk geldiği vaka: read-then-write idempotency atomik değildir; gerçek exactly-once için ikisini tek transaction'a koyun (serinin tool-contract yazısının konusu). Analiz: kubectl exec deploy/redis -- redis-cli lrange exec-log 0 -1 | python3 scripts/analyze-duplicates.py <run-prefix>; ham k6 çıktıları results/ altında.
Seri
NestJS ile Production'da Stateless MCP Server (bu repo'nun ana yazısı)
Agent'lara API Tasarlamak: Retry'a Dayanıklı MCP Tool Contract'ları
AI Agent'lara Internal Developer Platform'da Kimlik Vermek
Node.js'te OpenTelemetry GenAI ile AI Agent Instrumentasyonu
Auto-Remediation Incident'ı Ne Zaman Büyütür
(Yazı linkleri yayınlandıkça eklenecek.)
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for task-first delegation to remote workstations and workers.
MEOK MCP Test MCP — golden-file + schema-drift + tool-failure tests for any MCP server. Drop-in
Experimental MCP server for current empirical verification of explicit public HTTPS endpoint claims.
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA reference implementation demonstrating proper MCP server patterns with HTTP transport, featuring session management, progress notifications, and example tools for testing server functionality. Serves as a clean template for building MCP servers with streamable responses and comprehensive error handling.7-
- AlicenseBqualityDmaintenanceAn MCP server that exposes structured Functional Requirements Documents (FRDs) to enable AI assistants like GitHub Copilot to automatically generate complete NestJS boilerplate architectures. It orchestrates the multi-phase creation of production-ready APIs including core CRUD, database integration, JWT authentication, and unit testing.1MIT
- AlicenseNot gradedqualityDmaintenanceBuild MCP servers inside NestJS applications using ordinary controllers with decorators for tools, resources, and prompts, supporting authentication and authorization.21 npmMIT
- AlicenseNot gradedqualityBmaintenanceA minimal NestJS MCP server skeleton for experimenting with the Model Context Protocol. Currently a placeholder with no implemented tools or resources.6 npmMIT