Skip to main content
Glama
XfeaturesGroup

Xfeatures Athenaeum MCP

Official

Xfeatures Athenaeum

Защищённый слой знаний, соединяющий приложения Xfeatures, людей и ИИ-агентов.

CI Cloudflare Workers MCP OAuth 2.0 Licence

Единый аутентифицированный сервис знаний и поиска для каждого приложения, человека и ИИ-агента в организации. Точные факты живут в D1, документы — в R2, семантический поиск работает через Cloudflare AI Search — и ничто никогда не обращается к ним напрямую.

Вызывающие стороны говорят на REST, Workers RPC или MCP. Athenaeum определяет, кто спрашивает и что им разрешено видеть, при каждом вызове, а затем повторно проверяет каждый результат по живой базе данных перед возвратом.

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

Исходный код доступен — проприетарное ПО, не открытый исходный код. Вы можете читать, клонировать и приватно оценивать этот код в соответствии с Xfeatures Proprietary Source License. Запуск его как производственного сервиса, коммерческая эксплуатация или распространение изменённой копии требует отдельного письменного разрешения. См. Лицензия ниже.

Зачем это существует

Дайте каждому агенту собственную базу данных, собственную копию документации и собственный самодельный RAG-конвейер — и вы получите по одной базе знаний на агента, каждая из которых устаревает по-своему, и ни одна не защищена контролем доступа. Athenaeum — это альтернатива: один корпус, одна модель разрешений, один журнал аудита и отдельные срезы для каждого агента.

Related MCP server: Volterra Knowledge Engine

Что это гарантирует

  • Личность никогда не заявляется клиентом. Вызывающая сторона предъявляет учётные данные; разрешения берутся из собственной базы данных Athenaeum, привязанной к проверенной личности. Изменение области действия токена ничего не даёт.

  • Классификация и домен применяются при каждом вызове. Агент поддержки, допущенный к support на уровне INTERNAL, не может видеть документ RESTRICTED, поданный в том же домене, — и никогда не узнаёт о его существовании.

  • Поисковый индекс не является авторитетным. Каждый извлечённый фрагмент повторно проверяется по живой строке базы данных перед возвратом, поэтому устаревший или подделанный индекс не может раскрыть содержимое, а заменённая версия не может быть выдана под идентичностью текущей.

  • Извлечённые знания — это доказательства, а не инструкции. Athenaeum никогда не вызывает LLM. Он возвращает отрывки с цитатами; вызывающий агент синтезирует ответ и несёт ответственность за то, чтобы относиться к этому содержимому как к недоверенному.

  • Публикация требует человека. Агент может подготовить документ и отправить его на рецензирование. Ни один транспорт не предоставляет способа опубликовать его.

  • Ничто не удаляется вручную. Документы перемещаются в корзину, восстанавливаются в течение 72 часов и удаляются плановым заданием — никогда кнопкой.

Два вида знаний

Athenaeum хранит точные факты и семантические знания по-разному, потому что они отказывают по-разному.

Точные факты

Семантические знания

Пример

plans/annual-pro стоит 299

«что на самом деле говорит наша политика возврата»

Живёт в

D1, как структурированные строки

R2, как канонические байты документа

Извлекается

Прямым поиском по пространству имён + ключу

AI Search, затем повторная проверка по D1

Ответ при неуверенности

NOT_FOUND

NO_RELIABLE_MATCH

Агенту, которому нужна цена, не следует искать её. Число, которое должно быть точным, — это поиск факта; отрывок, который прочитает человек, — это документ. Получить правдоподобно выглядящую неверную цену из поиска по сходству — это именно тот сбой, для предотвращения которого существует это разделение.

Для чего предназначено каждое хранилище

  • D1 — это авторитет. Факты, метаданные документов, каталог, агенты, роли, разрешения, квоты и журнал аудита. Каждое решение о доступе принимается из D1, никогда из кэша и никогда из индекса.

  • R2 хранит каноническое содержимое документов, один неизменяемый объект на версию. Ключи генерируются сервером и содержат классификацию и домен для удобства просмотра человеком — они явно не являются границей безопасности, потому что корзина никогда не доступна публично.

  • AI Search — это индекс по R2, и не более того. Это подсказка о том, где искать. Он никогда не является авторитетом в том, что вызывающий может видеть.

Где находится Athenaeum

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 — это платформа идентификации для экосистемы Xfeatures. Она отвечает на вопрос кто вызывает и ни на что другое: Athenaeum берёт интроспектированную личность и разрешает разрешения из собственной базы данных. Токен Account может доказать, кто вы, и всё равно не дать вам здесь ничего. (Account — это отдельная, частная система; этот репозиторий документирует публичный контракт, который она предоставляет — RFC 7662 introspection — а не её реализацию.)

  • Xfeatures HQ — это контрольная плоскость, где люди администрируют документы, рецензируют и публикуют их, а также управляют доступом. HQ не имеет особого статуса внутри Athenaeum — она аутентифицируется с помощью собственных машинных учётных данных и авторизуется при каждом вызове. Отзыв принципала HQ отключает его, не затрагивая его личность в Account.

Модель безопасности

Пять свойств, каждое из которых обеспечивается кодом, а не соглашением:

  1. Личность разрешается, а не принимается. Разрешения берутся из свежего чтения D1, привязанного к проверенной личности, при каждом вызове. Ничто, что отправляет вызывающий, не может расширить то, что ему разрешено видеть.

  2. Два независимых шлюза на каждом чтении. Разрешение на область действия (documents.read.<domain>) и разрешение на классификацию (knowledge.classification.<TIER>). Наличие одного без другого — отказ.

  3. Происхождение записывается, а не выводится. Каждый документ несёт свой тип источника и ссылку, каждая версия записывает, кто её написал и почему, и каждый аутентифицированный вызов — разрешённый или отклонённый — пишет событие аудита.

  4. Версии неизменяемы. Редактирование добавляет версию; оно никогда не переписывает существующую. Откат переиздаёт более раннюю версию как новую версию. История — это доказательство, поэтому ничто её не перезаписывает.

  5. Сверка текущей версии. Результат поиска выдаётся только в том случае, если исходный объект фрагмента является текущей версией документа и живая строка всё ещё говорит, что он активен и всё ещё несёт классификацию, которую вызывающий может видеть. Устаревший индекс не может выдать заменённую версию под идентичностью текущей и не может выдать что-то, что было архивировано, переклассифицировано или перемещено в корзину мгновение назад.

Извлечённое содержимое — это данные, а не инструкция — Athenaeum никогда не вызывает LLM. См. THREAT-MODEL.md о том, на чём это основано, и SECURITY-ASSUMPTIONS.md о том, где эти гарантии заканчиваются.

Быстрый старт

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"}'

Полные пошаговые руководства: REST · MCP

Документация

Документ

Что он охватывает

ARCHITECTURE.md

Как части сочетаются друг с другом и почему

AUTHENTICATION.md

Учётные данные, шлюзы, отзыв, режимы отказа

OAUTH-PKCE.md

Интерактивный вход для людей и CLI

OAUTH-CLIENT-CREDENTIALS.md

Машинный вход для сервисов

QUICKSTART-REST.md

Получение первого результата через REST

AGENT-INTEGRATION.md

Подключение агента через RPC, REST или MCP

THREAT-MODEL.md

От чего это защищает и как

SECURITY-ASSUMPTIONS.md

От чего зависят гарантии

LOCAL-DEVELOPMENT.md

Запуск на вашей машине

DEPLOYMENT.md

Развёртывание окружения

openapi.yaml

Полная поверхность REST, проверяемая по таблице маршрутов в CI

Подключение к нему

Этот репозиторий — сам сервис. Поверхности для разработчиков живут в отдельных репозиториях, поэтому у каждого есть свой README, примеры и цикл выпуска:

Репозиторий

Когда его использовать

XfeaturesAthenaeumMCP

Вы подключаете ИИ-агента через Model Context Protocol. Конечная точка, оба потока токенов, девять инструментов и проверка соединения.

XfeaturesAthenaeumSDK

Вы пишете на TypeScript и хотите типизированный клиент. Без зависимостей; типы живут в том же пакете.

XfeaturesAthenaeumCLI

Вы хотите искать из терминала. Вход через PKCE, секрет настраивать не нужно.

Реализация MCP-сервера остаётся здесь, в src/mcp/, потому что она использует один и тот же конвейер authenticate → authorize → audit с REST и Workers RPC. Репозиторий MCP — это клиентская половина: как подключиться и что делают инструменты. REST также реализован здесь — SDK является его клиентом, поэтому отдельного репозитория REST-сервера для поддержки нет.

Как принимается решение о запросе

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"]

Один и тот же код работает для всех трёх транспортов. Для MCP или для "внутренних" вызывающих нет более мягкого ACL.

Жизненный цикл документа

Документы неизменяемы на уровне версии. Редактирование записывает новую версию; оно никогда не переписывает историю. Возврат переиздаёт более раннюю версию как новую.

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

Корзина — это не кнопка удаления с задержкой. Удалённый документ немедленно исчезает со всех поверхностей поиска — HQ, REST, MCP — и любой результат AI Search для него отклоняется проверкой живой базы данных. Через 72 часа плановое задание удаляет каноническое содержимое и его исторические объекты, а журнал аудита остаётся.

Разработка

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

Тесты запускаются внутри реального рантайма Workers через @cloudflare/vitest-pool-workers. Интеграционные тесты применяют реальные миграции к D1 на базе Miniflare при каждом запуске, а набор тестов проверки исходного кода проваливает сборку, если, например, новый маршрут администратора добавлен без шлюза разрешений.

Чтобы запустить сервис локально, см. LOCAL-DEVELOPMENT.md.

Безопасность

Пожалуйста, не открывайте публичный issue для проблемы безопасности — см. SECURITY.md для приватного сообщения.

Основное утверждение состоит в том, что полностью скомпрометированный агент с низкими привилегиями, включая действительные учётные данные, по-прежнему не может читать, изменять или уничтожать что-либо за пределами своего собственного набора разрешений и не может повысить свои права до более сильной идентичности. В threat model описано, на чём это основано; в SECURITY-ASSUMPTIONS.md указано, где это перестаёт действовать.

Эта кодовая база прошла внутреннюю adversarial-проверку, и для каждой найденной проблемы есть регрессионный тест, который, как подтверждено, падает на уязвимом коде. Это не замена независимому пентесту и не заявление о том, что система свободна от дефектов.

Что не реализовано

Будем честны насчёт границ, а не будем подразумевать больше, чем есть на самом деле:

  • Извлечение PDF. Проверенного безопасного извлечения текста из PDF внутри Worker не подключено; конвертируйте в Markdown или обычный текст на верхнем уровне.

  • Произвольное редактирование ролей и разрешений. Роли полностью смоделированы и заполнены, и создание агента их выдаёт, но нет CRUD-интерфейса для их последующего редактирования.

  • Административные списки для фактов, продуктов, планов, услуг и политик. Создание и обновление существуют; постраничного «показать всё типа X» нет.

  • Слой кэширования. Намеренно отсутствует. Собственный кэш ответов AI Search отключён, потому что его контракт ключа кэша в отношении классификации по агентам и фильтров доменов не документирован — а без этого утверждение «кэшированный результат одного агента никогда не может попасть к агенту с другим контекстом» недоказуемо.

  • Массовые операции. Нет массовой публикации, массового перемещения в корзину или массовой очистки.

Лицензия

Исходный код доступен — проприетарное ПО, не открытый исходный код.

Этот репозиторий лицензирован по Xfeatures Proprietary Source License, а не по MIT, Apache, GPL или любой лицензии, одобренной OSI. Если кратко:

Можно без запроса

Нельзя без письменного разрешения

Читать, клонировать и изучать исходный код

Запускать его как производственный сервис, для себя или кого-либо ещё

Оценивать его в частном порядке, не в производстве

Предлагать его или производное как хостинг-сервис или управляемый сервис

Форкать его через штатную функциональность GitHub

Продавать, сублицензировать или перелицензировать его

Проводить ответственную исследовательскую работу по безопасности (см. SECURITY.md)

Распространять изменённую копию или удалять из неё уведомления

Использовать его или существенную его часть для создания конкурирующей платформы

Полные условия, включая исключение для исследовательской работы по безопасности и порядок запроса коммерческой лицензии, указаны в 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