Exeris AI Bridge

io.github.exeris-systems由 GitHub 帳號 exeris-systems 發布v0.8.0更新於 Nov 4, 2026

Read-only Exeris context for AI agents: ADRs, SDK contract, build output, kernel diagnostics.

已驗證STDIO僅桌面知識與記憶開發者工具

概覽

AI 產生的概覽

唯讀的 MCP 伺服器,為助理提供 Exeris 生態系脈絡:ADR、SDK 註解契約、建置產物與核心診斷資訊。

可以做什麼
  • 搜尋並閱讀 Exeris 文件:ADR 登錄表、高階架構、白皮書、決策範本以及各儲存庫的 Markdown 文件
  • 查詢 SDK 註解、屬性契約、作用域規則、棄用項目以及 DomainMetadata AST 的 JSON Schema
  • 檢視專案上次建置的產物:已產生的領域、程式碼產生檔案、分離狀態、能力組合,並解讀建置診斷訊息
  • 唯讀探查執行中的核心:SPI 提供者、啟動相依 DAG、子系統詳情、JVM 實際解析的執行參數
  • 以 diff 形式預覽 @ExerisDomain 變更,並從語言伺服器列出領域與動作
  • 回報橋接服務自身版本以及哪些工具家族目前可用
適用情境
適合使用 Exeris 框架開發應用程式的開發者:在寫程式前讓助理核對 ADR 與 SDK 契約,並檢視建置已產生的內容而不是手寫。也適合排查建置失敗與查看執行中的核心狀態。
執行需求
本機 Node.js 20 或更新版本的行程,通常以 npx 在專案內啟動以便找到 pom.xml。選用環境變數可指定專案根目錄、Maven 儲存庫、文件檢出目錄、核心與語言伺服器的啟動指令。核心類工具需要 JDK 25 及本機 Maven 儲存庫中的診斷 CLI;語言伺服器類工具需要本機建置的 exeris-platform-lsp。執行時不需要網路。
安裝前請注意
文件說明所有工具皆為讀取操作,不會寫入專案或改變核心狀態。它會讀取本機 Maven 產物與專案檔案,並為核心與語言伺服器工具家族啟動 Java 子行程。相依性缺少的工具家族會回傳 family_unavailable 結果而非報錯,使用前可先查看 bridge-health。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Exeris AI Bridge,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@exeris/ai-bridge

Model Context Protocol server that gives AI agents the context of an Exeris application: what your build emitted, the SDK's authoring contract, the ADR registry, and a running kernel.

Every tool is a read. The bridge never writes to your project, never calls a model API, and runs as a separate process from the Java kernel. It is built for developers writing an application on Exeris, and works without a checkout of the ecosystem: the reference data it needs ships inside the package.

Installation

Run the server inside your project, so it finds your pom.xml.

Claude Code

sh
claude mcp add exeris -- npx -y @exeris/ai-bridge

Claude Desktop: install exeris-ai-bridge-<version>.mcpb from the GitHub Releases. Desktop does not start the server inside a project, so set Project root in the extension's settings to use the build-* and caps-* tools.

Any other MCP client (Cursor, VS Code, Copilot): the command is npx -y @exeris/ai-bridge over stdio.

json
{  "mcpServers": {    "exeris": { "command": "npx", "args": ["-y", "@exeris/ai-bridge"] }  }}

The server is also listed in the MCP Registry as io.github.exeris-systems/ai-bridge.

Requirements

  • Node 20 or newer.
  • kernel-* only: JDK 25 or newer, and eu.exeris:exeris-kernel-diagnostics-cli in your local Maven repository, which a build of an Exeris application puts there.
  • build-preview_generation only: for java, JDK 25 or newer and eu.exeris:exeris-codegen-cli, at the tooling version your project pins, in your local Maven repository; for ts, @exeris/codegen-ts in your project's own node_modules.
  • No network at run time. The bridge reads artefacts already in ~/.m2 and never downloads.

Tools

Tool names are family-tool. All 34 are listed in every session; a family whose dependency is missing answers with a structured family_unavailable result naming the reason and the remedy.

FamilyAnswersTools
build-*What your last build emitted, which files codegen owns, what a build diagnostic means, the build files for a new application, what the generator would write now, and whether your discovery briefs are ready; toolingSkew says whether your project pins a different tooling release than the bundled generator cataloguebuild-list_domains, build-get_domain_metadata, build-explain_artefacts, build-get_detach_state, build-explain_diagnostic, build-get_starter, build-preview_generation, build-validate_brief
caps-*The capability composition your build validatedcaps-list_capabilities, caps-describe_composition
sdk-*The SDK's annotations, deprecations, scoping rules and AST schema; whether your project pins a different SDKsdk-list_annotations, sdk-describe_annotation, sdk-list_deprecations, sdk-get_scoping_rules, sdk-get_ast_schema
docs-*The Exeris ADRs, the high-level architecture, the whitepaper and the decision templatesdocs-list_adrs, docs-get_adr, docs-search, docs-get_hla, docs-get_whitepaper, docs-get_template, docs-list_repos, docs-list_repo_docs, docs-get_repo_doc
kernel-*A running kernel's providers, bootstrap DAG, subsystems and JVM ergonomicskernel-list_providers, kernel-get_bootstrap_dag, kernel-describe_subsystem, kernel-get_jvm_ergonomics
lsp-*@ExerisDomain types and actions from the Studio language server, and a preview of a source edit as a difflsp-list_domains, lsp-describe_domain, lsp-list_actions, lsp-preview_mutation
bridge-*The server itself: version, bundled data, and why a family is unavailablebridge-version, bridge-health

docs-list_repos, docs-list_repo_docs and docs-get_repo_doc need a checkout of the Exeris repositories; the other docs-* tools answer from a checkout when there is one, and otherwise from a registry snapshot bundled in the package. lsp-* needs a locally built exeris-platform-lsp, which publishes no runnable jar yet.

Resources

The registry tier of docs-* is also available as MCP resources, all text/markdown, listed in every session. A read goes through the same checkout-or-snapshot resolution and public-scope policy as the tools.

URIContent
exeris://docs/adr-indexThe ADR registry index
exeris://docs/adr/{NNN}One ADR by its three-digit number; a record from a repository that is not served publicly names its owning repository and GitHub URL
exeris://docs/hlaThe high-level architecture
exeris://docs/whitepaperThe B2B technical whitepaper
exeris://docs/template/{ADR|RFC|RESEARCH}A decision-doc template
exeris://sdk/brief-schemaThe JSON Schema of a discovery brief (ADR-106), application/schema+json; static, served from the bundled data with no project or ecosystem root, and listed only when the bundle carries it

exeris://docs/adr-index can be subscribed to (resources/subscribe): from an exeris-docs checkout the server sends notifications/resources/updated once per burst of changes to the file, including a replacement by rename; from the bundled snapshot the content cannot change, so the subscription is accepted and never fires. Any other URI, exeris://sdk/brief-schema included, is rejected as invalid params.

A URI outside this set, or an ADR number that is not three digits, is rejected as invalid params. An ADR that is not in the registry or has no servable content answers with the MCP resource-not-found error (-32002); docs being unavailable answers with an internal error whose data is the family_unavailable reason and remedy.

Prompts

Nine stateless prompt templates, listed in every session on every transport. A prompt returns messages built from its template and the arguments you give it: the bridge keeps no state, runs no loop and calls no model or tool. Where a step needs a tool, the prompt tells the agent to call it. Context is embedded as resource messages (the exeris://docs/* resources) or as bundled SDK data; where it cannot be embedded, the prompt says which resource to read instead. Arguments are strings, at most 256 characters, except diff (65,536 characters), output (64,000) and area (64, lowercase letters, digits and hyphens).

PromptArgumentsPre-loadsNeeds a local server
review-three-tier-violationsdiff?HLA, ADR-006, ADR-024, the drift-patterns policy, the cap-tier Wall ruleno
draft-adrtitle?ADR template, registry indexno
route-this-tasktaskthe ecosystem's routing rules, from an ecosystem checkout onlyno
wall-audittarget?ADR-006no
author-domainentity, area?SDK scoping rules, AST schemabuild-validate_brief, lsp-* and build-* steps
discover-requirementsarea, summary?nothing; the contract is the exeris://sdk/brief-schema resource; ends in build-validate_briefthe validation step
explain-my-buildnonenothing; calls build-explain_artefacts, build-get_detach_stateyes
diagnose-build-failureoutputSDK deprecation listthe build-explain_diagnostic step
migrate-sdk-versiontargetVersion?SDK deprecation listno

route-this-task without an ecosystem checkout answers that routing needs one and names a remedy. An unknown prompt, an unknown argument, a missing required argument or one over its bound is rejected as invalid params.

Configuration

Nothing needs setting for an application. Every variable is optional, and none can stop the server from booting.

VariableDefaultPurpose
EXERIS_PROJECT_ROOTnearest pom.xml above the working directoryThe project build-*, caps-* and sdk-* report on
EXERIS_MAVEN_REPO<localRepository> in ~/.m2/settings.xml, then ~/.m2/repositoryWhere published jars are looked up
EXERIS_KERNEL_VERSIONnewest release in the local repositoryThe diagnostics CLI version to launch
EXERIS_KERNEL_COMMAND / EXERIS_KERNEL_JARresolved from the local repositoryLaunch the kernel diagnostics CLI explicitly
EXERIS_LSP_COMMAND / EXERIS_LSP_JARnoneLaunch exeris-platform-lsp
EXERIS_LSP_WORKSPACEthe working directoryThe workspace the language server indexes
EXERIS_DOCS_ROOTa sibling exeris-docs checkout if present, else the bundled snapshotThe exeris-docs checkout to read
EXERIS_BRIDGE_MODEappcontributor for work on Exeris itself: source checkouts win over published jars

How each variable resolves, the launch ladder for the Java children, and the bundled reference data are described in the configuration reference.

Troubleshooting

Call bridge-health. It reports every family's state, with the reason and the remedy for each one that is unavailable, without starting any child process. bridge-version reports the build and the upstream releases its bundled data came from. The server also writes a one-line summary (mode=… docs=… lsp=… kernel=… build=… caps=… sdk=…) to stderr, which MCP clients show in their logs.

Versioning

The package follows semver. Until 1.0, a minor release may change a tool's output shape; the release notes list every change a client may notice. At 1.0 the tool names and input schemas are frozen.

The next release targets exeris-kernel 0.12.0, exeris-sdk 0.13.2 and exeris-tooling 0.10.0, all on Maven Central.

Links

License

Apache-2.0

來源:README.md,提交 18d4512

工具

31

docs-list_adrs

List all ADRs from the Exeris ecosystem registry. Each entry carries number, title, owning repo, scope, visibility, status, and link. Optional `status` filter narrows the result by the first token of the status cell (e.g. 'accepted', 'proposed', 'superseded', 'reserved').

輸入參數status

docs-get_adr

Fetch the full markdown body of a specific ADR by number. Resolves the link from the registry against the ecosystem root, so cross-repo ADRs (those whose content lives in a sibling repo) are read from their authoritative source.

輸入參數number必填

docs-get_template

Fetch one of the canonical decision-doc templates from exeris-docs/templates/. Three kinds: ADR (decision made), RFC (multi-option strategic question), RESEARCH (falsifiable hypothesis, lab-notebook shape).

輸入參數kind必填

docs-get_hla

Fetch the High-Level Architecture document (high-level-architecture.md) from exeris-docs. Canonical narrative of the three-tier model.

無需輸入參數。

docs-get_whitepaper

Fetch the B2B technical whitepaper (b2b-technical-whitepaper.md) from exeris-docs.

無需輸入參數。

docs-list_repos

List sibling Exeris repos under the ecosystem root that publish a `docs/` directory. Returned names are usable as `repo` input to `docs-list_repo_docs` and `docs-get_repo_doc`.

無需輸入參數。

docs-list_repo_docs

List markdown documents under `<repo>/docs/**` for an Exeris sibling repo. The `adr/` subdirectory is excluded — those are the registry's territory and reachable via `docs-list_adrs` / `docs-get_adr`. Use `docs-list_repos` to discover valid repo names.

輸入參數repo必填

docs-get_repo_doc

Fetch a specific markdown document from `<repo>/docs/<path>`. Use `docs-list_repo_docs` to discover valid paths.

輸入參數path必填repo必填

lsp-list_domains

List all @ExerisDomain types known to the active LSP session.

無需輸入參數。

lsp-describe_domain

Return the source-model description of an @ExerisDomain type: fields, actions, relationships, generated artefacts, and the `sourceDigest` that `lsp-preview_mutation` takes as its concurrency token.

輸入參數qualifiedName必填

lsp-list_actions

List all @Action methods across the workspace, with their owning @ExerisDomain.

無需輸入參數。

lsp-preview_mutation

Preview how the SDK's canonical writer would change an @ExerisDomain source file for one mutation, applied in memory. Returns `{ result, sourcePath, diff }`: a unified diff and the SDK outcome in `result.outcome` — SUCCESS, CONFLICT (the source drifted from the baseline; the result carries baseline, current and intended values), VALIDATION_ERROR, or NO_BASELINE. Nothing is written: apply the diff with your own file tools. For a stale-free preview, pass the entity's last-emitted metadata as `baselineJson` and the `sourceDigest` from `lsp-describe_domain` as `concurrencyToken`.

輸入參數op必填baselineJsonqualifiedName必填concurrencyToken

kernel-list_providers

List all SPI providers registered with the running kernel, including driver origin (community/enterprise priority).

無需輸入參數。

kernel-get_bootstrap_dag

Snapshot of the kernel bootstrap dependency DAG — nodes (subsystems) with their phase, declared dependencies, and running state.

無需輸入參數。

kernel-describe_subsystem

Detail for a single kernel subsystem by name (e.g. memory, crypto, persistence, graph, transport, events, flow, http, security).

輸入參數name必填

kernel-get_jvm_ergonomics

What the JVM running the kernel actually resolved at startup: selected GC, max/committed heap, visible processors, and the container limits it detected (cgroup CPU quota/period, memory cap, cpuset) plus large-page, CDS and AOT-cache state. Null fields mean the kernel could not determine that value. A kernel that does not implement this answers a snapshot with gcName 'unknown' and -1 byte counts.

無需輸入參數。

build-list_domains

List what this project's last build emitted into target/classes/exeris-metadata: every @ExerisDomain entity, plus the enums, capabilities and views the processor wrote alongside them, each with its kind. Use it to discover names before calling build-get_domain_metadata. A project that has not been built, or has no @ExerisDomain sources, returns present:false rather than an error.

無需輸入參數。

build-get_domain_metadata

Fetch the DomainMetadata JSON the annotation processor emitted for one declaration of this project — the authoritative AST the code generators consume, including fields, actions, events, relationships and the system-field flags. `name` is the Java simple name (e.g. 'Station'), as listed by build-list_domains. Returns the record verbatim, plus the schemaVersion and (when the build could compute one) the ADR-042 sourceDigest.

輸入參數kindname必填

build-explain_artefacts

List the files Exeris codegen has generated into this project, each with the generator that produced it and when that generator emits — handlers, services, repositories, domain errors, event publishers, graph projections, sagas, Flyway migrations, OpenAPI specs, and the project-wide bootstrap. Ask this BEFORE hand-writing SQL, a DTO or a controller for an Exeris entity: the build usually already emits it. Optional `entity` narrows to one entity's artefacts. Reports what the pipeline actually emitted, read from its own output manifest and explained by the generator catalogue exeris-tooling publishes with its codegen jar. Each artefact carries `candidates`: every catalogue row that can have written the path, first match first. One candidate means `generator` names it; several mean the path shape is shared and `generator` is null rather than a guess; none means the path is unrecognised. A project that has not run codegen returns present:false.

輸入參數entity

build-get_detach_state

Report whether this project's generated code is still pipeline-owned (L1, src/main/generated/java — regenerated on every build, so edits are lost) or has been detached into the developer's own sources (L2, src/main/java — owned, safe to edit). Ask this before editing anything under a generated tree. Returns the state, the observations behind it, and how many files the pipeline claims.

無需輸入參數。

build-explain_diagnostic

Decode an error, warning or note exeris-tooling printed — an annotation-processor message, a codegen plugin goal failure or warning, a capability-graph or cap-tier Wall refusal, a missing runtime driver, a code-generation pipeline or CodegenMain line, or an exeris-initializr error. Paste the diagnostic text verbatim; returns what it means, the rule behind it, and what to do. Looks each diagnostic up by its stable EXT- identifier (ADR-095), which exeris-tooling prints from 0.9.0, and falls back to message text only for output that carries none. An identifier with no catalogue entry is named back as a catalogue gap, and a diagnostic it does not recognise is reported as not in the catalogue — never as not being an Exeris problem.

輸入參數text必填

caps-list_capabilities

List the capability modules composed into this project, from the build-time cap-manifest.json: each module's qualified name, the services it provides with their versions, and which module owns the lifecycle. Also returns initOrder exactly as the manifest states it. A project with no capabilities returns an empty list, not an error.

無需輸入參數。

caps-describe_composition

Report the composition stamp from cap-manifest.json: whether the capability graph validated, the composition version, and the content binding digest, alongside the manifest schema version, the module count and initOrder. Answers 'is this build's composition trustworthy, and which build is it'. A project with no capabilities returns a present:false answer, not an error.

無需輸入參數。

sdk-list_annotations

List Exeris SDK annotations from the authoring contract: name, qualified name, package, targets, retention, and purpose. Supports optional filtering by package (e.g. 'system', 'security', 'capability', or full package name), target (e.g. 'METHOD', 'TYPE', 'FIELD'), or query string.

輸入參數querytargetpackage

sdk-describe_annotation

Describe a specific Exeris SDK annotation: simple and qualified name, owning package rationale, targets, retention, purpose, detailed description, all attributes (with types, defaults, required-ness, descriptions, and deprecations), and annotation-level deprecation status.

輸入參數annotation必填

sdk-get_scoping_rules

Get canonical authoring contract scoping rules for Exeris SDK annotations (including @Field vs @Validation split, FieldMetadata as single AST carrier per ADR-054, derived SQL NOT NULL and API not-blank generator semantics, form lifecycle scoping, deprecations, and sibling vs nested form trap). Supports optional filtering by rule ID or query string.

輸入參數rule

sdk-list_deprecations

List all deprecated Exeris SDK annotations and attributes across the authoring contract, including replacement guidance, since version, and forRemoval status. Supports filtering by package or forRemoval only.

輸入參數packageforRemovalOnly

sdk-get_ast_schema

Get JSON Schema for the Exeris build-time DomainMetadata AST and sibling records. If 'definition' is omitted, returns the top-level schema envelope, reader requirements (such as Jackson 3 constraints), and definition list. If 'definition' is specified (e.g. 'DomainMetadata', 'FieldMetadata', 'ActionMetadata'), returns the schema definition for that specific record.

輸入參數definition

bridge-version

Identify this MCP server: package name and version, the Node runtime it is running on, which persona mode it resolved to, and what bundled reference data it carries. Use it to confirm which bridge build an answer came from, and which upstream release that data reflects.

無需輸入參數。

bridge-health

Report which tool families can serve requests and why the others cannot. Each family carries its state and, when unavailable, the reason and the remedy. Families backed by a child process also report that process's current state — without starting it. Call this first when a tool returns 'family_unavailable'.

無需輸入參數。

版本歷史

1
  1. v0.8.0最新Oct 21, 2026

評分

已滿足適用檢查項的 80%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。