Use OpenWebUI-compatible GitHub MCP transport
This commit is contained in:
@@ -169,8 +169,9 @@ Aktuell existieren funktionale Adapter für:
|
|||||||
Der GitHub-Container läuft produktiv. Token-Datei, interner
|
Der GitHub-Container läuft produktiv. Token-Datei, interner
|
||||||
Streamable-HTTP-Handshake, fehlende Host-Portfreigabe und exakt vier
|
Streamable-HTTP-Handshake, fehlende Host-Portfreigabe und exakt vier
|
||||||
read-only Werkzeuge wurden am 23. August 2026 verifiziert.
|
read-only Werkzeuge wurden am 23. August 2026 verifiziert.
|
||||||
Die Transportbrücke läuft stateless mit MCP `2025-11-25`, damit Open WebUI
|
Die Transportbrücke verwendet den OpenWebUI-kompatiblen `mcp-proxy` 0.12.0 im
|
||||||
keine bereits abgelaufenen serverseitigen Sitzungen wiederverwendet.
|
stateless Betrieb. Supergateway wurde nach reproduzierbaren HTTP-400-Fehlern
|
||||||
|
bei `notifications/initialized` aus diesem Pfad entfernt.
|
||||||
|
|
||||||
Der Platform Context MCP läuft ohne Docker-Socket, Shell, Egress oder Secrets.
|
Der Platform Context MCP läuft ohne Docker-Socket, Shell, Egress oder Secrets.
|
||||||
Ein root-eigener Minutentimer erzeugt nur einen begrenzten Laufzeitsnapshot.
|
Ein root-eigener Minutentimer erzeugt nur einen begrenzten Laufzeitsnapshot.
|
||||||
|
|||||||
@@ -47,9 +47,9 @@ Im Repository gesichert sind inzwischen:
|
|||||||
- getrennte MCP-Container und internes Netz
|
- getrennte MCP-Container und internes Netz
|
||||||
- Web-MCP-Fassade sowie gepinnte TinySearch-/SearXNG-Images
|
- Web-MCP-Fassade sowie gepinnte TinySearch-/SearXNG-Images
|
||||||
- ARR-MCP 1.0.1 und der aktuell eingesetzte kompakte Sonarr-Patch
|
- ARR-MCP 1.0.1 und der aktuell eingesetzte kompakte Sonarr-Patch
|
||||||
- offizieller GitHub-MCP 1.10.1 mit Supergateway 3.4.3, beide per Digest gepinnt
|
- offizieller GitHub-MCP 1.10.1 hinter `mcp-proxy` 0.12.0; GitHub- und
|
||||||
- GitHub-Supergateway stateless mit MCP-Protokoll `2025-11-25`; keine
|
Python-Basisimage per Digest gepinnt
|
||||||
serverseitig ablaufenden Sitzungen für Open WebUI
|
- GitHub-Transport stateless und mit OpenWebUIs Python-MCP-Client geprüft
|
||||||
- Home-Assistant-Relay ohne eingebettetes Token
|
- Home-Assistant-Relay ohne eingebettetes Token
|
||||||
- Startlogik und Health-Checks
|
- Startlogik und Health-Checks
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,21 @@
|
|||||||
FROM ghcr.io/github/github-mcp-server@sha256:1817b57d43916532dc002bdc5f344d639bd9fb54a9148d42168458f7c3280567 AS github
|
FROM ghcr.io/github/github-mcp-server@sha256:1817b57d43916532dc002bdc5f344d639bd9fb54a9148d42168458f7c3280567 AS github
|
||||||
|
|
||||||
FROM ghcr.io/supercorp-ai/supergateway@sha256:095acf4471e142553c1a5514aa5e480abbc5885d00549d4a3481cc70eac53889
|
FROM python:3.13-slim@sha256:ffb752e139c0a19692a43af8d8523b274222dd68eebad5d583b45c2201c6e30a
|
||||||
|
|
||||||
|
ARG MCP_PROXY_VERSION=0.12.0
|
||||||
|
RUN pip install --no-cache-dir "mcp-proxy==${MCP_PROXY_VERSION}" "mcp==1.29.0"
|
||||||
|
|
||||||
# GitHub publishes a minimal image containing only the official Go binary.
|
# GitHub publishes a minimal image containing only the official Go binary.
|
||||||
# Supergateway contributes transport conversion only; GitHub API behavior and
|
# mcp-proxy contributes transport conversion only; GitHub API behavior and
|
||||||
# every exposed tool remain implemented by GitHub's official MCP server.
|
# every exposed tool remain implemented by GitHub's official MCP server.
|
||||||
COPY --from=github /server/github-mcp-server /usr/local/bin/github-mcp-server
|
COPY --from=github /server/github-mcp-server /usr/local/bin/github-mcp-server
|
||||||
|
|
||||||
USER 65532:65532
|
RUN useradd --system --uid 10001 --create-home --home-dir /app mcp
|
||||||
ENTRYPOINT ["supergateway"]
|
USER 10001:10001
|
||||||
# Open WebUI can retain an MCP session longer than a stateful gateway keeps it
|
WORKDIR /app
|
||||||
# alive. A later call then fails although both the token and server are healthy.
|
EXPOSE 8000
|
||||||
# Stateless mode provides a fresh auto-initialized stdio server per request.
|
# This is the same OpenWebUI-compatible stateless transport used by Athena's
|
||||||
CMD ["--stdio", "/usr/local/bin/github-mcp-server stdio", "--outputTransport", "streamableHttp", "--protocolVersion", "2025-11-25", "--streamableHttpPath", "/mcp", "--port", "8000", "--logLevel", "info"]
|
# other Python/stdio MCP adapters. The official GitHub binary remains the only
|
||||||
|
# component implementing GitHub operations.
|
||||||
|
ENTRYPOINT ["mcp-proxy", "--host", "0.0.0.0", "--port", "8000", "--stateless", "--"]
|
||||||
|
CMD ["/usr/local/bin/github-mcp-server", "stdio", "--read-only", "--tools", "search_repositories,get_repository_tree,get_file_contents,search_code"]
|
||||||
|
|||||||
+16
-13
@@ -156,22 +156,25 @@ Last.fm-Profil noch auf dessen Hörverlauf zu.
|
|||||||
|
|
||||||
Der GitHub-Container verwendet unverändert den offiziellen
|
Der GitHub-Container verwendet unverändert den offiziellen
|
||||||
`github/github-mcp-server` 1.10.1. Da dessen lokaler Container stdio spricht,
|
`github/github-mcp-server` 1.10.1. Da dessen lokaler Container stdio spricht,
|
||||||
wandelt Supergateway 3.4.3 ausschließlich den Transport in Streamable HTTP für
|
wandelt `mcp-proxy` 0.12.0 ausschließlich den Transport in Streamable HTTP für
|
||||||
Open WebUI und weitere interne Clients um. Beide Images sind per OCI-Digest
|
Open WebUI und weitere interne Clients um. Basisimage und GitHub-Image sind per
|
||||||
festgeschrieben; die Brücke implementiert keine GitHub-Operationen.
|
OCI-Digest festgeschrieben; die Brücke implementiert keine GitHub-Operationen.
|
||||||
|
|
||||||
Supergateway läuft hier bewusst **stateless** mit MCP-Protokoll
|
`mcp-proxy` läuft bewusst **stateless**. Die zuerst getestete Supergateway-
|
||||||
`2025-11-25`. Eine frühere stateful Konfiguration konnte nach dem Ablauf einer
|
Brücke war mit Open WebUIs Python-MCP-Client nicht zuverlässig kompatibel: Im
|
||||||
serverseitigen Sitzung noch von Open WebUI referenziert werden; der nächste
|
stateful Betrieb konnten Sitzungen ablaufen; im stateless Betrieb beantwortete
|
||||||
Aufruf endete dann trotz gesundem Container mit
|
sie die reguläre `notifications/initialized`-Nachricht mit HTTP 400. Beides
|
||||||
`Failed to connect to MCP server 'github-local'`. Stateless erzeugt je Anfrage
|
führte trotz gesundem GitHub-Server und gültigem Token zu
|
||||||
eine frische, automatisch initialisierte stdio-Sitzung und vermeidet diesen
|
`Failed to connect to MCP server 'github-local'`. Der jetzt verwendete Proxy
|
||||||
Lebenszyklusfehler.
|
ist derselbe Transport, der sich bereits beim Athena Platform Context MCP
|
||||||
|
bewährt hat.
|
||||||
|
|
||||||
Dem Modell werden ausschließlich `search_repositories`, `get_repository_tree`,
|
Dem Modell werden ausschließlich `search_repositories`, `get_repository_tree`,
|
||||||
`get_file_contents` und `search_code` angeboten. `GITHUB_READ_ONLY=1` erzwingt
|
`get_file_contents` und `search_code` angeboten. Der offizielle Server wird
|
||||||
zusätzlich serverseitig den Nur-Lesen-Modus. Der Container veröffentlicht keinen
|
zusätzlich explizit mit `--read-only` gestartet; die Umgebungsvariablen im
|
||||||
Host-Port und speichert den Token nicht in Open WebUI.
|
Compose-Stack bleiben als zweite, deklarative Sicherung erhalten. Damit sind
|
||||||
|
Schreiboperationen auch serverseitig ausgeschlossen. Der Container
|
||||||
|
veröffentlicht keinen Host-Port und speichert den Token nicht in Open WebUI.
|
||||||
|
|
||||||
Einrichtung:
|
Einrichtung:
|
||||||
|
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile.github
|
dockerfile: Dockerfile.github
|
||||||
image: mike-ai/mcp-github:github-v1.10.1-supergateway-v3.4.3
|
image: mike-ai/mcp-github:github-v1.10.1-mcp-proxy-v0.12.0
|
||||||
container_name: mike-ai-mcp-github
|
container_name: mike-ai-mcp-github
|
||||||
profiles: [github]
|
profiles: [github]
|
||||||
env_file:
|
env_file:
|
||||||
|
|||||||
Reference in New Issue
Block a user