Release 0.7.3
This commit is contained in:
1 parent
d5b1c58ba2
commit
21c0de7dd9
31 files changed
+1582
-15
No files matched your search
@@ -1,5 +1,28 @@
|
||||
# Abnahme
|
||||
|
||||
## Lesender MCP-Zugang 0.7.3
|
||||
|
||||
| Bereich | Nachweis | Stand |
|
||||
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------------- |
|
||||
| OAuth-Discovery und anonymer Schutz | Reale lokale HTTP-Anfrage erhält 401 mit `resource_metadata`; Discovery-Routen sind im Produktionsbuild enthalten | erfüllt am 27.10.2026 |
|
||||
| DCR, Zustimmung und PKCE | Isolierter HTTP-Ablauf registriert Client, lädt Zustimmung, erhält Code mit `state`/`iss` und tauscht per S256 | erfüllt am 27.10.2026 |
|
||||
| Nutzer-, Scope- und Ressourcenbindung | Ausgestellter Token ist gehasht persistiert und wird bei jedem Aufruf gegen Nutzer, Scope, Ablauf und `/mcp` geprüft | erfüllt am 27.10.2026 |
|
||||
| MCP-Kompatibilität | Legacy-Initialisierung `2025-11-25` sowie `server/discover` und `tools/list` mit `2026-07-28` über HTTP | erfüllt am 27.10.2026 |
|
||||
| Tatsächliche Leseanfrage | `tools/call` auf `list_pieces` liefert aus einer temporären Seed-Datenbank reale Pieces | erfüllt am 27.10.2026 |
|
||||
| Schreibschutz und Datenminimierung | Nur fünf Lese-Tools; Positivprojektionen ohne E-Mail, Uploadnamen, Dateipfade und Werkzeug-Arbeitsdaten | erfüllt am 27.10.2026 |
|
||||
| ChatGPT- und Cloudron-Verbindung | Kein Deployment und keine externe Clientumgebung vorhanden | offen |
|
||||
|
||||
- `npm run check`: 0 Fehler und 0 Warnungen.
|
||||
- Gezielter isolierter HTTP-Ablauf: OAuth Code Flow, PKCE, anonymer Challenge,
|
||||
Legacy-Initialisierung, aktuelle Discovery, Toolliste und echte
|
||||
`list_pieces`-Anfrage erfolgreich.
|
||||
- `npm run build`: erfolgreich mit `@sveltejs/adapter-node`.
|
||||
- Keine weitere Verhaltenstest- oder Browsermatrix gemäß Auftrag ausgeführt;
|
||||
die Zustimmungsseite wurde im HTTP-Ablauf geladen, aber nicht visuell geprüft.
|
||||
- Echte ChatGPT-Verbindung, öffentliche HTTPS-Erreichbarkeit und Cloudron-
|
||||
Reverse-Proxy-Verhalten bleiben bis zu einem ausdrücklich freigegebenen
|
||||
Deployment offen.
|
||||
|
||||
## Wartungsrelease 0.7.2
|
||||
|
||||
| Bereich | Nachweis | Stand |
|
||||
|
||||
@@ -481,3 +481,36 @@ Name und Umfang des bestehenden gehashten Tokens und wird auditiert. Die
|
||||
Live-Route projiziert zusätzlich nur, ob der feste Ausgabekanal getrennt, mit
|
||||
dieser oder mit einer anderen Sendung verbunden ist. Das Öffnen von Menü und
|
||||
Ausgabedetails führt selbst keine Mutation aus.
|
||||
|
||||
## Lesender MCP-Zugang 0.7.3
|
||||
|
||||
`/mcp` ist ein stateless Streamable-HTTP-Adapter über `content.ts` und
|
||||
`shows.ts`. Er unterstützt die aktuelle per Request deklarierte MCP-Fassung
|
||||
`2026-07-28` einschließlich `server/discover`, Header-/Body-Abgleich und
|
||||
`resultType`. Für derzeitige OpenAI-Clients bleiben die Initialisierungsfassungen
|
||||
`2025-11-25`, `2025-06-18` und `2025-03-26` verfügbar. Es gibt keine
|
||||
MCP-Sitzung und keinen unabhängigen SSE-Strom; jede Anfrage trägt erneut ihre
|
||||
Authentifizierung.
|
||||
|
||||
Die fünf Werkzeuge sind ausschließlich lesend. Eigene Positivprojektionen
|
||||
lassen Mediennamen, interne Speicherpfade und Werkzeug-Arbeitsdaten aus. Die
|
||||
Detailprojektionen dürfen nach ausdrücklicher Zustimmung redaktionell private
|
||||
Recherche, Moderation, eigene Notizen, Quellen und Reserveinhalte enthalten.
|
||||
Keine MCP-Methode ruft Mutationsdienste auf.
|
||||
|
||||
Sendewerk ist zugleich OAuth-Autorisierungs- und Ressourcenserver. Geschützte
|
||||
Ressourcen- und Authorization-Server-Metadaten verweisen ausschließlich auf die
|
||||
konfigurierte Origin. Öffentliche PKCE-Clients werden per begrenztem DCR
|
||||
registriert; die Autorisierung verlangt exakte Redirect-URI, `S256`, den Scope
|
||||
`sendewerk:read` und den exakten Ressourcenindikator `<Origin>/mcp`. Codes sind
|
||||
fünf Minuten, Zugriffstokens eine Stunde gültig. SQLite speichert nur SHA-256-
|
||||
Hashes. Tokens sind direkt an Nutzer, Client, Scope und Ressource gebunden;
|
||||
Kontosperre und Passwortwechsel widerrufen sie, und jeder MCP-Aufruf verbindet
|
||||
erneut den aktuellen Nutzerzustand.
|
||||
|
||||
DCR ist für die von OpenAI weiterhin unterstützte Kompatibilität vorhanden,
|
||||
aber pro Quelladresse und insgesamt begrenzt. Clientnamen sind nicht verifiziert;
|
||||
der Zustimmungsdialog kennzeichnet dies und zeigt die genaue Rücksprung-Domain.
|
||||
Öffentliche Produktion verlangt HTTPS, während HTTP nur an Loopback-Adressen
|
||||
zulässig bleibt. Der bestehende technische REST-Token wird weder gelesen noch
|
||||
weitergereicht.
|
||||
@@ -532,3 +532,41 @@ seinen ausschließlich gehasht gespeicherten Token und erzeugt ein Auditereignis
|
||||
Das Live-Menü zeigt einen rein gelesenen Verbindungsstatus des Ausgabekanals.
|
||||
Nur die bereits vorhandenen expliziten Verbinden-, Rotieren- und Trennenaktionen
|
||||
verändern öffentliche Ausgabe. Navigation zur Planung bleibt davon getrennt.
|
||||
|
||||
## D-034: Nutzergebundener OAuth-Zugang statt Token-Passthrough
|
||||
|
||||
Der bestehende technische REST-Zugang kann und darf nicht für ChatGPT
|
||||
weitergereicht werden: Sein Klartexttoken ist nach der Erstellung nicht mehr
|
||||
verfügbar, und MCP verbietet Token-Passthrough. Sendewerk stellt deshalb einen
|
||||
eigenen OAuth-2.1-Authorization-Code-Flow für öffentliche Clients bereit. PKCE
|
||||
`S256`, exakte Redirect-URIs und der auf `<Origin>/mcp` gebundene
|
||||
Ressourcenindikator sind verpflichtend. Codes und einstündige Zugriffstokens
|
||||
liegen ausschließlich gehasht vor und sind direkt an ein aktives Nutzerkonto
|
||||
gebunden.
|
||||
|
||||
Die Autorisierungsserver-Metadaten bieten das von OpenAI unterstützte Dynamic
|
||||
Client Registration als Kompatibilitätsweg an. Die aktuelle MCP-Fassung stuft
|
||||
DCR zugunsten von Client ID Metadata Documents als veraltet ein. Ein allgemeiner
|
||||
CIMD-Abruf würde jedoch eine neue SSRF- und Cache-Sicherheitsgrenze eröffnen;
|
||||
für diese private Anwendung bleibt DCR deshalb eng mengen- und ratenbegrenzt.
|
||||
Der Zustimmungsdialog behandelt den selbst gemeldeten Clientnamen ausdrücklich
|
||||
als unverifiziert und zeigt dessen Rücksprung-Domain.
|
||||
|
||||
Der MCP-Adapter unterstützt sowohl die aktuelle stateless Fassung `2026-07-28`
|
||||
als auch die von OpenAI weiterhin dokumentierten Initialisierungsfassungen bis
|
||||
`2025-03-26`. Tooldaten werden aus bestehenden Diensten positiv projiziert.
|
||||
Der einzige Scope `sendewerk:read` ist im Dialog ausdrücklich einschließlich
|
||||
privater redaktioneller Recherche beschrieben; E-Mail, Uploadnamen,
|
||||
Speicherpfade und Werkzeug-Arbeitsdaten werden nicht ausgegeben. Alle Werkzeuge
|
||||
sind als lesend markiert und haben keinen Pfad zu Mutationsdiensten.
|
||||
|
||||
Quellen, geprüft am 27. Oktober 2026:
|
||||
|
||||
- <https://developers.openai.com/apps-sdk/build/auth>
|
||||
- <https://developers.openai.com/apps-sdk/deploy/connect-chatgpt>
|
||||
- <https://platform.openai.com/docs/mcp>
|
||||
- <https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization>
|
||||
- <https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http>
|
||||
- <https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning>
|
||||
- <https://modelcontextprotocol.io/specification/2026-07-28/server/discover>
|
||||
- <https://modelcontextprotocol.io/specification/2026-07-28/server/tools>
|
||||
@@ -1,5 +1,36 @@
|
||||
# Release Notes
|
||||
|
||||
## 0.7.3 - Lesender MCP-Zugang mit OAuth 2.1
|
||||
|
||||
Veröffentlicht am 27. Oktober 2026
|
||||
|
||||
- Der öffentliche Streamable-HTTP-Endpunkt `/mcp` bietet fünf ausschließlich
|
||||
lesende Werkzeuge für Kontoidentität, Pieces, Sendungen und vollständige
|
||||
Abläufe. Er verwendet die bestehenden Inhalts- und Sendungsdienste und keine
|
||||
parallele Datenhaltung.
|
||||
- OAuth-2.1-Discovery, begrenzte dynamische Clientregistrierung,
|
||||
Authorization Code, PKCE `S256`, exakte Redirect-URI und Ressourcenbindung
|
||||
ermöglichen die von OpenAI dokumentierte Kontoverknüpfung. Codes und
|
||||
einstündige Tokens werden nur gehasht gespeichert.
|
||||
- Nutzerzustand, Sperren und Rollen werden bei jedem MCP-Aufruf erneut gelesen.
|
||||
Passwortwechsel und Kontosperre widerrufen bestehende OAuth-Tokens. Der
|
||||
vorhandene technische REST-Token wird weder offengelegt noch weitergereicht.
|
||||
- MCP `2026-07-28` und die weiterhin von OpenAI verwendeten älteren
|
||||
Initialisierungsfassungen werden am selben stateless Endpunkt unterstützt.
|
||||
Private redaktionelle Details sind erst nach ausdrücklicher Zustimmung
|
||||
lesbar; E-Mail, Uploadnamen, interne Pfade und Werkzeug-Arbeitsdaten bleiben
|
||||
ausgeschlossen.
|
||||
- Die Produktions-URL lautet `https://<Cloudron-App-Domain>/mcp`. README und
|
||||
Betriebsdokumentation beschreiben die Einrichtung über **Add custom MCP
|
||||
server**. Das Release wurde nicht auf Cloudron ausgerollt und eine reale
|
||||
ChatGPT-Verbindung wird nicht als geprüft ausgegeben.
|
||||
- Paket, Lockdatei und Cloudron-Manifest tragen Version `0.7.3`. Migration
|
||||
`0020_oauth_mcp.sql` ergänzt additive OAuth- und Ratenbegrenzungstabellen.
|
||||
- Typprüfung und Produktionsbuild sind erfolgreich. Ein isolierter lokaler
|
||||
HTTP-Rundlauf hat OAuth, beide MCP-Protokollgenerationen und eine echte
|
||||
`list_pieces`-Anfrage geprüft; eine reale ChatGPT-/Cloudron-Verbindung bleibt
|
||||
ausdrücklich offen.
|
||||
|
||||
## 0.7.2 - RSS-Auswahl, Live-Menü und Schnittstellenverwaltung
|
||||
|
||||
Veröffentlicht am 26. Oktober 2026
|
||||
|
||||
@@ -8,6 +8,31 @@ Live-Steuerung, Präsentationsausgabe, unveränderliche Sendungshistorie,
|
||||
Archiv, sichere Lesefreigaben, RSS-Import und technische REST-Zugänge sind
|
||||
dokumentiert.
|
||||
|
||||
## Lesender MCP-Zugang 0.7.3
|
||||
|
||||
- Der öffentliche Streamable-HTTP-Endpunkt `/mcp` liest Pieces, Sendungen und
|
||||
Abläufe über dieselben Dienste wie Browser und REST-API. Fünf deklarierte
|
||||
Werkzeuge besitzen nur Leseannotationen und keine Mutationspfade.
|
||||
- OAuth 2.1 verwendet Discovery-Metadaten, begrenzte dynamische
|
||||
Clientregistrierung, Authorization Code, PKCE `S256`, exakte Redirect-URIs
|
||||
und Ressourcenbindung. Codes und einstündige Tokens liegen nur gehasht vor.
|
||||
- OAuth-Tokens sind an den zustimmenden Nutzer gebunden. Sperrung und
|
||||
Passwortwechsel widerrufen sie; jeder Zugriff prüft erneut Nutzerstatus,
|
||||
Scope, Ablauf und Zielressource.
|
||||
- Aktuelles MCP `2026-07-28` mit `server/discover` und per-Request-Metadaten
|
||||
läuft neben den OpenAI-kompatiblen Initialisierungsfassungen. Ausgaben sind
|
||||
Positivlisten ohne E-Mail, Uploadnamen, interne Pfade oder Werkzeug-Arbeitsdaten.
|
||||
- Die konkrete Produktionsadresse ist
|
||||
`https://<Cloudron-App-Domain>/mcp`. Ein Cloudron-Deployment und eine reale
|
||||
ChatGPT-Verbindung wurden nicht durchgeführt.
|
||||
|
||||
Geprüft wurden Typen, Produktionsbuild und ein isolierter tatsächlicher
|
||||
HTTP-Ablauf über eine temporäre Datenbank: anonymer OAuth-Challenge, DCR,
|
||||
Zustimmung, PKCE-Tokenaustausch, Legacy-Initialisierung, aktuelle
|
||||
`server/discover`-Abfrage, Toolliste und `list_pieces` mit Seed-Daten waren
|
||||
erfolgreich. Eine weitere Verhaltenstest- oder Browsermatrix wurde gemäß
|
||||
Auftrag nicht ausgeführt.
|
||||
|
||||
## Bedienkorrekturen 0.7.2
|
||||
|
||||
- Der RSS-Importeingang ist eine kompakte Katalogfläche. Die eigentliche Auswahl
|
||||
|
||||
Reference in new issue
Block a user