mcp-resource-subscribe-test
mcp-resource-subscribe-test
Minimaler MCP-Streamable-HTTP-Server zum Testen, ob MCP-Clients resources/subscribe und notifications/resources/updated korrekt verarbeiten.
Dieses Repository dient als reproduzierbares Problem- / Kompatibilitätslabor für CLI-KI-Agenten wie Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI, Claude Code, Goose und Crush.
Zweck
Der Server stellt eine feste MCP-Ressource bereit:
test://review/statusAnfänglicher Inhalt:
status: pending
version: 1
message: Waiting for simulated review result.Nachdem ein Client die Ressource abonniert hat, wartet der Server für MCP_TEST_UPDATE_DELAY_SECONDS, ändert die Ressource und sendet:
{
"method": "notifications/resources/updated",
"params": {
"uri": "test://review/status"
}
}Aktualisierter Inhalt:
status: reviewed
version: 2
message: Simulated review result is now available.Related MCP server: SkyStage MCP Test Server
Warum Resources/Subscribe statt Tools/Call
tools/call ist nützlich für explizite Aktionen, aber viele Agenten-Workflows hängen von Kontext ab, der sich nach der ursprünglichen Anfrage ändert. Das Abfragen (Polling) jeder Quelle ist laut und client-spezifisch. MCP-Ressourcen-Abonnements bieten Clients eine protokollbasierte Möglichkeit zu erfahren, dass sich ein bekanntes Kontextobjekt geändert hat und neu gelesen werden sollte.
Beispiele, bei denen das Abonnement-Verhalten wichtig ist:
Copilot-Prüfergebnis
PR-Review-Thread
CI-Status
Codecov-Kommentar
GitHub-Issue-Diskussion
lokales Build-/Testergebnis
Dieser Testserver konzentriert sich darauf, ob der Client eine Ressourcenaktualisierung bemerkt, resources/read erneut ausführt und den neuen Inhalt im Agenten-Loop / Modellkontext widerspiegelt.
Start
docker compose up --buildMCP-URL:
http://127.0.0.1:8089/mcpFür die lokale Entwicklung:
npm install
npm run devKonfiguration
Umgebungsvariable | Standard |
|
|
|
|
|
|
|
|
|
|
|
|
Wenn MCP_TEST_SEND_LIST_CHANGED=true ist, sendet der Server nach dem simulierten Update auch notifications/resources/list_changed.
Erwartetes Client-Verhalten
Ein idealer MCP-Client sollte diesem Ablauf folgen:
initialize
↓
resources/list
↓
resources/read test://review/status
↓
resources/subscribe test://review/status
↓
receive notifications/resources/updated
↓
resources/read test://review/status again
↓
reflect updated status: reviewed in agent contextServer-Fähigkeiten
Die Initialisierungsantwort kündigt Folgendes an:
{
"resources": {
"subscribe": true,
"listChanged": true
}
}Implementierte MCP-Nachrichten
initializeresources/listresources/readresources/subscriberesources/unsubscribenotifications/resources/updatednotifications/resources/list_changedwennMCP_TEST_SEND_LIST_CHANGED=true
Es sind keine Tools implementiert.
Protokolle
Der Server protokolliert jede wichtige Nachricht, damit das Client-Verhalten objektiv überprüft werden kann:
[initialize] client connected
[resources/list] requested
[resources/read] uri=test://review/status version=1
[resources/subscribe] uri=test://review/status
[resource/update] uri=test://review/status version=2
[notification/send] notifications/resources/updated uri=test://review/status
[resources/read] uri=test://review/status version=2
[resources/unsubscribe] uri=test://review/statusDer wichtigste Nachweis für die Unterstützung von Ressourcen-Abonnements ist:
resources/subscribe was received
notification was sent
resources/read was received again after the notificationTests
npm testDie Testsuite überprüft:
resources/listgibttest://review/statuszurückanfängliches
resources/readgibt Version 1 zurückresources/subscribelöst ein internes Update auf Version 2 ausnotifications/resources/updatedwird empfangenaktualisiertes
resources/readgibt Version 2 zurück
Hinweise zur Client-Kompatibilität
Codex CLI
MCP-Verbindung:
Ruft es
resources/listauf?Ruft es
resources/readauf?Ruft es
resources/subscribeauf?Empfängt es
notifications/resources/updated?Liest es die Ressource nach der Aktualisierung erneut?
Hinweise:
Gemini CLI
MCP-Verbindung:
Ruft es
resources/listauf?Ruft es
resources/readauf?Ruft es
resources/subscribeauf?Empfängt es
notifications/resources/updated?Liest es die Ressource nach der Aktualisierung erneut?
Hinweise:
OpenCode
MCP-Verbindung:
Ruft es
resources/listauf?Ruft es
resources/readauf?Ruft es
resources/subscribeauf?Empfängt es
notifications/resources/updated?Liest es die Ressource nach der Aktualisierung erneut?
Hinweise:
GitHub Copilot CLI
MCP-Verbindung:
Ruft es
resources/listauf?Ruft es
resources/readauf?Ruft es
resources/subscribeauf?Empfängt es
notifications/resources/updated?Liest es die Ressource nach der Aktualisierung erneut?
Hinweise:
Claude Code
MCP-Verbindung:
Ruft es
resources/listauf?Ruft es
resources/readauf?Ruft es
resources/subscribeauf?Empfängt es
notifications/resources/updated?Liest es die Ressource nach der Aktualisierung erneut?
Hinweise:
Goose
MCP-Verbindung:
Ruft es
resources/listauf?Ruft es
resources/readauf?Ruft es
resources/subscribeauf?Empfängt es
notifications/resources/updated?Liest es die Ressource nach der Aktualisierung erneut?
Hinweise:
Crush
MCP-Verbindung:
Ruft es
resources/listauf?Ruft es
resources/readauf?Ruft es
resources/subscribeauf?Empfängt es
notifications/resources/updated?Liest es die Ressource nach der Aktualisierung erneut?
Hinweise:
This server cannot be deployed
Maintenance
Related MCP Connectors
Minimal streamable HTTP MCP server used for owned-account registry connectivity tests.
Security research canary remote MCP server for owned-account testing.
Experimental MCP server for current empirical verification of explicit public HTTPS endpoint claims.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Related MCP Servers
- AlicenseCqualityDmaintenanceA simple server implementing the Model Context Protocol (MCP) that echoes messages back, designed for testing MCP clients.13MIT
- FlicenseNot gradedqualityDmaintenanceMinimal MCP server for testing SkyStage's self-auth auto-detection feature. It includes tools like ping, echo, server_info, and read_secret, and uses a mock OAuth provider for login.-
- FlicenseNot gradedqualityDmaintenanceA simple MCP server with OAuth 2.0 authentication for testing OAuth support in mcp-cli.-
- AlicenseNot gradedqualityCmaintenanceEducational MCP server demonstrating the 2026-07-28 stateless protocol with raw Starlette, no SDK, featuring tools, request state handles, MRTR elicitation, and subscriptions.MIT