🗄️ NLP数据库MCP服务器
使用模型上下文协议(MCP)安全直观地将LLM连接到SQL数据库。 NLP数据库 充当一个安全的只读桥梁,允许AI代理使用自然语言探索模式和查询数据。
______________________________________________________________________
🚀 主要特点
- 只读安全:严格的正则表达式验证仅确保
SELECT和WITH语句被执行。 - 智能护栏:自动
LIMIT 500在所有查询上,以防止系统膨胀。 - 通用兼容性:原生支持PostgreSQL、MySQL、SQL Server和SQLite。
- 代理优化:旨在提供描述性错误,帮助LLM自我纠正。
- 演出:5分钟模式缓存,以减少数据库开销。
______________________________________________________________________
用法示例
一旦服务器连接到您的LLM(Claude、Gemini等),代理就可以访问两个主要工具: get_schema 和 execute_query.
典型工作流程
- 探索:用户会问这样的问题: *“上个月有多少用户注册?”*
- 架构检查:LLM会自动调用
get_schema了解表名和列。 - 查询执行:LLM生成SQL查询并调用
execute_query. - 自然反应LLM接收数据并将其翻译成简单的英语或西班牙语。
交互示例
用户:
“按总销售收入列出前三名产品。”
LLM(内部思维过程):
- 呼叫
get_schema查找相关表(查找products和orders). - 生成SQL:
SELECT p.name, SUM(o.amount) FROM products p JOIN orders o ON p.id = o.product_id GROUP BY p.name ORDER BY 2 DESC LIMIT 3. - 呼叫
execute_query使用生成的SQL。
LLM回复:
“收入排名前三的产品是: 1. 企业订阅 ($50,200) 1. 专业许可证 ($32,150) 1. 基础方案 ($12,400)"
______________________________________________________________________
可用工具
| 工具 | 参数 | 说明 |
|---|---|---|
get_schema | *(无)* | 返回所有表、其列和数据类型的列表。 |
execute_query | sql_query | 执行保险 SELECT 语句,并以JSON格式返回结果。 |
______________________________________________________________________
🛠️ 1.安装和驱动程序
步骤1:克隆存储库
git clone https://github.com/your-repo/nlp-database.git
cd nlp-database
步骤2:安装依赖项
您可以直接安装依赖项或使用虚拟环境(建议隔离)。
选项A:使用虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
选项B:直接安装
pip install -r requirements.txt
步骤3:安装数据库驱动程序
仅安装特定数据库所需的驱动程序:
- PostgreSQL:
pip install psycopg2-binary - MySQL:
pip install pymysql - SQL Server:
pip install pyodbc - SQLite:已包含在Python标准库中。
______________________________________________________________________
🔗 2.连接字符串(DATABASE_URL)
| 数据库 | 连接字符串格式 |
|---|---|
| PostgreSQL | postgresql://user:pass@localhost:5432/dbname |
| MySQL | mysql+pymysql://user:pass@localhost:3306/dbname |
| SQL Server | mssql+pyodbc://user:pass@server/db?driver=ODBC+Driver+17+for+SQL+Server |
| SQLite | sqlite:///C:/absolute/path/to/database.db |
______________________________________________________________________
⚙️ 3.客户端配置
A.克劳德代码(CLI)
claude mcp add nlp-database -- python C:/path/to/nlp_database.py --env DATABASE_URL="your_connection_string"
B.Gemini CLI
将此添加到您的 ~/.gemini/settings.json:
{
"mcpServers": {
"nlp-database": {
"command": "python",
"args": ["C:/path/to/nlp_database.py"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost/db"
}
}
}
}
C.谷歌反重力
找到您的 mcp_config.json (通常在 ~/.gemini/antigravity/):
{
"mcpServers": {
"nlp-database": {
"command": "python",
"args": ["C:/path/to/nlp_database.py"],
"env": {
"DATABASE_URL": "mssql+pyodbc://user:pass@server/db?driver=ODBC+Driver+17+for+SQL+Server"
}
}
}
}
D.开放式代码
编辑 %USERPROFILE%\.opencode\opencode.jsonc:
{
"mcp": {
"nlp-database": {
"type": "local",
"command": "python",
"args": ["C:/path/to/nlp_database.py"],
"enabled": true,
"environment": {
"DATABASE_URL": "mysql+pymysql://user:pass@localhost/db"
}
}
}
}
E.克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"nlp-database": {
"command": "python",
"args": ["C:/path/to/nlp_database.py"],
"env": {
"DATABASE_URL": "sqlite:///C:/data/prod.db"
}
}
}
}
______________________________________________________________________
这是一个旨在强调隐私和易于使用的本地模型的部分。您可以将其插入到 安全.
______________________________________________________________________
使用本地模型运行(100%私有)
为了最大限度地保护隐私,您可以配对 NLP数据库 拥有当地法学硕士学位。这确保了您的数据库模式和查询结果 永远不要离开你的机器.
使用Ollama+Claude桌面/OpenCode
- 安装Ollama:从下载 ollama.com.
- 拉一个模型:SQL生成的推荐模型有
llama3.1,codellama,或qwen2.5-coder.
ollama run llama3.1
- 配置您的客户端:将MCP客户端指向本地Python脚本,如 客户端配置 部分。
- 选择本地模型:在您的客户端(如OpenCode或本地就绪编辑器)中,选择您的Ollama端点(通常
http://localhost:11434)作为提供者。
为什么要去当地?
| 特征 | 本地模型 | 云模型(OpenAI/Anthropic) |
|---|---|---|
| 数据隐私 | 🔒 总计。数据保留在磁盘上。 | 🌐 数据发送到第三方服务器。 |
| 成本 | 💰 自由。使用自己的GPU/CPU。 | 💳 按代币支付。 |
| 互联网 | 🔌 非必需。脱机工作。 | 🌐 必修的。 |
| 延迟 | ⚡ 这取决于你的硬件。 | ☁️ 取决于API响应时间。 |
______________________________________________________________________
🔒 安全性:专用只读用户
始终使用受限制的数据库用户。以下是如何创建一个:
PostgreSQL示例:
CREATE USER nlp_readonly WITH PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE my_db TO nlp_readonly;
GRANT USAGE ON SCHEMA public TO nlp_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO nlp_readonly;
______________________________________________________________________
📝 配置选项
| 环境变量 | 默认值 | 描述 |
|---|---|---|
DATABASE_URL | *必需* | SQLAlchemy连接字符串 |
MAX_RESULT_ROWS | 500 | 最大行数返回到LLM。 |
QUERY_TIMEOUT | 30 | 最大执行时间(秒)。 |
DB_ECHO_SQL | false | 允许将原始SQL查询记录到控制台。 |
______________________________________________________________________
🤝 贡献
这是一个开源项目,我希望你能帮助它变得更好!无论你是Python专家、数据工程师,还是刚开始学习MCP,我们都欢迎你的贡献。
如何提供帮助:
- 通过以下方式报告错误或建议功能 问题.
- 改进文档。
- 添加对更多数据库引擎的支持。
- 提交 拉取请求 随着你的进步。
