mcp-legacy-lane
Instrumentiere den alten Pfad, bevor du ihn löschst
MCP ist ein offenes Protokoll für LLM-Apps, um Tools über JSON-RPC aufzurufen.
Kents Hausaufgabe: Du hast einen Legacy-Pfad, der noch eingebunden ist, und du hast nicht gezählt, ob ihn noch jemand nutzt. Miss, bevor du löschst.
Dieses Repo betreibt einen Dual-Era-MCP-Server und ein SQLite-Ledger, das einen Neustart übersteht. Du behältst den Fallback, solange eine Legacy-Operation verbleibt.
Die Versionierungsseite nennt die beiden Spuren. Legacy ist 2025-11-25 und früher: Die Sitzung beginnt mit initialize. Modern ist 2026-07-28 und später: Jede Anfrage trägt Version und Identität in _meta.
Abgeschlossene Arbeit zählen
Ein sich neu verbindender Client ändert die Anzahl der Anfragen. Fünf Legacy-Tool-Aufrufe kosten fünfzehn Anfragen, wenn der Client bei jedem Aufruf eine neue Verbindung öffnet, und sieben, wenn er eine Verbindung hält. Der Legacy-Handshake verbraucht initialize und notifications/initialized einmal pro Verbindung, sodass ein sich neu verbindender Client wie starker Legacy-Verkehr aussieht. Jede Zeile enthält dieselben fünf Tool-Aufrufe pro Spur:
Fünf Tool-Aufrufe pro Spur | Legacy-Anfragen | Modern-Anfragen | Legacy-Anteil |
Client verbindet sich für jeden Aufruf neu | 15 | 10 | 60.0% |
Client hält eine Verbindung | 7 | 6 | 53.8% |
Abgeschlossene Operationen | 5 | 5 | 50.0% |
Du zählst 5 und 5 in der Operationszeile. Die Anfragezeilen unterscheiden sich um sechs Punkte, weil der Client sich entschieden hat, sich neu zu verbinden. recommend() liest die Operationszeile. Zähle die Einheit, die nach einem Transport-Rewrite oder einem Client, der seine Verbindungsweise ändert, immer noch übereinstimmt.
Related MCP server: mcpstat
Ausführen
Node 24 oder neuer. Du speicherst das Ledger mit node:sqlite.
Starte zuerst den Collector, dann den Server, dann generiere Verkehr:
pnpm install
pnpm collector # http://127.0.0.1:3000, OTLP (the metric export format) and agent tools
pnpm server # http://127.0.0.1:8787, dual-era MCP server
pnpm traffic # legacy and modern tool calls, plus DCR and CIMD hitsDCR ist Dynamic Client Registration: Der Client POSTet Metadaten an /register bei jeder Verbindung. In 2026-07-28 veraltet. CIMD ist Client ID Metadata Documents: Die Client-ID ist eine HTTPS-URL zu statischen Metadaten, der Ersatz für DCR.
Dann lies die beiden Speicher:
pnpm report # verdict from .data/migration-evidence.db
pnpm proof # lane series from the collectorWarte sechs Sekunden nach pnpm traffic vor pnpm proof, damit das Scraping landet.
Der erste Lauf gibt Folgendes aus:
Migration readiness: MCP protocol lanes
=======================================
window : 7 days
active days : 1/7 required
legacy operations : 5
modern operations : 3
total operations : 8/100 required
legacy % : 62.50%
raw requests : 15 legacy / 6 modern
legacy methods : initialize x5, notifications/initialized x5, tools/call x5
legacy clients : legacy-dashboard@0.9.4
modern clients : modern-agent@2.1.0
auth DCR : 2 attempts (1 success, 1 failure)
auth CIMD : 3 attempts (2 success, 1 failure)
recommendation : keep_both
A legacy client completed an operation. Keep the fallback and check next week.
Ask these clients to upgrade: legacy-dashboard@0.9.4.pnpm traffic sendet fünf Legacy-Clients und drei moderne, die Mischung, die Kent einige Wochen nach einer Spezifikationsveröffentlichung beschreibt. Jeder Client verbindet sich für seinen einen Aufruf neu, sodass die Anfragezeile 15 gegen 6 liest. Der Bericht nennt legacy-dashboard@0.9.4, damit du weißt, wem du schreiben sollst.
Die Richtlinie
Standardwerte: ein Sieben-Tage-Fenster, sieben aktive Verkehrstage, 100 abgeschlossene Operationen.
Beweis | Urteil |
Keine Operationen |
|
Eine oder mehrere Legacy-Operationen |
|
Null Legacy-Operationen, Stichprobe unter den Schwellen |
|
Null Legacy-Operationen, beide Schwellen bestanden |
|
recommend() gibt keep_both nach einer Legacy-Operation zurück, selbst bei zweihundert modernen. Dieser Aufruf gehört immer noch einem Client. Modernes Volumen sagt dir nicht, ob jemand den alten Pfad noch braucht.
Veraltungsfenster
Das Register veralteter Funktionen listet DCR, roots, sampling und logging als in 2026-07-28 veraltet. Früheste Entfernung ist die erste Revision am oder nach 2027-07-28. Ein sauberer lokaler Bericht verschiebt dieses Datum nicht. Clients, die der Spezifikation folgen, haben das zugesagte Fenster weiterhin.
Frag deinen Agenten
Lass Collector und Server laufen. .mcp.json zeigt autotel auf http://127.0.0.1:3000/mcp und migration auf http://127.0.0.1:8787/mcp. migrationStatus liest das dauerhafte Fenster.
Liste
mcp.protocol.lane.operationsin autotel auf und vergleiche die Serienlane=legacyundlane=modern. RufemigrationStatusauf dem Migrationsserver auf. Können wir den2025-11-25-Fallback entfernen? Zitiere die Operationszahlen, aktiven Tage und Richtlinienschwellen.
Führe diesen Prompt wöchentlich per Cron aus und du erhältst Kents Antwort.
Signale
Signal | Speicherung | Zweck |
| OTLP | Anfragevolumen, eine Serie pro |
| OTLP | Vergleichbare Operationen, eine Serie pro |
| OTLP | DCR- und CIMD-Versuche, eine Serie pro |
| OTLP | Tage der Stille auf der alten Spur, |
| SQLite | Das Berichtsfenster, Clientnamen, über Neustarts hinweg |
list_metrics gibt eine Serie pro Attributsatz zurück, also gruppiert der Agent nach lane. Du benötigst autotel-mcp 0.5.1 oder neuer, damit diese Attribute den Ingest überleben.
Kent durchschnittlich 125 DCR-Registrierungen pro Benutzer, weil jede Wiederverbindung einen weiteren Datensatz schreibt. Ein CIMD-Client schreibt keine. Zähle beide Modi und du kannst sehen, wann DCR verstummt ist.
Entscheidungen zum Übernehmen
Zähle Volumen, dann miss Stille. Lies die Zähler für das eingehende Legacy-Volumen. Du brauchst die letzte Ankunft, um über die Entfernung zu entscheiden. mcp.protocol.legacy.days_since_last_operation liest das Ledger, wenn der Collector scraped, sodass du es nicht im Anfragepfad neu berechnest. Alarmiere, wenn der Messwert 30 überschreitet.
Setze Methodennamen auf die Metrik. Setze Clientnamen ins Ledger. mcp_method ist ein Label, also erzeugt jeder neue Wert eine weitere Serie, und ein nicht authentifizierter Aufrufer wählt den Wert. STANDARD_METHODS in factory.ts ist eine Allow-List: Alles Unerkannte wird als unknown aufgezeichnet. Clientnamen haben keine Grenze, also gehen sie in SQLite. Ein weiterer Name kostet eine Zeile.
Behalte beide Schwellen. Eine Mindeststichprobe verhindert, dass du die Entfernung an einem ruhigen Nachmittag genehmigst. Eine Mindestanzahl aktiver Tage verhindert, dass du sie an einem einzigen geschäftigen Dienstag genehmigst, der den wöchentlichen Batch-Job verpasst hat.
Bediene beide Epochen ohne Sitzung. createMcpHandler läuft mit legacy: 'stateless'. Eine Factory bedient beide Epochen und ctx.era benennt die Spur. Jede Instanz kann jede Anfrage beantworten, also schreibst du den Zähler. Du brauchst keine Sitzungstabelle oder Sticky-Routing. Ein zustandsbehafteter Fallback würde dich zwingen, Sitzungen zu instrumentieren. Der Bericht würde dann vom Load Balancer abhängen.
Clientnamen pro Epoche
Eine moderne Anfrage nennt ihren Aufrufer. Eine Legacy-Anfrage nennt den Aufrufer einmal, während initialize.
Legacy ( | Modern ( | |
Methodenname | JSON-RPC-Body |
|
|
|
|
Der moderne Envelope wiederholt clientInfo in params._meta bei jeder Anfrage, sodass jede Instanz sie bedienen kann. Die Legacy-Spur legt den Namen auf den Handshake. Ein zustandsloser Server hat keinen Ort, um ihn für den folgenden Tool-Aufruf zu behalten. factory.ts liest beide. Der Bericht kann legacy-dashboard@0.9.4 nennen, weil dieser Name bei initialize ankam, nicht bei dem Tool-Aufruf, der gezählt wird.
Du kannst ein Gateway auf MCP-Method routen, weil die Anfrage sich selbst beschreibt. Du attribuierst Verkehr aus diesem Grund auch ohne Sitzung.
activeDays bucketed nach UTC-Datum, sodass ein Client, dessen Benutzer abends in den USA arbeiten, in zwei Buckets landen kann. Die Auth-Routen schreiben DCR- und CIMD-Versuche. Sie prägen keine Tokens und holen keine CIMD-Dokumente.
Konfiguration
Variable | Effekt |
| Ledger-Speicherort |
| Berichtsfenster |
| Ledger-Aufbewahrung |
| Stichprobengrößen-Schwelle |
| Aktive-Tage-Schwelle |
GET /metrics/lanes?windowDays=30 nimmt dasselbe Fenster, bis zu 90 Tage.
Um zu sehen, dass das Ledger einen Neustart übersteht: Führe traffic aus, stoppe den Server, starte ihn erneut, führe pnpm report aus. Die Zähler bleiben.
pnpm collector hält Telemetrie in autotel.db für 30 Tage. Der Server hält Beweise in .data/migration-evidence.db für 90. Git ignoriert beide.
Dual-Era-Server
Der Server ist Dual-Era, weil createMcpHandler mit legacy: 'stateless' läuft und ctx.era die Spur benennt, die du zählst. Siehe das Changelog für den Rest des 2026-07-28-Änderungssatzes.
autotel-mcp-instrumentation fügt Spans und Dauer-Histogramme auf beiden Seiten hinzu. Du beantwortest die Entfernungsfrage aus den Zählern und dem Ledger.
Code-Map
Datei | Verantwortung |
| Dual-Era-Tools; liest Era, Methode und Client pro Anfrage |
| Parst den Body einmal, teilt ihn mit der Factory |
| OTel-Zähler und Fenster-Snapshots |
| Indiziertes SQLite-Ledger, plus einen Speicher für Tests |
| Die Schwellen und den Berichtstext |
| DCR- und CIMD-Versuchsnachweise |
| Liest die Spur-Serien aus OTLP zurück |
| Zwei benannte Clients, einer pro Spur |
Verifizieren
pnpm typecheck
pnpm testDreizehn Tests decken den Verhältnis-Bias, Fensterfilterung, Neustart-Persistenz, Auth-Ergebnisse, Client-Attribution, Legacy-Methodenzählungen und beide Entfernungsschwellen ab.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides comprehensive monitoring and observability for MCP server ecosystems with real-time health checks, performance metrics, distributed tracing, anomaly detection, and automated performance reports using OpenTelemetry and Prometheus.1MIT
- AlicenseNot gradedqualityCmaintenanceA Python utility for adding usage tracking, analytics, and audit trails to MCP servers using SQLite-backed persistence. It enables developers to monitor tool, prompt, and resource activity and expose these statistics directly to LLM clients.4MIT
- AlicenseAqualityAmaintenanceTransparent MCP proxy with OpenTelemetry tracing. Wrap any MCP server, persist traces to SQLite · Postgres · MySQL. No code changes needed.23311Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP-native health monitoring that probes MCP servers using the list_tools protocol handshake, detects version drift, stores history in SQLite, and generates an HTML dashboard.43MIT
Related MCP Connectors
Monitor MCP servers, API contracts and AI outputs for schema drift. Alerts on breaking changes.
MCP uptime, schema, auth, and SLA receipt monitoring.
Remote MCP for A2A failure replay MCP, structured receipts, audit logs, and reviewer-ready evidence.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jagreehal/mcp-legacy-lane'
If you have feedback or need assistance with the MCP directory API, please join our Discord server