{"ref":"artifact:aelghanam-cap-mcp-apps","page":"/artifacts/aelghanam-cap-mcp-apps","json":"/artifacts/aelghanam-cap-mcp-apps.json","generated":"2026-10-30","drafted_with_ai":true,"entity":{"id":"aelghanam-cap-mcp-apps","name":"cap-mcp-apps","artifact_type":"cds-plugin","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"CDS plugin for CAP Node.js."}}],"domain":"ai-and-agents","origin_ring":"independent","description":{"one_line":"A CAP plugin that swaps in its own MCP protocol adapter so the results of the [@cap-js/mcp](artifact:cap-js-mcp) query tool open as a [@ui5/webcomponents](artifact:ui5-webcomponents) table in hosts that support MCP Apps.","short":"Shows @cap-js/mcp query results as a table inside the agent host","what_it_solves":"In a host that supports MCP Apps, the results of the query tool of [@cap-js/mcp](artifact: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](artifact:ui5-webcomponents) at build time, with everything inlined because hosts with a strict content security policy block CDN imports."},"links":{"repo":"https://github.com/aelghanam/mcp-apps","npm":"https://www.npmjs.com/package/cap-mcp-apps"},"identity":{"author":"Abdelrahman Elghannam","license":"PolyForm-Small-Business-1.0.0"},"maintainers":["actor:aelghanam"],"compat":{"runtimes":["node"]},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"npm add @cap-js/mcp cap-mcp-apps"}]}},"provides":[{"capability":"capability:generative-ui","what_it_does":"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.","sources":[{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"It enriches [`@cap-js/mcp`](https://www.npmjs.com/package/@cap-js/mcp) **query** tool results with an MCP App (UI5 Web Components table) when the host supports MCP Apps."},{"url":"https://github.com/aelghanam/mcp-apps/blob/main/lib/adapter.js","title":"cap-mcp-apps — lib/adapter.js","checked":"2026-10-27","quote":"const QUERY_TABLE_RESOURCE_URI = 'ui://cap-query-table/index.html'"},{"url":"https://github.com/aelghanam/mcp-apps/blob/main/lib/adapter.js","title":"cap-mcp-apps — lib/adapter.js","checked":"2026-10-27","quote":"MCP protocol adapter that mirrors @cap-js/mcp/lib but registers `query` as an MCP App tool and serves a ui:// HTML table for structuredContent."},{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"When `queryTable` is `false`, this plugin does not override `protocols.mcp.impl`."},{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"Unbound service actions can be shown in the MCP App UI."},{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"Input forms are inferred from CDS parameters: no parameters calls immediately, scalars become inputs, structured or `many` parameters use a JSON textarea."},{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"After a successful action it re-runs the last `query` (`structuredContent.queryArgs`)."},{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"Only actions the current MCP user may call (`@requires` / `@restrict`) are included."},{"url":"https://github.com/aelghanam/mcp-apps/blob/main/build.js","title":"cap-mcp-apps — build.js","checked":"2026-10-27","quote":"Hosts with strict CSP often block CDN imports; inlining avoids that."}]}],"requires":[{"ref":"artifact:cap-js-mcp","requirement":"required","for":"The MCP adapter whose describe, query and call tools this plugin re-registers, the query tool with the table attached.","sources":[{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"npm add @cap-js/mcp cap-mcp-apps"},{"url":"https://github.com/aelghanam/mcp-apps/blob/main/lib/adapter.js","title":"cap-mcp-apps — lib/adapter.js","checked":"2026-10-27","quote":"const tools = require('@cap-js/mcp/lib/tools')"},{"url":"https://github.com/aelghanam/mcp-apps/blob/main/package.json","title":"cap-mcp-apps — package.json","checked":"2026-10-27","quote":"\"@cap-js/mcp\": \">=1.4.0\""}]},{"ref":"artifact:sap-cds","requirement":"required","for":"The CAP Node.js runtime that loads the plugin from cds-plugin.js and serves the MCP protocol through the adapter it sets.","sources":[{"url":"https://github.com/aelghanam/mcp-apps","title":"cap-mcp-apps — README","checked":"2026-10-27","quote":"On `cds watch` / `cds serve`, CAP detects `cds-plugin.js`, merges this package's `cds` configuration, and loads the plugin."},{"url":"https://github.com/aelghanam/mcp-apps/blob/main/package.json","title":"cap-mcp-apps — package.json","checked":"2026-10-27","quote":"\"@sap/cds\": \">=9\""}]}],"source_available":true,"provenance":{"discovered_via":[{"source":"source:maintainer"}],"first_seen":"2026-10-27","claimed_by":"actor:aelghanam"},"drafted_with_ai":true,"contributors":["actor:aelghanam"]},"effective_normative_relations":[{"instrument":"instrument:sap-developer-license-3-2-cap","relation":"use-constrained-by","sections":["1","2","3"],"applies_when":"A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.","note":"This is inherited applicability, not a licence verdict about the artifact itself. Review the agreement for the actual materials and use; an explicit artifact relationship to another revision takes precedence.","scope":{"kind":"artifact"},"sources":[{"url":"https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt","title":"SAP Developer License Agreement 3.2 CAP","checked":"2026-09-16","quote":"documentation, plug-ins, templates, scripts and sample code, libraries, software development kits"}],"inherited_from":"cap-plugins-and-applications","relevant_capabilities":["agent-systems-access","async-processing","data-import-export","database-connectors","deployment","destinations","llm-integration","mcp-servers","plugin-authoring","replication","retrieval-augmented-generation","rfc-connectivity"]}],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"1 month since release"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=9 — includes cds 10 and 9"},{"label":"Survived majors","tier":"unknown","evidence":"first released after @sap/cds 10 shipped"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"fair","evidence":"README 4 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":4,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-28","latest_version":"0.1.0","majors":{"0.1":{"version":"0.1.0","date":"2026-10-03"}},"license":"PolyForm-Small-Business-1.0.0","first_release":"2026-10-03","last_release":"2026-10-03","releases":1,"cadence_days":null,"maintainers":1,"repository":"git+https://github.com/aelghanam/mcp-apps.git","repository_directory":null,"peer_cds":">=9","dependencies":1,"node_engine":">=20","test_script":false,"types":false,"downloads_weekly":4,"downloads_monthly":216,"stars":0,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-10-04","license_spdx":"Apache-2.0","org_owned":false,"default_branch":"main","created_at":"2026-10-03T05:16:10Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":3831,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-10-03","last_commit":"2026-10-04","commits":3,"contributors":1,"readme_path":"README.md","readme_sha":"1d13aee254abe06cb65787dbd60c0e5d21e12b78","months_since_release":1,"dormant":false,"repo_read":"2026-10-28"},"edges":{"maintainers":[{"ref":"actor:aelghanam","name":"Abdelrahman Mohamed Elghannam","json":"/actors/aelghanam.json"}],"contributors":[{"ref":"actor:aelghanam","name":"Abdelrahman Mohamed Elghannam","json":"/actors/aelghanam.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}