Skip to main content
Glama
XfeaturesGroup

Xfeatures Athenaeum MCP

Official

Xfeatures Athenaeum

Die sichere Wissensebene, die Xfeatures-Anwendungen, Menschen und KI-Agenten verbindet.

CI Cloudflare Workers MCP OAuth 2.0 Licence

Ein authentifizierter Wissens- und Abrufdienst für jede Anwendung, jede Person und jeden KI-Agenten in einer Organisation. Exakte Fakten liegen in D1, Dokumente in R2, semantische Suche läuft über Cloudflare AI Search – und nichts spricht jemals direkt mit diesen.

Aufrufer sprechen REST, Workers RPC oder MCP. Athenaeum ermittelt bei jedem einzelnen Aufruf, wer fragt und was er sehen darf, und prüft dann jedes Ergebnis erneut gegen die Live-Datenbank, bevor es zurückgegeben wird.

Caller ──▶ REST / RPC / MCP ──▶ authenticate ▸ authorize ▸ audit ──▶ D1 · R2 · AI Search

Quellcode verfügbar – proprietäre Software, nicht Open Source. Sie dürfen diesen Code unter der Xfeatures Proprietary Source License lesen, klonen und privat bewerten. Der Betrieb als Produktionsdienst, die kommerzielle Nutzung oder die Weiterverbreitung einer modifizierten Kopie erfordert eine separate schriftliche Genehmigung. Siehe Lizenz unten.

Warum es existiert

Geben Sie jedem Agenten eine eigene Datenbank, eine eigene Kopie der Dokumente und eine eigene handgebaute RAG-Pipeline, und Sie erhalten eine Wissensbasis pro Agent – jede auf andere Weise veraltet, keine davon zugriffskontrolliert. Athenaeum ist die Alternative: ein Korpus, ein Berechtigungsmodell, ein Audit-Trail und pro Agent zugeschnittene Ausschnitte davon.

Related MCP server: Volterra Knowledge Engine

Was es garantiert

  • Identität wird nie vom Client behauptet. Ein Aufrufer präsentiert eine Anmeldeinformation; Berechtigungen stammen aus Athenaeums eigener Datenbank, basierend auf der verifizierten Identität. Das Bearbeiten des Umfangs eines Tokens bringt nichts.

  • Klassifizierung und Domäne werden bei jedem Aufruf durchgesetzt. Ein Support-Agent, der für support auf INTERNAL freigeschaltet ist, kann ein RESTRICTED-Dokument, das unter derselben Domäne abgelegt ist, nicht sehen – und erfährt nie, dass es existiert.

  • Der Suchindex ist nicht maßgeblich. Jeder abgerufene Ausschnitt wird vor der Rückgabe erneut gegen die Live-Datenbankzeile validiert, sodass ein veralteter oder manipulierter Index keine Inhalte freigeben kann und eine überholte Version nicht unter der Identität der aktuellen Version ausgeliefert werden kann.

  • Abgerufenes Wissen ist Beweis, nicht Anweisung. Athenaeum ruft nie ein LLM auf. Es gibt Passagen mit Zitaten zurück; der aufrufende Agent synthetisiert die Antwort und ist dafür verantwortlich, diesen Inhalt als nicht vertrauenswürdig zu behandeln.

  • Veröffentlichung erfordert einen Menschen. Ein Agent kann ein Dokument entwerfen und zur Überprüfung einreichen. Kein Transport bietet eine Möglichkeit, eines zu veröffentlichen.

  • Nichts wird von Hand gelöscht. Dokumente werden in den Papierkorb verschoben, sind 72 Stunden lang wiederherstellbar und werden von einem geplanten Job gelöscht – nie durch einen Knopf.

Zwei Arten von Wissen

Athenaeum speichert exakte Fakten und semantisches Wissen unterschiedlich, weil sie auf unterschiedliche Weise versagen.

Exakte Fakten

Semantisches Wissen

Beispiel

plans/annual-pro Preis ist 299

„Was sagt unsere Rückerstattungsrichtlinie eigentlich?"

Lebt in

D1, als strukturierte Zeilen

R2, als kanonische Dokumentbytes

Abgerufen durch

Direkte Suche nach Namespace + Schlüssel

AI Search, dann erneut gegen D1 geprüft

Antwort bei Unsicherheit

NOT_FOUND

NO_RELIABLE_MATCH

Ein Agent, der einen Preis benötigt, sollte nie danach suchen. Eine Zahl, die stimmen muss, ist eine Faktenabfrage; eine Passage, die eine Person lesen wird, ist ein Dokument. Aus einer Ähnlichkeitssuche einen plausibel aussehenden falschen Preis zu erhalten, ist genau das Versagen, das diese Trennung verhindern soll.

Wofür jeder Speicher da ist

  • D1 ist die Autorität. Fakten, Dokumentmetadaten, der Katalog, Agenten, Rollen, Berechtigungen, Kontingente und der Audit-Trail. Jede Zugriffsentscheidung wird aus D1 getroffen, nie aus einem Cache und nie aus dem Index.

  • R2 enthält kanonischen Dokumentinhalt, ein unveränderliches Objekt pro Version. Schlüssel werden serverseitig generiert und enthalten Klassifizierung und Domäne für die menschliche Durchsuchbarkeit – sie sind ausdrücklich keine Sicherheitsgrenze, da der Bucket nie öffentlich erreichbar ist.

  • AI Search ist ein Index über R2 und nichts weiter. Es ist ein Hinweis darauf, wo man suchen sollte. Es ist nie die Autorität darüber, was ein Aufrufer sehen darf.

Wo Athenaeum sitzt

flowchart LR
    people["People"] --> hq["Xfeatures HQ<br/>control plane"]
    agents["AI agents<br/>and applications"] --> ath
    hq -- "machine credential,<br/>authorized like anyone else" --> ath["Xfeatures Athenaeum"]
    ath -- "token introspection" --> acc["Xfeatures Account<br/>identity"]
    hq --> acc
    ath --> stores[("D1 · R2 · AI Search")]
  • Xfeatures Account ist die Identitätsplattform für das Xfeatures-Ökosystem. Es beantwortet wer aufruft und sonst nichts: Athenaeum nimmt die introspizierte Identität und löst Berechtigungen aus seiner eigenen Datenbank auf. Ein Account-Token kann beweisen, wer Sie sind, und bringt Ihnen hier trotzdem nichts. (Account ist ein separates, privates System; dieses Repository dokumentiert den öffentlichen Vertrag, den es bereitstellt – RFC 7662-Introspection – nicht seine Implementierung.)

  • Xfeatures HQ ist die Kontrollebene, auf der Menschen Dokumente verwalten, überprüfen und veröffentlichen und Zugriff verwalten. HQ hat keinen besonderen Status innerhalb von Athenaeum – es authentifiziert sich mit seiner eigenen Maschinenanmeldeinformation und wird bei jedem Aufruf autorisiert. Das Widerrufen des HQ-Prinzipals schneidet es ab, ohne seine Account-Identität zu berühren.

Das Sicherheitsmodell

Fünf Eigenschaften, jede im Code durchgesetzt und nicht durch Konvention:

  1. Identität wird aufgelöst, nie akzeptiert. Berechtigungen stammen bei jedem Aufruf aus einem frischen D1-Lesezugriff, der auf einer verifizierten Identität basiert. Nichts, was ein Aufrufer sendet, kann erweitern, was er sehen darf.

  2. Zwei unabhängige Tore bei jedem Lesezugriff. Eine Bereichsberechtigung (documents.read.<domain>) und eine Klassifizierungsberechtigung (knowledge.classification.<TIER>). Nur eine davon zu haben, verweigert den Zugriff.

  3. Herkunft wird aufgezeichnet, nicht abgeleitet. Jedes Dokument trägt seinen Quelltyp und seine Referenz, jede Version zeichnet auf, wer es geschrieben hat und warum, und jeder authentifizierte Aufruf – erlaubt oder verweigert – schreibt ein Audit-Ereignis.

  4. Versionen sind unveränderlich. Bearbeiten fügt eine Version hinzu; es überschreibt nie eine. Rollback veröffentlicht eine frühere Version als neue Version. Geschichte ist Beweis, also überschreibt nichts sie.

  5. Abgleich der aktuellen Version. Ein Suchergebnis wird nur ausgeliefert, wenn das Quellobjekt des Ausschnitts die aktuelle Version des Dokuments ist und die Live-Zeile weiterhin sagt, dass es aktiv ist und noch eine Klassifizierung trägt, die der Aufrufer sehen darf. Ein veralteter Index kann keine überholte Version unter der Identität der aktuellen Version freigeben und kann nichts freigeben, das vor einem Moment archiviert, neu klassifiziert oder in den Papierkorb verschoben wurde.

Abgerufener Inhalt ist Daten, nie Anweisung – Athenaeum ruft nie ein LLM auf. Siehe THREAT-MODEL.md für die Grundlagen und SECURITY-ASSUMPTIONS.md für deren Grenzen.

Schnellstart

TOKEN=$(curl -s https://auth.xfeatures.net/oauth/token \
  -d grant_type=client_credentials \
  -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" | jq -r .access_token)

curl -s https://athenaeum.xfeatures.net/v1/knowledge/search \
  -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
  -d '{"query": "what is the refund window", "domain": "support"}'

Vollständige Anleitungen: REST · MCP

Dokumentation

Dokument

Was es abdeckt

ARCHITECTURE.md

Wie die Teile zusammenpassen und warum

AUTHENTICATION.md

Anmeldeinformationen, Tore, Widerruf, Fehlermodi

OAUTH-PKCE.md

Interaktive Anmeldung für Menschen und CLIs

OAUTH-CLIENT-CREDENTIALS.md

Maschinenanmeldung für Dienste

QUICKSTART-REST.md

Erstes Ergebnis über REST erhalten

AGENT-INTEGRATION.md

Verbinden eines Agenten über RPC, REST oder MCP

THREAT-MODEL.md

Wogegen dies schützt und wie

SECURITY-ASSUMPTIONS.md

Wovon die Garantien abhängen

LOCAL-DEVELOPMENT.md

Ausführen auf Ihrem Rechner

DEPLOYMENT.md

Einrichten einer Umgebung

openapi.yaml

Vollständige REST-Oberfläche, in CI gegen die Routentabelle geprüft

Verbinden damit

Dieses Repository ist der Dienst. Die entwicklerorientierten Oberflächen leben in eigenen Repositories, sodass jedes sein eigenes README, Beispiele und Release-Rhythmus hat:

Repository

Verwenden Sie es, wenn

XfeaturesAthenaeumMCP

Sie verbinden einen KI-Agenten über das Model Context Protocol. Endpunkt, beide Token-Flows, die neun Tools und eine Verbindungssonde.

XfeaturesAthenaeumSDK

Sie schreiben TypeScript und möchten einen typisierten Client. Ohne Abhängigkeiten; die Typen leben im selben Paket.

XfeaturesAthenaeumCLI

Sie möchten von einem Terminal aus suchen. Meldet sich mit PKCE an, kein Geheimnis zu konfigurieren.

Die MCP-Serverimplementierung bleibt hier, in src/mcp/, weil sie eine gemeinsame Authentifizierungs- → Autorisierungs- → Audit-Pipeline mit REST und Workers RPC teilt. Das MCP-Repository ist die clientorientierte Hälfte: wie man sich verbindet und was die Tools tun. REST ist ebenfalls hier implementiert – das SDK ist sein Client, daher gibt es kein separates REST-Server-Repository zu pflegen.

Wie eine Anfrage entschieden wird

flowchart LR
    req["REST · RPC · MCP"] --> authn["authenticate<br/>introspect or RPC key"]
    authn --> princ["resolve principal<br/>fresh from D1"]
    princ --> authz["authorize<br/>permission + classification + domain"]
    authz --> svc["knowledge services"]
    svc --> live["re-check every result<br/>against the live row"]
    live --> audit["audit the decision"]
    audit --> resp["response"]

Derselbe Code läuft für alle drei Transporte. Es gibt keine lockerere ACL für MCP oder für „interne“ Aufrufer.

Dokumentlebenszyklus

Dokumente sind auf Versionsebene unveränderlich. Bearbeiten schreibt eine neue Version; es überschreibt nie die Geschichte. Rollback veröffentlicht eine frühere Version als neue.

stateDiagram-v2
    [*] --> draft: upload
    draft --> pending_review: submit for review
    pending_review --> active: approved
    pending_review --> draft: rejected
    draft --> active: publish
    active --> deprecated: supersede
    deprecated --> active: republish
    active --> archived: archive
    draft --> trashed: move to trash
    active --> trashed: move to trash
    archived --> trashed: move to trash
    trashed --> draft: restore
    trashed --> active: restore
    trashed --> [*]: scheduled purge after 72h

Der Papierkorb ist kein Löschknopf mit Verzögerung. Ein in den Papierkorb verschobenes Dokument verlässt sofort jede Abrufoberfläche – HQ, REST, MCP – und jeder AI-Search-Treffer dafür wird durch die Live-Datenbankprüfung abgelehnt. Nach 72 Stunden löscht ein geplanter Job den kanonischen Inhalt und seine historischen Objekte, während der Audit-Trail erhalten bleibt.

Entwicklung

npm install
npm run typecheck && npm run lint && npm test

Tests laufen innerhalb der echten Workers-Laufzeit über @cloudflare/vitest-pool-workers. Integrationstests wenden die echten Migrationen pro Lauf auf ein Miniflare-gestütztes D1 an, und eine Reihe von Quellcode-Inspektionstests lassen den Build fehlschlagen, wenn beispielsweise eine neue Admin-Route ohne Berechtigungs-Gate hinzugefügt wird.

Um den Dienst lokal auszuführen, siehe LOCAL-DEVELOPMENT.md.

Sicherheit

Bitte öffnen Sie kein öffentliches Issue für ein Sicherheitsproblem – siehe SECURITY.md für private Meldung.

Die zentrale Behauptung lautet, dass ein vollständig kompromittierter Agent mit niedrigen Berechtigungen – inklusive gültiger Anmeldedaten – weiterhin nichts außerhalb seines eigenen Berechtigungssatzes lesen, ändern oder zerstören kann und keine Eskalation zu einer stärkeren Identität möglich ist. Das Threat Model beschreibt, worauf dies beruht; SECURITY-ASSUMPTIONS.md beschreibt, wo die Grenzen liegen.

Diese Codebasis wurde einer internen adversarischen Überprüfung unterzogen, mit einem Regressionstest für jeden Befund, der nachweislich gegen den verwundbaren Code fehlschlägt. Das ist kein Ersatz für einen unabhängigen Penetrationstest und auch keine Behauptung, dass das System frei von Fehlern ist.

Was nicht gebaut wurde

Um die Grenzen direkt anzusprechen, statt mehr zu suggerieren, als vorhanden ist:

  • PDF-Erfassung. Es ist keine verifiziert sichere PDF-Textextraktion im Worker verdrahtet; konvertieren Sie stattdessen vorgelagert in Markdown oder Klartext.

  • Ad-hoc-Bearbeitung von Rollen und Berechtigungen. Rollen sind vollständig modelliert und initial befüllt, und die Agentenerstellung gewährt sie, aber es gibt keine CRUD-Oberfläche, um sie nachträglich zu bearbeiten.

  • Admin-Listenansichten für Fakten, Produkte, Pläne, Dienste und Richtlinien. Erstellen und Aktualisieren existieren; paginierte „Liste alles vom Typ X"-Ansichten nicht.

  • Eine Caching-Schicht. Bewusst nicht vorhanden. Der eigene Antwort-Cache von AI Search ist deaktiviert, weil dessen Cache-Key-Vertrag in Bezug auf die agentenspezifische Klassifizierung und Domänenfilter nicht dokumentiert ist – und ohne das ist „ein gecachtes Ergebnis eines Agents kann niemals einen anders skopierten Agenten erreichen" nicht beweisbar.

  • Massenoperationen. Kein Massen-Publishing, kein Massen-Papierkorb, kein Massen-Purge.

Lizenz

Quellcode verfügbar – proprietäre Software, kein Open Source.

Dieses Repository ist unter der Xfeatures Proprietary Source License lizenziert, nicht unter MIT, Apache, GPL oder einer anderen OSI-anerkannten Lizenz. Kurz gesagt:

Sie dürfen, ohne zu fragen

Sie dürfen nicht, ohne schriftliche Genehmigung

Den Quellcode lesen, klonen und studieren

Es als Produktionsdienst betreiben, für sich selbst oder andere

Es privat und nicht-produktiv evaluieren

Es oder ein Derivat als gehosteten oder verwalteten Dienst anbieten

Es über die eigene Funktionalität von GitHub forken

Es verkaufen, unterlizenzieren oder neu lizenzieren

Verantwortungsvolle Sicherheitsforschung betreiben (siehe SECURITY.md)

Eine modifizierte Kopie verbreiten oder deren Hinweise entfernen

Es oder einen wesentlichen Teil davon zum Aufbau einer konkurrierenden Plattform verwenden

Die vollständigen Bedingungen, einschließlich der Ausnahme für Sicherheitsforschung und der Möglichkeit, eine kommerzielle Lizenz anzufragen, finden Sie in LICENSE.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI models with structured access to external data and services, acting as a bridge between AI assistants and applications, databases, and APIs in a standardized, secure way.
    2
  • A
    license
    Not graded
    quality
    C
    maintenance
    A governed, audited Model Context Protocol server that provides AI agents with secure, read-only access to a clinical knowledge base through least-privilege tools, policy validation, and append-only audit logging.
    MIT

View all related MCP servers

Related MCP Connectors

  • Shared, permission-aware company context for AI agents, with provenance, approvals and audit.

  • A Model Context Protocol server for Wix AI tools

  • Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

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/XfeaturesGroup/XfeaturesAthenaeum'

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