{"ref":"artifact:clementringot-rosa","page":"/artifacts/clementringot-rosa","json":"/artifacts/clementringot-rosa.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"clementringot-rosa","name":"ROSA","artifact_type":"mcp-server","ecosystem":"abap","domain":"ai-and-agents","origin_ring":"independent","description":{"one_line":"Answers whether an SAP object is released for ABAP Cloud, and what to use instead when it is not — served from SAP's own Cloudification Repository over MCP and over plain REST.","short":"MCP server answering whether SAP objects are released for ABAP Cloud","what_it_solves":"The clean-core question an agent gets wrong silently: `MARA` looks like a table an ABAP program may read, and in ABAP Cloud it is not one. ROSA plugs into [SAP's Cloudification Repository](https://github.com/SAP/abap-atc-cr-cv-s4hc) — the published source of truth for released objects and their successors — and exposes it two ways off the same logic: MCP on `POST /mcp` for agents that speak it, and `GET /api/*` for skills, scripts and pipelines that only speak HTTP. Ask whether `MARA` is available and the answer comes back with `I_PRODUCT` as the replacement. Its public hosted instance has been retired, by the README's own account, so it runs where you put it: through npx, as a container image, or on BTP Cloud Foundry.","when_not_to_use":"It answers about the object catalogue, not about your code: nothing here reads your system, so it will tell you a table is not released and not that you used it. That check is ATC's, and this is what makes ATC's answer actionable."},"links":{"repo":"https://github.com/ClementRingot/ROSA","npm":"https://www.npmjs.com/package/@rosa-mcp/server"},"provenance":{"discovered_via":[{"source":"source:sap-ai-mcp-servers"}],"first_seen":"2026-09-10"},"history":[{"date":"2026-09-10","field":"entry","from":null,"to":"created","reason":"Triaged out of data/crawled/mcp-candidates.json, the sap-ai-mcp-servers sweep. Written from the repository's own README; the catalogue is credited as where it was found and its words are not reused."},{"date":"2026-09-11","field":"description.what_it_solves","from":null,"to":"corrected against the README","reason":"Corrected against the README: 'The previously hosted public instance (on Railway) has been retired'."}],"serves_ecosystems":["btp"],"flavors":[{"key":"abap-cloud","source":{"url":"https://github.com/ClementRingot/ROSA","title":"ClementRingot/ROSA — README","checked":"2026-09-13","quote":"S/4HANA Cloud Public, BTP ABAP Environment, Private Cloud,"}},{"key":"standard-abap","source":{"url":"https://github.com/ClementRingot/ROSA","title":"ClementRingot/ROSA — README","checked":"2026-09-13","quote":"On-Premise; PCE versions discovered dynamically."}}],"identity":{"license":"MIT"},"compat":{"runtimes":["node"]},"provides":[{"capability":"capability:abap-cloud-readiness","what_it_does":"Serves the Cloudification Repository's released-object data as tools and as a REST API, so the question \"is this available in ABAP Cloud, and what replaces it\" is answerable by an agent mid-task rather than looked up afterwards.","sources":[{"url":"https://github.com/ClementRingot/ROSA","title":"ROSA — README","checked":"2026-09-10","quote":"gives AI agents real-time knowledge of which SAP objects are released for ABAP Cloud / Clean Core"}]}],"type_properties":{"runs":{"value":["central-server","local-process"],"sources":[{"url":"https://github.com/ClementRingot/ROSA","title":"ROSA — README","checked":"2026-09-11","quote":"docker run -p 3001:3001 ghcr.io/clementringot/rosa"},{"url":"https://github.com/ClementRingot/ROSA","title":"ROSA — README","checked":"2026-09-11","quote":"\"args\": [\"-y\", \"@rosa-mcp/server\"]"}]},"transports":{"value":["stdio","http"],"sources":[{"url":"https://github.com/ClementRingot/ROSA","title":"ROSA — README","checked":"2026-09-11","quote":"ROSA runs over **stdio** (default; local MCP clients) or **HTTP** (`--http` /"}]},"auth":{"value":["oauth","api-key"],"sources":[{"url":"https://github.com/ClementRingot/ROSA","title":"ROSA — README","checked":"2026-09-11","quote":"**public**, **OIDC / OAuth 2.1**,"},{"url":"https://github.com/ClementRingot/ROSA","title":"ROSA — README","checked":"2026-09-11","quote":"**XSUAA** (SAP BTP), and **API keys** — with no rebuild:"}]},"guardrails":[{"source":{"url":"https://github.com/ClementRingot/ROSA","title":"ROSA — README","checked":"2026-09-11","quote":"no SAP system connection required."}}]},"drafted_with_ai":true,"maintainers":["actor:clementringot"],"contributors":["actor:clementringot"],"requires":[{"ref":"artifact:sap-abap-atc-cr-cv-s4hc","for":"the catalogue of released SAP objects and their successors that ROSA searches and classifies, from the [Cloudification Repository](artifact:sap-abap-atc-cr-cv-s4hc)","requirement":"required","basis":"binding","role":"data-source","sources":[{"url":"https://github.com/clementringot/rosa","title":"rosa README","checked":"2026-10-18","quote":"It plugs into the [SAP Cloudification Repository](https://github.com/SAP/abap-atc-cr-cv-s4hc)\n(the official source of truth) and exposes it **two ways**, sharing the same\nbusiness logic — no feature gap between them:"}]},{"ref":"external:docker","for":"running ROSA as a self-hosted server using the published GHCR image","requirement":"conditional","condition":"deployed via the pre-built Docker image","basis":"binding","role":"installation","sources":[{"url":"https://raw.githubusercontent.com/ClementRingot/ROSA/main/docs/DEPLOYMENT.md","title":"rosa: docs/DEPLOYMENT.md","checked":"2026-10-18","quote":"docker run --rm -p 3001:3001 ghcr.io/clementringot/rosa:latest"}]},{"ref":"artifact:btp-authorization-and-trust-management","for":"authenticating MCP/API clients against [SAP Authorization and Trust Management service](artifact:btp-authorization-and-trust-management) on SAP BTP","requirement":"conditional","condition":"HTTP transport running on SAP BTP Cloud Foundry with an xsuaa service binding (XSUAA auth mode)","basis":"binding","role":"authentication","sources":[{"url":"https://raw.githubusercontent.com/ClementRingot/ROSA/main/docs/ARCHITECTURE.md","title":"rosa: docs/ARCHITECTURE.md","checked":"2026-10-18","quote":"Auto-detected when the app runs on Cloud Foundry with an XSUAA service binding\n(`VCAP_SERVICES`)."}]},{"ref":"artifact:arc-mcp-xsuaa-auth","for":"implementing the MCP OAuth 2.1 proxy and JWT verification used by [@arc-mcp/xsuaa-auth](artifact:arc-mcp-xsuaa-auth) in XSUAA mode","requirement":"conditional","condition":"XSUAA auth mode is active","basis":"binding","role":"authentication","sources":[{"url":"https://raw.githubusercontent.com/ClementRingot/ROSA/main/docs/ARCHITECTURE.md","title":"rosa: docs/ARCHITECTURE.md","checked":"2026-10-18","quote":"Backed by [`@arc-mcp/xsuaa-auth`](https://www.npmjs.com/package/@arc-mcp/xsuaa-auth),\nwhich implements the full MCP OAuth 2.1 proxy: Protected Resource Metadata,\nstateless Dynamic Client Registration (DCR), an OAuth callback proxy, and JWT\nverification against the XSUAA JWKS."}]},{"ref":"artifact:btp-cloud-foundry-runtime","for":"running ROSA as an application in SAP BTP's Cloud Foundry space","requirement":"conditional","condition":"deployed via the MTA or npm wrapper path on SAP BTP Cloud Foundry","basis":"binding","role":"hosting","sources":[{"url":"https://raw.githubusercontent.com/ClementRingot/ROSA/main/docs/cloud-foundry-classic.md","title":"rosa: docs/cloud-foundry-classic.md","checked":"2026-10-18","quote":"On SAP BTP Cloud Foundry, use the MTA / npm paths in\n[DEPLOYMENT.md](./DEPLOYMENT.md#sap-btp-cloud-foundry-two-paths) instead."}]}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"4 contributors"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"good","evidence":"Changesets green, 2026-09-28"}],"practice":[{"label":"Tests","tier":"good","evidence":"7 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 4 pages, README 8 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":28,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":28,"forks":3,"open_issues":6,"archived":false,"pushed_at":"2026-10-13","license_spdx":"MIT","org_owned":false,"default_branch":"main","contributors":4,"tree_truncated":false,"test_files":7,"workflows":3,"other_ci":false,"readme_bytes":8606,"docs_files":4,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-09-28","ci_workflow":"Changesets","ci_event":"push","readme_path":"README.md","readme_sha":"c3fc7ff12c9803dc4f23ade0b0c62a46acc1cec9","created_at":"2026-03-09T19:31:06Z","open_prs":6,"first_commit":"2026-03-09","last_commit":"2026-09-28","commits":101,"repo_read":"2026-10-26"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/ClementRingot/ROSA/blob/main/CHANGELOG.md"},"format":"conventional","releases":[{"version":"1.14.1","heading":"1.14.1","url":"https://github.com/ClementRingot/ROSA/blob/main/CHANGELOG.md#1141","sections":[{"kind":"fix","heading":"Patch Changes","items":1}],"hash":"0b2a19237486277d"},{"version":"1.14.0","date":"2026-07-06","date_source":"heading","heading":"1.14.0 (2026-07-06)","url":"https://github.com/ClementRingot/ROSA/blob/main/CHANGELOG.md#1140-2026-07-06","sections":[{"kind":"feature","heading":"Features","items":1}],"hash":"06f89c14fa0cdc6d"},{"version":"1.13.2","date":"2026-07-06","date_source":"heading","heading":"1.13.2 (2026-07-06)","url":"https://github.com/ClementRingot/ROSA/blob/main/CHANGELOG.md#1132-2026-07-06","sections":[{"kind":"fix","heading":"Bug Fixes","items":1}],"hash":"7f9f56ad105a7b93"},{"version":"1.13.1","date":"2026-07-06","date_source":"heading","heading":"1.13.1 (2026-07-06)","url":"https://github.com/ClementRingot/ROSA/blob/main/CHANGELOG.md#1131-2026-07-06","sections":[{"kind":"fix","heading":"Bug Fixes","items":3}],"hash":"71df54965355e863"},{"version":"1.13.0","date":"2026-07-06","date_source":"heading","heading":"1.13.0 (2026-07-06)","url":"https://github.com/ClementRingot/ROSA/blob/main/CHANGELOG.md#1130-2026-07-06","sections":[{"kind":"feature","heading":"Features","items":4}],"hash":"9808c2f50993791b"},{"version":"1.12.6","date":"2026-03-31","date_source":"heading","heading":"[1.12.6] - 2026-03-31","url":"https://github.com/ClementRingot/ROSA/blob/main/CHANGELOG.md#1126---2026-03-31","sections":[],"hash":"329960017c91fdc0"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:clementringot","name":"Clément Ringot","json":"/actors/clementringot.json"}],"contributors":[{"ref":"actor:clementringot","name":"Clément Ringot","json":"/actors/clementringot.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}