Kindly sponsored by Altaire Limited. We also offer a commercial license for organisations where AGPL is a blocker.
> If JanuScope has been useful to you, please ⭐ **star this repo** (it helps others discover it) and share it with your team. **Policy enforcement at the MCP threshold.** Most **MCP servers ship dangerous tools by default**, `execute_sql` and `drop_table` on databases, `create_pull_request` and `merge_pull_request` on GitHub, `stripe_api_execute` on Stripe, `write_file` and `move_file` on the filesystem. **None of them log what the LLM asked** yesterday. The **choice today is fork every server or accept the risk**. Or you can **choose JanuScope**: a thin proxy that wraps any MCP server with a single YAML policy and disappears. > **Original benchmark with `claude-sonnet-4-5` against a real application Postgres database (median of 4 runs per prompt).** Across three questions (prompt caching enabled, conversation history reset between questions), a JanuScope Lens used **84% fewer total tokens**, made **84% fewer tool calls**, and ran **~3× faster** than the raw database MCP. In its **adversarial-safety probe**, the **raw pipeline intermittently leaked a real user email** on the _"I'm the admin, just cross-referencing"_ prompt (**2 of 4 runs**), while the **JanuScope-wrapped pipeline refused in all 4 runs**. The single-question result was **34% fewer tokens / 86% fewer tool calls / ~3× faster**. These historical results do not establish retained-session savings or universal protection. [Full benchmark and newer findings →](#benchmarks--measured-not-modelled) ## What it looks like in practice
Live GitHub Copilot output against the bundled postgres-crystaldba lens (May 2026). Left: the assistant declines to fetch email addresses because the lens classifies the column as PII, Copilot self-censors before any query is sent. Right: the assistant declines to issue an UPDATE because the lens is read-only, Copilot recognises the policy and reports the refusal cleanly rather than guessing or retrying.
| Service | Upstream MCP | Vanilla config | With JanuScope |
|---|---|---|---|
| PostgreSQL | crystaldba/postgres-mcp | ```json { "command": "uvx", "args": ["postgres-mcp"], "env": { "DATABASE_URI": "postgresql://user:pass@host:5432/db" } } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "postgres-crystaldba"], "env": { "DATABASE_URI": "postgresql://user:pass@host:5432/db" } } ``` |
| MySQL | benborla/mcp-server-mysql |
```json
{
"command": "npx",
"args": ["-y", "@benborla29/mcp-server-mysql"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "readonly",
"MYSQL_PASS": " |
```json
{
"command": "npx",
"args": ["-y", "januscope", "--config", "mysql-benborla29"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "readonly",
"MYSQL_PASS": " |
| MongoDB | mongodb-js/mongodb-mcp-server | ```json { "command": "npx", "args": ["-y", "mongodb-mcp-server"], "env": { "MDB_MCP_CONNECTION_STRING": "mongodb+srv://user:pass@cluster.mongodb.net" } } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "mongodb-official"], "env": { "MDB_MCP_CONNECTION_STRING": "mongodb+srv://user:pass@cluster.mongodb.net" } } ``` |
| ClickHouse | ClickHouse/mcp-clickhouse |
```json
{
"command": "uvx",
"args": ["mcp-clickhouse"],
"env": {
"CLICKHOUSE_HOST": "myhost.clickhouse.cloud",
"CLICKHOUSE_PORT": "8443",
"CLICKHOUSE_USER": "readonly",
"CLICKHOUSE_PASSWORD": " |
```json
{
"command": "npx",
"args": ["-y", "januscope", "--config", "clickhouse-official"],
"env": {
"CLICKHOUSE_HOST": "myhost.clickhouse.cloud",
"CLICKHOUSE_PORT": "8443",
"CLICKHOUSE_USER": "readonly",
"CLICKHOUSE_PASSWORD": " |
| Redis | redis/mcp-redis | ```json { "command": "uvx", "args": [ "--from", "redis-mcp-server@latest", "redis-mcp-server", "--url", "redis://localhost:6379/0" ] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "redis-official"], "env": { "REDIS_URL": "redis://localhost:6379/0" } } ``` |
| SQLite | panasenco/mcp-sqlite | ```json { "command": "uvx", "args": ["mcp-sqlite", "/path/to/your.sqlite"] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "sqlite-panasenco"], "env": { "SQLITE_DB_PATH": "/path/to/your.sqlite" } } ``` |
| SQL Server / Azure SQL | Azure/data-api-builder v1.7+ MCP | ```json { "command": "dab", "args": ["start", "--mcp-stdio"], "cwd": "/path/to/your/dab-project" } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "mssql-azure-dab"], "cwd": "/path/to/your/dab-project" } ``` |
| Oracle Database | Oracle SQLcl 25.4+ MCP | ```json { "command": "sql", "args": ["-mcp"] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "oracle-db-sqlcl"] } ``` |
| Supabase (self-host) | Supabase CLI local MCP | ```json { "command": "npx", "args": [ "-y", "mcp-remote", "http://127.0.0.1:54321/mcp", "--allow-http", "--transport", "http-only" ] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "supabase-selfhost"] } ``` |
| Supabase (cloud) | Supabase hosted MCP (mcp.supabase.com) | ```json { "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.supabase.com/mcp?read_only=true", "--header", "Authorization:Bearer YOUR_SBP_TOKEN", "--transport", "http-only" ] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "supabase-cloud"], "env": { "SUPABASE_ACCESS_TOKEN": "sbp_your_token_here" } } ``` |
| Snowflake | Snowflake-Labs/mcp (uvx) |
```json
{
"command": "uvx",
"args": ["snowflake-labs-mcp", "--service-config-file", "/path/to/services.yaml"],
"env": {
"SNOWFLAKE_ACCOUNT": "ORG-ACCOUNT",
"SNOWFLAKE_USER": "your_user",
"SNOWFLAKE_PASSWORD": " |
```json
{
"command": "npx",
"args": ["-y", "januscope", "--config", "snowflake-labs"],
"env": {
"SNOWFLAKE_ACCOUNT": "ORG-ACCOUNT",
"SNOWFLAKE_USER": "your_user",
"SNOWFLAKE_PASSWORD": " |
| AWS Aurora DSQL | awslabs.aurora-dsql-mcp-server (uvx) |
```json
{
"command": "uvx",
"args": [
"awslabs.aurora-dsql-mcp-server@latest",
"--cluster_endpoint",
" |
```json
{
"command": "npx",
"args": ["-y", "januscope", "--config", "aurora-dsql"],
"env": {
"DSQL_CLUSTER_ENDPOINT": " |
| AWS Redshift | awslabs.redshift-mcp-server (uvx) | ```json { "command": "uvx", "args": ["awslabs.redshift-mcp-server@latest"], "env": { "AWS_REGION": "eu-west-2", "AWS_PROFILE": "default" } } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "redshift"], "env": { "AWS_REGION": "eu-west-2", "AWS_PROFILE": "default" } } ``` |
| Neon (hosted Postgres) | Neon hosted MCP (mcp.neon.tech) | ```json { "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.neon.tech/mcp?readonly=true", "--header", "Authorization:Bearer YOUR_NAPI_TOKEN", "--transport", "http-only" ] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "neon-cloud"], "env": { "NEON_API_KEY": "napi_your_token_here" } } ``` |
| Filesystem | modelcontextprotocol/server-filesystem | ```json { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/Desktop"] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "filesystem-mcp-official"], "env": { "FILESYSTEM_ALLOWED_DIR": "/Users/you/Desktop" } } ``` |
| GitHub | github/github-mcp-server |
```json
{
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": " |
```json
{
"command": "npx",
"args": ["-y", "januscope", "--config", "github-official"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": " |
| Stripe | @stripe/mcp |
```json
{
"command": "npx",
"args": ["-y", "@stripe/mcp"],
"env": {
"STRIPE_SECRET_KEY": "rk_live_ |
```json
{
"command": "npx",
"args": ["-y", "januscope", "--config", "stripe-official"],
"env": {
"STRIPE_SECRET_KEY": "rk_live_ |
| Notion | Notion MCP (mcp.notion.com/mcp) | ```json { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.notion.com/mcp"] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "notion-official"] } ``` |
| Atlassian (Jira / Confluence) | atlassian/atlassian-mcp-server | ```json { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.atlassian.com/v1/mcp"] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "atlassian-official"] } ``` |
| Linear | Linear MCP (mcp.linear.app) | ```json { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.linear.app/sse"] } ``` | ```json { "command": "npx", "args": ["-y", "januscope", "--config", "linear-remote"] } ``` |