{"ref":"artifact:furkanaksy838-cap-mcp-guard","page":"/artifacts/furkanaksy838-cap-mcp-guard","json":"/artifacts/furkanaksy838-cap-mcp-guard.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"furkanaksy838-cap-mcp-guard","name":"cap-mcp-guard","artifact_type":"cds-plugin","ecosystem":"cap","domain":"operations-and-runtime","origin_ring":"independent","description":{"one_line":"A CDS plugin — the trust layer for AI agents accessing SAP CAP business data — request interception, policy enforcement, field masking/pseudonymization, and OpenTelemetry-native observability for MCP-enabled applications.","short":"Policy enforcement and field masking for MCP-enabled CAP apps"},"links":{"npm":"https://www.npmjs.com/package/cap-mcp-guard","repo":"https://github.com/furkanaksy838/mcp"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/furkanaksy838/mcp","title":"cap-mcp-guard — README","checked":"2026-10-18","quote":"npm install --save cap-mcp-guard"}]}},"provides":[{"capability":"capability:telemetry","what_it_does":"Turns each intercepted agent request into an OpenTelemetry span through @opentelemetry/api, with attributes shaped on OpenTelemetry's GenAI semantic conventions and the policy decision on it, linked into the caller's trace by the W3C traceparent where one is present. It ships no exporter: the spans appear in whatever OpenTelemetry SDK the application already has configured, and the span can be switched off per call.","sources":[{"url":"https://raw.githubusercontent.com/furkanaksy838/mcp/master/README.md","title":"cap-mcp-guard — README, OpenTelemetry spans","checked":"2026-10-15","quote":"- **OpenTelemetry spans** — every request also becomes a real span via `@opentelemetry/api`. If your app already has an OTel SDK configured (any OTLP-compatible backend — Grafana, Jaeger, Datadog, SAP Cloud Logging), the guard's spans just show up there, correctly linked into the caller's trace via W3C Trace Context (`traceparent`/`tracestate`) when present — no extra mapping needed, because the context schema was built against OTel's GenAI semantic conventions (`gen_ai.*`) from the start."},{"url":"https://raw.githubusercontent.com/furkanaksy838/mcp/master/README.md","title":"cap-mcp-guard — README, audit and OTel","checked":"2026-10-15","quote":"Audit and OTel run independently of each other and can each be disabled per-call (`audit: false`,"}],"facets":[{"key":"signals","value":["Traces"],"source":{"url":"https://raw.githubusercontent.com/furkanaksy838/mcp/master/README.md","title":"cap-mcp-guard — README, OpenTelemetry spans","checked":"2026-10-15","quote":"- **OpenTelemetry spans** — every request also becomes a real span via `@opentelemetry/api`."}}]}],"provenance":{"discovered_via":[{"source":"source:npm"},{"source":"source:discover"}],"first_seen":"2026-09-16"},"drafted_with_ai":true,"maintainers":["actor:furkanaksy838"],"contributors":["actor:furkanaksy838"],"history":[{"date":"2026-10-15","field":"provides","from":"a bare ref","to":"what it does for telemetry, with the stated signal","reason":"Telemetry curation for the CAP door. The edge said nothing about what the plugin contributes, and the README's own statement is narrow and conditional: one span per agent request, emitted into an OpenTelemetry SDK the application configures, with no exporter of its own. Read against the README at the master branch, last pushed 2026-08-14."}]},"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":"2 months since release"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-08, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=7 — 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":"good","evidence":"21 test files, npm test"},{"label":"Docs","tier":"good","evidence":"README 46 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":0,"unit":"installs/week"},{"value":2,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.14.0","majors":{"0.1":{"version":"0.1.0","date":"2026-07-21"},"0.2":{"version":"0.2.0","date":"2026-07-21"},"0.3":{"version":"0.3.0","date":"2026-07-27"},"0.4":{"version":"0.4.0","date":"2026-07-28"},"0.5":{"version":"0.5.0","date":"2026-07-28"},"0.6":{"version":"0.6.0","date":"2026-08-04"},"0.7":{"version":"0.7.0","date":"2026-08-05"},"0.8":{"version":"0.8.0","date":"2026-08-05"},"0.9":{"version":"0.9.0","date":"2026-08-05"},"0.10":{"version":"0.10.0","date":"2026-08-06"},"0.11":{"version":"0.11.0","date":"2026-08-14"},"0.12":{"version":"0.12.0","date":"2026-08-14"},"0.13":{"version":"0.13.0","date":"2026-08-14"},"0.14":{"version":"0.14.0","date":"2026-08-14"}},"license":"MIT","first_release":"2026-07-21","last_release":"2026-08-14","releases":16,"cadence_days":0,"maintainers":1,"repository":"git+https://github.com/furkanaksy838/mcp.git","repository_directory":null,"peer_cds":">=7","test_script":true,"types":false,"downloads_weekly":0,"stars":2,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-08-14","license_spdx":"MIT","org_owned":false,"default_branch":"master","contributors":1,"tree_truncated":false,"test_files":21,"workflows":0,"other_ci":false,"readme_bytes":47536,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-07-18","last_commit":"2026-08-14","commits":44,"readme_path":"README.md","readme_sha":"c31f01eefc9927908cdff4a0c48b45f6ae22f49a","months_since_release":2,"dormant":false,"dependencies":1,"node_engine":">=20","downloads_monthly":74,"created_at":"2026-07-21T06:03:37Z","open_prs":0,"repo_read":"2026-10-26"},"release_notes":{"license":"MIT","quotable":true,"versions":[{"version":"0.14.0","date":"2026-08-14"},{"version":"0.13.0","date":"2026-08-14"},{"version":"0.12.0","date":"2026-08-14"},{"version":"0.11.0","date":"2026-08-14"},{"version":"0.10.0","date":"2026-08-06"},{"version":"0.9.0","date":"2026-08-05"},{"version":"0.8.0","date":"2026-08-05"},{"version":"0.7.0","date":"2026-08-05"},{"version":"0.6.1","date":"2026-08-04"},{"version":"0.6.0","date":"2026-08-04"},{"version":"0.5.0","date":"2026-07-28"},{"version":"0.4.0","date":"2026-07-28"},{"version":"0.3.1","date":"2026-07-27"},{"version":"0.3.0","date":"2026-07-27"},{"version":"0.2.0","date":"2026-07-21"},{"version":"0.1.0","date":"2026-07-21"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:furkanaksy838","name":"Furkan Aksoy","json":"/actors/furkanaksy838.json"}],"contributors":[{"ref":"actor:furkanaksy838","name":"Furkan Aksoy","json":"/actors/furkanaksy838.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}