{"name":"io.github.AindriuB/data-prism","slug":"aindriub-data-prism","title":"Data Prism","description":"Privacy layer for enterprise APIs; refuses to start without a reviewed adapter jar per source","url":"https://mcp.market/server/aindriub-data-prism","rating":null,"grade":"A","score":91,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":0,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"claimed":false,"transport":"oci","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/AindriuB/data-prism","website":null,"version":"0.2.0","remotes":[],"packages":[{"registryType":"oci","identifier":"ghcr.io/aindriub/data-prism-server:0.2.0","runtimeHint":"docker","transport":{"type":"streamable-http","url":"http://localhost:8080/mcp"},"runtimeArguments":[{"description":"Bind-mount at least one reviewed DataSourceAdapter/IdentityResolver jar into the loader path (LOADER_PATH=/app/adapters) for every dataprism.sources entry; absent this, DataPrismContractValidator refuses startup with MISSING_SOURCE_ADAPTER.","isRequired":true,"value":"{adapter_jar_host_path}:/app/adapters/{adapter_jar_name}","variables":{"adapter_jar_host_path":{"description":"Absolute host path to a reviewed DataSourceAdapter/IdentityResolver jar you built and reviewed yourself","isRequired":true,"format":"filepath"},"adapter_jar_name":{"description":"File name to expose for that jar inside /app/adapters","isRequired":true}},"type":"named","name":"-v","isRepeated":true},{"description":"Bind-mount a deployment configuration YAML satisfying every required dataprism.* key in docs/configuration.md to the path Spring Boot auto-loads on startup; equivalent to, and combinable with, the DATAPRISM_* environment variables below. Absent both, DataPrismProperties.validate() refuses startup.","isRequired":true,"value":"{config_host_path}:/app/config/application.yaml","variables":{"config_host_path":{"description":"Absolute host path to your dataprism.* application.yaml","isRequired":true,"format":"filepath"}},"type":"named","name":"-v"}],"environmentVariables":[{"description":"Directory Spring Boot's PropertiesLauncher scans for extension jars; already set to /app/adapters by the image, but startup still fails with MISSING_SOURCE_ADAPTER until you bind-mount a reviewed DataSourceAdapter/IdentityResolver jar there (see the -v arguments above)","isRequired":true,"default":"/app/adapters","name":"LOADER_PATH"},{"description":"OAuth2/OIDC issuer that mints the caller's JWT; required for every protected deployment","isRequired":true,"name":"DATAPRISM_SECURITY_JWT_ISSUER"},{"description":"Expected JWT audience claim for this deployment; required for every protected deployment","isRequired":true,"name":"DATAPRISM_SECURITY_JWT_AUDIENCE"},{"description":"HTTPS JWKS location used to verify caller JWTs; exactly one of this or DATAPRISM_SECURITY_JWT_ISSUER_DISCOVERY_URI is required, never both","isRequired":true,"name":"DATAPRISM_SECURITY_JWT_JWK_SET_URI"},{"description":"Alternative HTTPS OIDC issuer-discovery location; set this instead of DATAPRISM_SECURITY_JWT_JWK_SET_URI, never both","name":"DATAPRISM_SECURITY_JWT_ISSUER_DISCOVERY_URI"},{"description":"JWT claim name that carries the caller's principal identifier; required, must differ from the roles and investigation claims","isRequired":true,"name":"DATAPRISM_SECURITY_CALLER_CLAIMS_PRINCIPAL"},{"description":"JWT claim name that carries the caller's roles; required, must differ from the principal and investigation claims","isRequired":true,"name":"DATAPRISM_SECURITY_CALLER_CLAIMS_ROLES"},{"description":"JWT claim name that carries the trusted investigation/case identifier; required, must differ from the principal and roles claims","isRequired":true,"name":"DATAPRISM_SECURITY_CALLER_CLAIMS_INVESTIGATION"},{"description":"Comma-separated list of permitted purposes; at least one is required","isRequired":true,"name":"DATAPRISM_SECURITY_POLICY_PURPOSES"},{"description":"Example only — declare DATAPRISM_SECURITYPOLICY_ROLES_<ROLE> per operator-defined role (no underscore between SECURITY and POLICY: Spring Boot's map-key enumeration under a hyphenated dataprism.security-policy.roles.<role> segment only binds the concatenated prefix, verified by binding this property directly against Spring Boot 3.5.16), a comma-separated list of known MCP tool capabilities; at least one role-to-capability mapping is required","isRequired":true,"name":"DATAPRISM_SECURITYPOLICY_ROLES_INVESTIGATOR"},{"description":"Name of the reviewed privacy profile implementation to apply; required","isRequired":true,"name":"DATAPRISM_PRIVACY_PROFILE"},{"description":"Positive duration (e.g. 8h) a privacy scope's synthetic identities remain valid; required","isRequired":true,"name":"DATAPRISM_PRIVACY_SCOPE_LIFETIME"},{"description":"Identifier of the pinned HMAC key used to derive synthetic identities; required","isRequired":true,"name":"DATAPRISM_PRIVACY_HMAC_KEY_KEY_ID"},{"description":"Name of the environment variable holding the HMAC key material; exactly one of this or DATAPRISM_PRIVACY_HMAC_KEY_PROVIDER_REFERENCE is required, never both, and never a literal key value","isRequired":true,"name":"DATAPRISM_PRIVACY_HMAC_KEY_ENVIRONMENT_VARIABLE"},{"description":"Reference to an approved secret provider holding the HMAC key material; set this instead of DATAPRISM_PRIVACY_HMAC_KEY_ENVIRONMENT_VARIABLE, never both","name":"DATAPRISM_PRIVACY_HMAC_KEY_PROVIDER_REFERENCE"},{"description":"Audit sink implementation: one of approved-sink, slf4j, hash-chained; required, never downgraded to no-op","isRequired":true,"name":"DATAPRISM_AUDIT_SINK"},{"description":"Writer/instance identity recorded on every audit entry; required","isRequired":true,"name":"DATAPRISM_AUDIT_WRITER_ID"},{"description":"Metrics sink binding, currently only micrometer; required in production, never the framework no-op","isRequired":true,"name":"DATAPRISM_METRICS_SINK"},{"description":"Cluster read-budget topology: embedded (shared across the cluster) or single-node (enforced per process); required, never defaulted","isRequired":true,"name":"DATAPRISM_HAZELCAST_TOPOLOGY"},{"description":"Example only — declare DATAPRISM_SOURCES_<NAME>_BASE_URL (HTTPS) per configured source; at least one source, each with its own reviewed DataSourceAdapter bean, is required","isRequired":true,"name":"DATAPRISM_SOURCES_CUSTOMER_BASE_URL"},{"description":"Example only — declare DATAPRISM_SOURCES_<NAME>_TIMEOUT (positive duration) per configured source; required alongside its base URL","isRequired":true,"name":"DATAPRISM_SOURCES_CUSTOMER_TIMEOUT"}]}],"tools":[],"scan":{"score":91,"grade":"A","scanned_at":"2026-09-18T00:15:44.072Z","report":{"scannerVersion":"0.1.2","scannedAt":"2026-09-18T00:15:44.004Z","components":{"code":{"score":-1,"max":25,"notes":["package could not be scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":15,"max":15,"notes":["only the listing description was available"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[],"repo":{"found":true,"owner":"AindriuB","repo":"data-prism","archived":false,"pushedAt":"2026-09-17T22:19:05Z","stars":1,"openIssues":0,"ownerType":"User","ownerCreatedAt":"2013-01-29T14:32:17Z","license":"Apache-2.0"}}}},"grade_history":[],"reviews":[]}