数据库查询MCP
一个简单的MCP(模型上下文协议)服务器示例,演示如何连接到PostgreSQL数据库并查询数据。
特性
此MCP服务器提供以下工具:
- 搜索数据:按列值搜索数据(支持部分匹配)
- 获取所有数据:从数据库中检索所有数据(限制为100行)
- get_row_count:获取总行数
- get_columns:列出表中的所有列名
先决条件
- Node.js 20+
- Neon Postgres数据库(或任何PostgreSQL数据库)
- MCPHub帐户(用于部署)
本地开发
- 安装依赖项:
npm install- 设置环境变量:
export DATABASE_URL="postgres://user:password@host:5432/database?sslmode=require"- 运行服务器:
npm start- 测试运行状况端点:
curl http://localhost:8081/health部署到MCPHub
- 将此存储库推送到GitHub:
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/yourusername/mcphub-example-database-deploy.git
git push -u origin main- 通过MCPHub部署:
- 首选https://mcphub-web.vercel.app/dashboard/deploy - 输入您的GitHub存储库URL - 启用“数据库”功能 - 上传 sample-data.csv 文件 - 点击“部署MCP”
- 部署将:
- 克隆您的存储库 - 构建并部署到Fly.io - 为MCP创建数据库模式 - 导入CSV数据 - 集 DATABASE_URL 作为环境变量 - 通过MCPHub边缘网络使您的MCP可用
使用MCP
部署后,您可以在Claude Desktop或其他MCP客户端中使用此MCP。MCP将通过以下方式访问数据库 DATABASE_URL 环境变量,由MCPHub自动配置。
查询示例
- 按名称搜索产品:
search_data(column: "name", query: "Widget", limit: 10)- 按类别搜索:
search_data(column: "category", query: "Tools", limit: 20)- 获取所有数据:
get_all_data(limit: 50)- 获取行数:
get_row_count()- 列表列:
get_columns()数据库模式
MCP需要一个名为的表 data 在MCPHub创建的模式中。在部署期间上传CSV时,会自动创建架构和表。
CSV示例包括:
name:产品名称price:产品价格category:产品类别description:产品描述
安全
- MCP使用只读数据库角色
- 验证列名以防止SQL注入
- 数据库连接使用SSL/TLS
- MCP只能访问自己的模式(与其他MCP隔离)
许可证
国际学生委员会
