Skip to main content
Glama
scottlz0310

mcp-resource-subscribe-test

by scottlz0310

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/status

Anfä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: mcp-hello-world

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 --build

MCP-URL:

http://127.0.0.1:8089/mcp

Für die lokale Entwicklung:

npm install
npm run dev

Konfiguration

Umgebungsvariable

Standard

MCP_TEST_PORT

8089

MCP_TEST_UPDATE_DELAY_SECONDS

5

MCP_TEST_INITIAL_STATUS

pending

MCP_TEST_UPDATED_STATUS

reviewed

MCP_TEST_SEND_LIST_CHANGED

false

MCP_TEST_LOG_LEVEL

debug

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 context

Server-Fähigkeiten

Die Initialisierungsantwort kündigt Folgendes an:

{
  "resources": {
    "subscribe": true,
    "listChanged": true
  }
}

Implementierte MCP-Nachrichten

  • initialize

  • resources/list

  • resources/read

  • resources/subscribe

  • resources/unsubscribe

  • notifications/resources/updated

  • notifications/resources/list_changed wenn MCP_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/status

Der 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 notification

Tests

npm test

Die Testsuite überprüft:

  • resources/list gibt test://review/status zurück

  • anfängliches resources/read gibt Version 1 zurück

  • resources/subscribe löst ein internes Update auf Version 2 aus

  • notifications/resources/updated wird empfangen

  • aktualisiertes resources/read gibt Version 2 zurück

Hinweise zur Client-Kompatibilität

Codex CLI

  • MCP-Verbindung:

  • Ruft es resources/list auf?

  • Ruft es resources/read auf?

  • Ruft es resources/subscribe auf?

  • Empfängt es notifications/resources/updated?

  • Liest es die Ressource nach der Aktualisierung erneut?

  • Hinweise:

Gemini CLI

  • MCP-Verbindung:

  • Ruft es resources/list auf?

  • Ruft es resources/read auf?

  • Ruft es resources/subscribe auf?

  • Empfängt es notifications/resources/updated?

  • Liest es die Ressource nach der Aktualisierung erneut?

  • Hinweise:

OpenCode

  • MCP-Verbindung:

  • Ruft es resources/list auf?

  • Ruft es resources/read auf?

  • Ruft es resources/subscribe auf?

  • Empfängt es notifications/resources/updated?

  • Liest es die Ressource nach der Aktualisierung erneut?

  • Hinweise:

GitHub Copilot CLI

  • MCP-Verbindung:

  • Ruft es resources/list auf?

  • Ruft es resources/read auf?

  • Ruft es resources/subscribe auf?

  • Empfängt es notifications/resources/updated?

  • Liest es die Ressource nach der Aktualisierung erneut?

  • Hinweise:

Claude Code

  • MCP-Verbindung:

  • Ruft es resources/list auf?

  • Ruft es resources/read auf?

  • Ruft es resources/subscribe auf?

  • Empfängt es notifications/resources/updated?

  • Liest es die Ressource nach der Aktualisierung erneut?

  • Hinweise:

Goose

  • MCP-Verbindung:

  • Ruft es resources/list auf?

  • Ruft es resources/read auf?

  • Ruft es resources/subscribe auf?

  • Empfängt es notifications/resources/updated?

  • Liest es die Ressource nach der Aktualisierung erneut?

  • Hinweise:

Crush

  • MCP-Verbindung:

  • Ruft es resources/list auf?

  • Ruft es resources/read auf?

  • Ruft es resources/subscribe auf?

  • Empfängt es notifications/resources/updated?

  • Liest es die Ressource nach der Aktualisierung erneut?

  • Hinweise:

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
3hResponse time
1wRelease cycle
9Releases (12mo)
Commit activity
Issues opened vs closed

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

View all related MCP servers

Related MCP Connectors

  • MCP server wrapping the Tesla Fleet API and TeslaMate API

  • A basic MCP server to operate on the Postman API.

  • MCP (Model Context Protocol) server for Appwrite

View all MCP Connectors

Latest Blog Posts

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/scottlz0310/mcp-resource-subscriber'

If you have feedback or need assistance with the MCP directory API, please join our Discord server