README
🚀 MCP 数据库服务器
本项目提供了一个中间件/控制平面(MCP)服务器,允许代码代理(如 Gemini、Claude Desktop 和 Claude Code)安全地对各种数据库(PostgreSQL、MySQL、MongoDB、Oracle)执行查询,而无需直接暴露凭证。数据库连接配置由 SQLite 数据库(mcp_config.sqlite3)管理。
🚀 快速开始
安装项目
按照以下步骤设置项目:
- 克隆仓库(若尚未完成):
git clone <repository_url>
cd custom-mcp-database
- 安装依赖:
本项目使用
venv(虚拟环境)来管理依赖。运行以下命令创建虚拟环境并安装所需的 Python 包:
make install
这将创建一个 venv/ 目录,并安装 requirements.txt 中列出的所有内容。
启动 MCP 服务器
使用 make run 命令启动 MCP 服务器:
make run
服务器将启动并监听来自代码代理的传入请求。
📦 安装指南
克隆仓库
git clone <repository_url>
cd custom-mcp-database
安装依赖
make install
📚 详细文档
数据库配置
数据库连接存储在 mcp_config.sqlite3 中。您可以使用全局 mcp-db 命令(推荐)或本地 main.py 脚本管理这些连接。
添加数据库连接
使用 add-db 命令。所需参数因数据库类型而异。
通用语法(全局命令 - 推荐):
mcp-db add-db --alias <alias> --type <type> [connection_parameters]
替代方法(本地命令):
python main.py add-db --alias <alias> --type <type> [connection_parameters]
示例(全局命令):
- PostgreSQL:
mcp-db add-db --alias pg_dev --type postgres --host localhost --port 5432 --user myuser --password mypassword --dbname mydb
- MySQL:
mcp-db add-db --alias mysql_prod --type mysql --host 192.168.1.10 --port 3306 --user root --password secret --dbname production_db
- Oracle:
mcp-db add-db --alias oracle_test --type oracle --host oracle.example.com --port 1521 --user system --password oraclepass --dbname ORCLPDB1
- MongoDB:
mcp-db add-db --alias mongo_cluster --type mongo --uri "mongodb+srv://user:pass@cluster.mongodb.net/" --dbname myapp_db
删除数据库连接
使用 remove-db 命令和要删除的连接别名:
全局命令:
mcp-db remove-db --alias <alias>
本地命令:
python main.py remove-db --alias <alias>
示例:
mcp-db remove-db --alias pg_dev
获取帮助
如需详细帮助和示例:
mcp-db --help
mcp-db execute-query --help
与代码代理集成
Gemini
MCP 服务器启动(make run)后,Gemini 将自动发现并提供以下工具来与配置的数据库进行交互:
list_aliases():列出所有配置的数据库别名。add_database(...):添加新的数据库连接。remove_database(...):删除数据库连接。execute_query(database_alias, query, params, schema):对配置的数据库执行查询。
Gemini 使用示例:
- 列出别名:
list_aliases()
- 执行 SQL 查询(PostgreSQL/MySQL/Oracle):
execute_query(database_alias="pg_dev", query="SELECT * FROM users WHERE id = %s;", params={"id": 1})
- 执行 MongoDB 查询:
execute_query(database_alias="mongo_cluster", query='''{"name": "John Doe"}''', params={"collection": "users"})
Claude Desktop
要与 Claude Desktop 集成,您需要将其 claude_desktop_config.json 文件配置为指向您的 MCP 服务器。在该文件(通常位于 Claude Desktop 配置目录中)中创建或修改一个类似如下的条目:
{
"mcpServers": {
"Custom DB Server": {
"command": "/your-path-to/custom-mcp-database/venv/bin/python",
"args": [
"/your-path-to/custom-mcp-database/main.py"
],
"workingDirectory": "/your-path-to/custom-mcp-database"
}
}
}
重要提示: 将 /your-path-to/custom-mcp-database 替换为 custom-mcp-database 目录的实际绝对路径。
配置完成后,重启 Claude Desktop。MCP 工具随后可在 Claude Desktop 中使用。
AI 代理的工具配置
要使 Claude Code 和 Gemini 等 AI 代理能够自动发现并使用 MCP 服务器的工具,您需要将它们配置为启动或连接到 MCP 服务器。这通常涉及提供 main.py 脚本的路径并指定工作目录。
以下是如何配置 AI 代理的 mcpServers 部分的示例:
Claude Code
{
"mcpServers": {
"Custom DB Server": {
"command": "/your-path-to/custom-mcp-database/venv/bin/python",
"args": [
"/your-path-to/custom-mcp-database/main.py"
],
"workingDirectory": "/your-path-to/custom-mcp-database"
}
}
}
Gemini
{
"mcpServers": {
"Custom DB Server": {
"command": "/your-path-to/custom-mcp-database/venv/bin/python",
"args": [
"/your-path-to/custom-mcp-database/main.py"
],
"workingDirectory": "/your-path-to/custom-mcp-database"
}
}
}
重要提示: 将 /your-path-to/custom-mcp-database 替换为 custom-mcp-database 目录的实际绝对路径。
请参考您特定 AI 代理的官方文档,以获取有关配置外部 MCP 服务器的最准确和最新说明。
💻 使用示例
基础用法
启动服务器
make run
列出数据库别名(Gemini)
list_aliases()
高级用法
执行 SQL 查询(PostgreSQL/MySQL/Oracle - Gemini)
execute_query(database_alias="pg_dev", query="SELECT * FROM users WHERE id = %s;", params={"id": 1})
执行 MongoDB 查询(Gemini)
execute_query(database_alias="mongo_cluster", query='''{"name": "John Doe"}''', params={"collection": "users"})
Scan to join WeChat group