Token导航 LogoToken导航TokenDH.com
sqlsense (Raj8github) logo
数据服务stdio官方级别未说明来源级核验

sqlsense (Raj8github)

MCP Server

SQLSense是一个MCP服务器,为AI代理提供安全、审计的SQL数据库访问,防止危险查询并记录所有操作。

工具数

4

提示词数

0

GitHub Stars

3

资源数

0
PythonClaudeAI代理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

raj8github

提供方

raj8github

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install sqlsense

详细介绍

🛡️ SQLSense

通过MCP为AI代理提供安全、经过审计的SQL。

AI代理正在与您的数据库进行对话。SQLSense确保他们不会破坏它。

pip install sqlsense
sqlsense serve --dsn "postgresql://user:pass@localhost/mydb"

](https://pypi.org/project/sqlsense/) ![Python 3.9+](https://www.python.org/) ![License: MIT](LICENSE) ](https://pypi.org/project/sqlsense/)

______________________________________________________________________

问题

您正在让AI代理访问您的数据库。它生成SQL,执行它。可能会出什么问题?

-- Agent confidently generates this
DELETE FROM users;

-- Or this
SELECT password, ssn, credit_card FROM customers;

-- Or this  
DROP TABLE orders;

没有现有的MCP数据库工具阻止这些。SQLSense确实如此。

______________________________________________________________________

SQLSense做什么

SQLSense是一个 MCP服务器 它将数据库连接包装为:

  • 🚫 护栏 --在危险查询到达数据库之前阻止它们
  • 🔒 只读模式 --默认情况下仅选择,写入opt-in
  • 📋 审计日志 --代理运行的每个查询都记录到JSONL
  • 🔢 自动限制 --自动为SELECT查询加上限以防止全表扫描
  • 🙈 立柱堵塞 --块列表敏感列(password, ssn, api_key...)
  • 💉 注射防护装置 --解析时阻止多语句查询
  • 🗄️ 多数据库 --SQLite、PostgreSQL、MySQL、SQL Server、Snowflake、DuckDB、BigQuery

______________________________________________________________________

快速入门

安装

pip install sqlsense

# With your database driver
pip install "sqlsense[postgres]"    # PostgreSQL
pip install "sqlsense[mysql]"       # MySQL / MariaDB (AWS RDS, Azure MySQL)
pip install "sqlsense[sqlserver]"   # SQL Server
pip install "sqlsense[snowflake]"  # Snowflake
pip install "sqlsense[duckdb]"     # DuckDB (local analytics, Python-native)
pip install "sqlsense[bigquery]"   # Google BigQuery (auth via ADC)
pip install "sqlsense[all]"        # Everything

SQL Server--需要额外步骤

pyodbc (由安装 sqlsense[sqlserver])需要 Microsoft ODBC驱动程序17 安装在操作系统级别。 pip 不能做这部分。

macOS:

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql17

Ubuntu/Debian:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list \
  | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17

窗户: 下载自 微软的ODBC驱动程序页面 并运行安装程序。

启动MCP服务器

# PostgreSQL (readonly by default)
sqlsense serve --dsn "postgresql://user:pass@localhost/mydb"

# SQL Server (common in enterprise/fintech)
sqlsense serve --dsn "mssql://user:pass@server:1433/mydb"

# MySQL / MariaDB (AWS RDS, Aurora, Azure Database for MySQL)
sqlsense serve --dsn "mysql://user:pass@host:3306/mydb"

# Snowflake
sqlsense serve --dsn "snowflake://user:pass@account/warehouse/database"

# BigQuery (auth via GOOGLE_APPLICATION_CREDENTIALS or ADC)
sqlsense serve --dsn "bigquery://my_project/my_dataset"

# SQLite (great for local dev)
sqlsense serve --dsn "sqlite:///./myapp.db"

# DuckDB (local analytics, dbt-style workflows)
sqlsense serve --dsn "duckdb:///./analytics.duckdb"
# or in-memory: duckdb://:memory:

连接到克劳德桌面

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sqlsense": {
      "command": "sqlsense",
      "args": ["serve", "--dsn", "postgresql://user:pass@localhost/mydb"]
    }
  }
}

Claude现在拥有安全、经过审核的数据库访问权限。问它:

*“按订单价值显示本月前10名客户”*

SQLSense拦截每个查询,对照护栏检查它,记录它,然后安全地执行它或以明确的理由阻止它。

连接到克劳德代码

# In your project
claude mcp add sqlsense -- sqlsense serve --dsn "postgresql://..."

______________________________________________________________________

凭证——永远不要硬编码

切勿将数据库凭据直接放入MCP配置或shell历史记录中。请改用这些模式之一。

选项1--包装脚本(推荐)

创建一个脚本,在运行时从您的秘密存储中提取凭据:

# ~/scripts/sqlsense-mydb.sh
#!/bin/bash
sqlsense serve \
  --dsn "postgresql://${DB_USER}:${DB_PASS}@${DB_HOST}:5432/${DB_NAME}" \
  --max-rows 1000 \
  --audit-log ~/.sqlsense/audit.jsonl
chmod +x ~/scripts/sqlsense-mydb.sh

然后,您的Claude Desktop配置保持干净——任何地方都没有凭据:

{
  "mcpServers": {
    "mydb": {
      "command": "/Users/you/scripts/sqlsense-mydb.sh"
    }
  }
}

选项2-macOS钥匙扣

# Store once
security add-generic-password -a sqlsense -s db-password -w "your_password"

# Retrieve in your wrapper script
DB_PASS=$(security find-generic-password -a sqlsense -s db-password -w)

选项3——通过 env

Claude Desktop支持 env 配置中的块--凭据不在其中 args:

{
  "mcpServers": {
    "mydb": {
      "command": "sqlsense",
      "args": ["serve", "--dsn", "postgresql://$(DB_USER):$(DB_PASS)@$(DB_HOST)/$(DB_NAME)"],
      "env": {
        "DB_USER": "myuser",
        "DB_PASS": "mypassword",
        "DB_HOST": "localhost",
        "DB_NAME": "mydb"
      }
    }
  }
}

选项4-- .env 带有加载器的文件

# .env (never commit this)
DB_USER=myuser
DB_PASS=mypassword
DB_HOST=localhost
DB_NAME=mydb
# wrapper script
#!/bin/bash
set -a && source ~/.sqlsense/.env && set +a
sqlsense serve --dsn "postgresql://${DB_USER}:${DB_PASS}@${DB_HOST}/${DB_NAME}"

______________________________________________________________________

护栏正在运行

# Test any query before running it
$ sqlsense check "DELETE FROM users"
🚫 BLOCKED  (risk: HIGH)
Reason: DELETE is blocked. Set allow_delete=True to enable.

$ sqlsense check "SELECT * FROM orders"
✅ ALLOWED  (risk: MEDIUM)
Warnings:
  • SELECT * detected — prefer explicit column names.
  • No WHERE clause — query may scan the full table.
  • LIMIT 1000 automatically added to protect against full-table scans.

$ sqlsense check "SELECT id FROM users WHERE id = 1"
✅ ALLOWED  (risk: LOW)
Hash: a3f9c2d1b8e4

______________________________________________________________________

配置

所有护栏均可配置。违约是故意保守的。

# Allow writes (careful!)
sqlsense serve --dsn "..." --allow-writes

# Increase row limit
sqlsense serve --dsn "..." --max-rows 5000

# Block specific tables
sqlsense serve --dsn "..." \
  --block-table audit_log \
  --block-table internal_config

# Disable auto-LIMIT (not recommended)
sqlsense serve --dsn "..." --no-auto-limit

或者以编程方式配置:

from sqlsense import SQLSenseMCPServer
from sqlsense.guardrails import GuardrailConfig

config = GuardrailConfig(
    max_rows=2000,
    readonly_mode=True,           # default: True
    auto_add_limit=True,          # default: True
    blocked_tables=["secrets"],
    blocked_columns=["password", "token", "ssn", "credit_card"],
    require_where_on_writes=True, # default: True
)

server = SQLSenseMCPServer(dsn="postgresql://...", config=config)
server.run()

______________________________________________________________________

审计日志

代理运行的每个查询都会写入JSONL文件:

# View recent queries
sqlsense audit --tail 20

# Output
TIME                   ALLOWED  RISK    ROWS   MS     SQL
────────────────────────────────────────────────────────────────────────────────────────────
2025-02-26T14:22:01Z   ✅       low     42     12.3   SELECT id, name FROM customers WHE...
2025-02-26T14:22:15Z   🚫       high    —      —      DELETE FROM users
2025-02-26T14:22:31Z   ✅       medium  1000   891.2  SELECT * FROM orders

# JSON output for piping to your observability stack
sqlsense audit --tail 100 --json | jq '.[] | select(.allowed == false)'

每个条目都是一个自包含的JSON对象,Splunk、Datadog、CloudWatch或 grep.

______________________________________________________________________

MCP工具

SQLSense向AI代理公开了4个工具:

工具说明
sql_query执行SQL(带防护栏+自动限制)
get_schema获取上下文的表/列定义
explain_query运行前检查查询将执行什么操作
get_audit_log检索最近的查询历史记录

代理人打电话来 get_schema 首先了解数据库,然后 explain_query 在执行之前进行验证——SQLSense将代理推向更安全的模式。

______________________________________________________________________

支持的数据库

数据库状态安装
SQLite✅ 内置pip install sqlsense
PostgreSQL✅ 稳定pip install "sqlsense[postgres]"
MySQL/MariaDB✅ 稳定pip install "sqlsense[mysql]"
SQL Server✅ 稳定pip install "sqlsense[sqlserver]"
雪花✅ 稳定pip install "sqlsense[snowflake]"
DuckDB✅ 稳定pip install "sqlsense[duckdb]"
BigQuery✅ 稳定pip install "sqlsense[bigquery]"

______________________________________________________________________

与其他AI框架一起使用

SQLSense是一个MCP服务器,因此它适用于任何讲MCP的东西:

  • ✅ 克劳德桌面版
  • ✅ 克劳德代码
  • ✅ 任何与MCP兼容的代理框架
  • ✅ 自定义代理(通过stdio JSON-RPC)

______________________________________________________________________

Python API

如果不需要MCP层,请使用SQLSense作为库:

from sqlsense.guardrails import GuardrailsEngine, GuardrailConfig
from sqlsense.connectors import create_connector
from sqlsense.audit import AuditLogger

# Guardrails only
engine = GuardrailsEngine(GuardrailConfig())
result = engine.check("SELECT * FROM users")
if not result.allowed:
    raise PermissionError(result.reason)

# Full stack
db = create_connector("postgresql://user:pass@localhost/mydb")
logger = AuditLogger("./audit.jsonl")

guard = engine.check(sql)
if guard.allowed:
    safe_sql = guard.rewritten_sql or sql
    query_result = db.execute(safe_sql)
    logger.record(sql, guard, rows_returned=query_result.row_count)

______________________________________________________________________

路线图

  • \[\]HTTP/SSE传输(除了stdio)
  • \[\]MySQL连接器
  • \[\]BigQuery连接器
  • \[\]DuckDB连接器
  • \[\]用于审计日志的Web仪表板
  • \[\]查询成本估算(EXPLAIN集成)
  • \[\]每个代理/会话的速率限制
  • \[\]行级安全策略
  • \[\]对被阻止的查询发出Slack/webhook警报
  • \[\]Docker镜像

______________________________________________________________________

贡献

非常欢迎捐款。现在最有用的东西:

  1. 新的数据库连接器 --MySQL、BigQuery、DuckDB(参见 sqlsense/connectors.py)
  2. 护栏改进 --边缘情况,方言特定规则
  3. HTTP传输 --用于远程部署的SSE服务器
  4. 测试 --更多边缘情况 tests/test_sqlsense.py
git clone https://github.com/raj8github/sqlsense
cd sqlsense
pip install -e ".[dev]"
pytest tests/ -v

贡献.md 了解详情。

______________________________________________________________________

为什么存在

具有数据库访问权限的AI代理功能强大。它们也是一个糟糕的提示 DELETE FROM production_users 没有WHERE子句。

MCP数据库工具(sqlite-MCP、postgres-MCP等)的当前生态系统为代理提供了原始访问,没有护栏、没有审计跟踪,也没有断路器。SQLSense填补了这一空白——它是用生产金融科技环境中的模式构建的,在这些环境中,数据库安全不是可选的。

______________________________________________________________________

许可证

麻省理工学院——见 许可证

目录标签

目录标签

PythonClaudeAI代理数据库安全本地部署SQL审计数据保护MCP服务器

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP