本项目提供了一个中间件/控制平面(MCP)服务器,允许代码代理(如 Gemini、Claude Desktop 和 Claude Code)安全地对各种数据库(PostgreSQL、MySQL、MongoDB、Oracle)执行查询,而无需直接暴露凭证。数据库连接配置由 SQLite 数据库(mcp_config.sqlite3)管理。
按照以下步骤设置项目:
git clone
cd custom-mcp-database
venv(虚拟环境)来管理依赖。运行以下命令创建虚拟环境并安装所需的 Python 包:make install
这将创建一个 venv/ 目录,并安装 requirements.txt 中列出的所有内容。
使用 make run 命令启动 MCP 服务器:
make run
服务器将启动并监听来自代码代理的传入请求。
git clone
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]
示例(全局命令):
mcp-db add-db --alias pg_dev --type postgres --host localhost --port 5432 --user myuser --password mypassword --dbname mydb
mcp-db add-db --alias mysql_prod --type mysql --host 192.168.1.10 --port 3306 --user root --password secret --dbname production_db
mcp-db add-db --alias oracle_test --type oracle --host oracle.example.com --port 1521 --user system --password oraclepass --dbname ORCLPDB1
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
MCP 服务器启动(make run)后,Gemini 将自动发现并提供以下工具来与配置的数据库进行交互:
list_aliases():列出所有配置的数据库别名。add_database(...):添加新的数据库连接。remove_database(...):删除数据库连接。execute_query(database_alias, query, params, schema):对配置的数据库执行查询。Gemini 使用示例:
list_aliases()
execute_query(database_alias="pg_dev", query="SELECT * FROM users WHERE id = %s;", params={"id": 1})
execute_query(database_alias="mongo_cluster", query='''{"name": "John Doe"}''', params={"collection": "users"})
要与 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 中使用。
要使 Claude Code 和 Gemini 等 AI 代理能够自动发现并使用 MCP 服务器的工具,您需要将它们配置为启动或连接到 MCP 服务器。这通常涉及提供 main.py 脚本的路径并指定工作目录。
以下是如何配置 AI 代理的 mcpServers 部分的示例:
{
"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"
}
}
}
{
"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
list_aliases()
execute_query(database_alias="pg_dev", query="SELECT * FROM users WHERE id = %s;", params={"id": 1})
execute_query(database_alias="mongo_cluster", query='''{"name": "John Doe"}''', params={"collection": "users"})