Exeris AI Bridge

io.github.exeris-systemsPublished by GitHub account exeris-systemsv0.8.0Updated Nov 4, 2026

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

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Read-only MCP server that gives an assistant the Exeris ecosystem context: ADRs, SDK annotation contract, build output, kernel diagnostics.

What you can do
  • Search and read Exeris docs: ADR registry, high-level architecture, whitepaper, decision templates, per-repo markdown
  • Look up SDK annotations, attribute contracts, scoping rules, deprecations and the DomainMetadata AST schema
  • Inspect a project's last build: emitted domains, generated artefacts, detach state, capability composition, and decode build diagnostics
  • Introspect a running kernel: SPI providers, bootstrap DAG, subsystem detail, resolved JVM ergonomics
  • Preview an @ExerisDomain mutation as a diff and list domains and actions from the language server
  • Report the bridge's own version and which tool families are available
When to use it
For developers writing applications on the Exeris framework who want an assistant to check ADRs and the SDK contract before writing code, and to see what their build generated instead of hand-writing it. Also useful for diagnosing build failures and inspecting a running kernel.
Requirements
Local Node.js 20 or newer process, typically started with npx inside the project so it finds the pom.xml. Optional environment variables set the project root, Maven repository, docs checkout, kernel and language-server launch commands. Kernel tools need JDK 25 and the diagnostics CLI in the local Maven repository; language-server tools need a locally built exeris-platform-lsp. No network access at run time.
Before you install
Every tool is documented as a read; the bridge does not write to the project or change kernel state. It reads local Maven artefacts and project files, and launches Java child processes for kernel and language-server families. Families whose dependency is missing return a family_unavailable result rather than failing, so check bridge-health before relying on a family.

Installation

In SourceWeft

  1. Open Exeris AI Bridge in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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

Source: README.md at commit 18d4512

Tools

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').

Parametersstatus

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.

Parametersnumberrequired

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).

Parameterskindrequired

docs-get_hla

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

Takes no parameters.

docs-get_whitepaper

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

Takes no parameters.

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`.

Takes no parameters.

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.

Parametersreporequired

docs-get_repo_doc

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

Parameterspathrequiredreporequired

lsp-list_domains

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

Takes no parameters.

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.

ParametersqualifiedNamerequired

lsp-list_actions

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

Takes no parameters.

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`.

ParametersoprequiredbaselineJsonqualifiedNamerequiredconcurrencyToken

kernel-list_providers

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

Takes no parameters.

kernel-get_bootstrap_dag

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

Takes no parameters.

kernel-describe_subsystem

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

Parametersnamerequired

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.

Takes no parameters.

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.

Takes no parameters.

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.

Parameterskindnamerequired

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.

Parametersentity

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.

Takes no parameters.

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.

Parameterstextrequired

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.

Takes no parameters.

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.

Takes no parameters.

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.

Parametersquerytargetpackage

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.

Parametersannotationrequired

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.

Parametersrule

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.

ParameterspackageforRemovalOnly

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.

Parametersdefinition

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.

Takes no parameters.

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'.

Takes no parameters.

Version history

1
  1. v0.8.0LatestOct 21, 2026

Score

80% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.