CDS pluginCDS plugintypeInstalls into a CAP project and extends the runtime. CAP loads it through cds.requires or the plugin hook.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

cap-mcp-apps

A CAP plugin that swaps in its own MCP protocol adapter so the results of the @cap-js/mcp query tool open as a @ui5/webcomponents table in hosts that support MCP Apps.

In a host that supports MCP Apps, the results of the query tool of @cap-js/mcp open as a table, served as the resource ui://cap-query-table/index.html. The plugin sets protocols.mcp.impl to its own adapter, which registers the describe, query and call tools from the lib modules of @cap-js/mcp and attaches the table to query; setting cds.mcp.apps.queryTable to false keeps the stock adapter. Unbound service actions annotated with @mcp.apps.Action appear as buttons on the toolbar or on each row, with a form inferred from the action's parameters, and a button calls the existing call tool and then re-runs the last query. Only actions the current MCP user may call under @requires or @restrict are shown. The table is one HTML file bundled from @ui5/webcomponents at build time, with everything inlined because hosts with a strict content security policy block CDN imports.

Facts

Latestv0.1.0ReleasedLast pushLicenceApache-2.0

Where it sits

Lives in
Provides
Generative UICAPGenerative UIcapabilityPutting an interface inside an agent conversation: a tool result or an agent's reply shown as controls a person can work in, where text would have been. Two things go by the name. A prebuilt web UI that an MCP tool points to and the host renders in a sandboxed iframe, which the MCP Apps extension specifies, is selected by the model and not generated by it; a user interface rendered from a stream of JSON objects the agent sends, which the A2UI specification describes, is. Generating an application's source at design time is [generators](capability:generators).
Flavors
Requires
@cap-js/mcp@cap-js/mcpartifactThe MCP adapter whose describe, query and call tools this plugin re-registers, the query tool with the table attached.@sap/cds≥ 9@sap/cdsartifactThe CAP Node.js runtime that loads the plugin from cds-plugin.js and serves the MCP protocol through the adapter it sets.

Who is behind it

Abdelrahman Mohamed ElghannamAbdelrahman Mohamed ElghannamPersonMaintains this
In the atlas: maintains 1, contributes to 1
@aelghanam
maintainer

Before choosing this

Conditions

LicenceSAP Developer License Agreement 3.2 CAP§ 1, 2, 3A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.
  • § 2 Intellectual Property. The agreement retains SAP's rights in the covered materials and limits making APIs, tools or software available to third parties, while preserving ownership of customer applications subject to SAP's underlying rights.
  • § 3 Artificial Intelligence Training. The agreement prohibits use of the covered materials and customer applications for training artificial-intelligence models or systems.
SAP Developer License Agreement 3.2 CAP →

What it declares

Every artifact

Type
CDS plugin
Origin
Independently maintained
Runtime
Node.js

As a CDS plugin

Declared for
>=9
Distributed through
npm

Connections3

cap-mcp-apps connectionscap-mcp-appsPROVIDES→ provides1provides stated Registers the query tool of [@cap-js/mcp](artifact:cap-js-mcp) as an MCP App tool pointing at a prebuilt ui:// table, so a host that supports MCP Apps shows the query's structured result as a [@ui5/webcomponents](artifact:ui5-webcomponents) table with buttons for the annotated unbound actions the current user may call. cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — lib/adapter.js: https://github.com/aelghanam/mcp-apps/blob/main/lib/adapter.js cap-mcp-apps — lib/adapter.js: https://github.com/aelghanam/mcp-apps/blob/main/lib/adapter.js cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — build.js: https://github.com/aelghanam/mcp-apps/blob/main/build.jsGenerative UINEEDS→ needs2needs declared The MCP adapter whose describe, query and call tools this plugin re-registers, the query tool with the table attached. cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — lib/adapter.js: https://github.com/aelghanam/mcp-apps/blob/main/lib/adapter.js cap-mcp-apps — package.json: https://github.com/aelghanam/mcp-apps/blob/main/package.json@cap-js/mcpneeds declared The CAP Node.js runtime that loads the plugin from cds-plugin.js and serves the MCP protocol through the adapter it sets. cap-mcp-apps — README: https://github.com/aelghanam/mcp-apps cap-mcp-apps — package.json: https://github.com/aelghanam/mcp-apps/blob/main/package.json@sap/cds

Install

npm add cap-mcp-apps

Derived from the package name. No recipe recorded; the README has the configuration.

README

quoted from aelghanam/mcp-apps under Apache-2.0, read
aelghanam/mcp-apps/README.mdOn GitHub

cap-mcp-apps

CDS plugin for CAP Node.js. It enriches @cap-js/mcp query tool results with an MCP App (UI5 Web Components table) when the host supports MCP Apps.

CAP loads it automatically. A consuming app only needs this package in dependencies. There is no server.js protocol override.

Install

npm add @cap-js/mcp cap-mcp-apps

From GitHub before it is published to npm:

{
  "dependencies": {
    "cap-mcp-apps": "github:aelghanam/mcp-apps"
  }
}

Annotate services with @mcp as usual. On cds watch / cds serve, CAP detects cds-plugin.js, merges this package's cds configuration, and loads the plugin.

The plugin contributes the annotation vocabulary in vocab/ through:

"cds": {
  "requires": {
    "cap-mcp-apps-vocab": {
      "model": "cap-mcp-apps/vocab"
    }
  }
}

Peer packages (@sap/cds, @cap-js/mcp, express) resolve from the consuming app. .npmrc sets omit=peer so a nested @sap/cds is not installed inside this package.

Configuration

Query-table enrichment is on by default. To keep the stock @cap-js/mcp adapter, set:

{
  "cds": {
    "mcp": {
      "apps": {
        "queryTable": false
      }
    }
  }
}

When queryTable is false, this plugin does not override protocols.mcp.impl.

Action buttons (@mcp.apps.Action)

Unbound service actions can be shown in the MCP App UI. The annotation shape is declared in vocab/index.cds (mcp.apps.Action / mcp.apps.Placement).

annotate MyService.ping with @mcp.apps.Action: {
  placement: #Toolbar,
  label: 'Ping'
};

annotate MyService.submitOrder with @mcp.apps.Action: {
  placement: #Row,
  label: 'Submit Order',
  entities: [Books, ListOfBooks]
};
FieldCDL formCSNMeaning
placement#Toolbar / #Row{ "#": "…" }Below the table, or on each row
labelstringstringButton text (defaults to the action name)
entities[Books, …] type refs[{ "=": "Books" }, …]Optional. Omit to show for every queried entity.

Use type references [Books], not element expressions (Books). Parentheses are CXL paths resolved in the action scope and fail to compile for entity names.

Input forms are inferred from CDS parameters: no parameters calls immediately, scalars become inputs, structured or many parameters use a JSON textarea.

The App invokes the existing MCP call tool via app.callServerTool. After a successful action it re-runs the last query (structuredContent.queryArgs). A Refresh button in the header does the same.

Only actions the current MCP user may call (@requires / @restrict) are included.

Logging

const LOG = cds.log('cap-mcp-apps')
{
  "cds": {
    "log": {
      "[development]": {
        "levels": {
          "cap-mcp-apps": "debug"
        }
      }
    }
  }
}

Develop this plugin

src/ is the App UI. npm run build bundles it into assets/query-table.html, which the adapter serves at runtime. UI5 Web Components and esbuild are devDependencies of this package.

npm install
npm run build

Link it into a CAP app with "cap-mcp-apps": "file:../cap-mcp-apps", then run cds watch in that app.

License

PolyForm Small Business 1.0.0. Use is free for an individual, and for an organization with fewer than 100 people and under the license's revenue cap (1,000,000 USD in 2019 dollars, adjusted for inflation). Larger organizations are not covered and need a separate commercial license from the copyright holder.

The CDS annotation namespace stays mcp.apps (@mcp.apps.Action). That name is the annotation API, not the npm package name.

Apache-2.0, read

History

Latest
3downloads per week, npm
Weekly downloads for cap-mcp-apps26 complete calendar weeks from 2026-04-27 to 2026-10-25; the latest total is 3.27 Apr – 3 May: 04 May – 10 May: 011 May – 17 May: 018 May – 24 May: 025 May – 31 May: 01 Jun – 7 Jun: 08 Jun – 14 Jun: 015 Jun – 21 Jun: 022 Jun – 28 Jun: 029 Jun – 5 Jul: 06 Jul – 12 Jul: 013 Jul – 19 Jul: 020 Jul – 26 Jul: 027 Jul – 2 Aug: 03 Aug – 9 Aug: 010 Aug – 16 Aug: 017 Aug – 23 Aug: 024 Aug – 30 Aug: 031 Aug – 6 Sept: 07 Sept – 13 Sept: 014 Sept – 20 Sept: 021 Sept – 27 Sept: 028 Sept – 4 Oct: 1885 Oct – 11 Oct: 1412 Oct – 18 Oct: 1019 Oct – 25 Oct: 3

Details

Sources4
The maintainer, claiming itdiscovered herechecked
npm registry, cap-mcp-appsversion, releases, installschecked
github.com/git+https://github.com/aelghanam/mcp-apps.gittree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
declared for>=9
latestv0.1.0
first release
releases and cadence1
discovered viaThe maintainer, claiming it
first seen in the atlas
ecosystem and domaincap, ai-and-agents
Flavors1
Node.js
“CDS plugin for CAP Node.js.” — cap-mcp-apps — READMEchecked
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:aelghanam-cap-mcp-apps
JSON
/artifacts/aelghanam-cap-mcp-apps.json
MCP
Connecting an agent