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 分

    请在仓库或注册中心条目中声明许可证。