数据库与 API 类 MCP 工具
数据库与 API 类 MCP Server 让 AI 能够直接查询数据库、调用第三方服务。本节覆盖最常用的几个官方和社区 Server,以及选型时的安全考量。
数据库 MCP Server 对比
| Server | 支持数据库 | 模式 | 安全性 |
|---|---|---|---|
server-sqlite | SQLite | 本地文件 | ✅ 高(本地只读模式可选) |
server-postgres | PostgreSQL | 远程连接 | ⚠️ 中(依赖 DB 用户权限) |
mcp-mysql(社区) | MySQL/MariaDB | 远程连接 | ⚠️ 中 |
mcp-mongodb(社区) | MongoDB | 远程连接 | ⚠️ 中 |
SQLite MCP Server(本地数据分析首选)
SQLite MCP 是最安全的数据库 Server 选项——数据文件在本地,无需网络连接,适合个人数据分析和快速原型。
安装与配置
npm install -g @modelcontextprotocol/server-sqlite
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sqlite",
"--db-path",
"/Users/yourname/data/analytics.db"
]
}
}
}
可用工具
| 工具名 | 权限 | 说明 |
|---|---|---|
read_query | 只读 | 执行 SELECT 查询 |
write_query | 读写 | 执行 INSERT/UPDATE/DELETE |
create_table | DDL | 创建新表 |
list_tables | 只读 | 列出所有表名 |
describe_table | 只读 | 获取表结构(列名、类型) |
append_insight | 读写 | 向特殊 insight 表写入分析笔记 |
提示:如果只需要数据分析,在
--db-path指向的数据库中创建一个只读 SQLite 用户,或通过文件系统权限设置只读(chmod 444)。
PostgreSQL MCP Server
用于连接已有的 PostgreSQL 数据库,适合查询业务数据。
npm install -g @modelcontextprotocol/server-postgres
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://readonly_user:password@localhost:5432/mydb"
]
}
}
}
强烈建议:为 MCP 专门创建一个只读数据库用户:
-- 创建只读用户
CREATE USER mcp_readonly WITH PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE mydb TO mcp_readonly;
GRANT USAGE ON SCHEMA public TO mcp_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly;
-- 未来新表也自动授权
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO mcp_readonly;
GitHub MCP Server(代码协作自动化)
npm install -g @modelcontextprotocol/server-github
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}
GitHub MCP 主要工具
Token 权限建议:创建 Fine-grained Token,只授权需要操作的仓库和功能(Issues、PRs、Contents),避免 Full Access Token。
Slack MCP Server(团队通知自动化)
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T0XXXXXXX"
}
}
}
}
主要工具:slack_post_message(发消息)、slack_list_channels(列频道)、slack_get_channel_history(读历史)。
典型架构:数据分析助手
本地业务数据] B[Filesystem MCP
读 CSV 报表] C[Slack MCP
发送分析结果] end U[用户] -->|分析本周销售并推送到 Slack| LLM LLM --> A LLM --> B LLM --> C
这个组合不需要写任何代码:AI 自动从文件读取原始数据、查询数据库获取历史对比、整理后推送到 Slack 频道。
API 密钥的安全存储
不要在 claude_desktop_config.json 中明文写入密钥。更安全的做法:
方案一:环境变量(推荐)
# ~/.zshrc 或 ~/.bashrc
export GITHUB_TOKEN="ghp_xxx"
export BRAVE_API_KEY="BSA-xxx"
在 config.json 中引用:
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
方案二:系统 Keychain(macOS)
security add-generic-password -s "mcp-github" -a "token" -w "ghp_xxx"
在 MCP Server 代码中读取:
import subprocess
token = subprocess.check_output(
["security", "find-generic-password", "-s", "mcp-github", "-w"]
).decode().strip()
本节执行清单
- [ ] 根据数据类型选择合适的数据库 MCP(SQLite 用于本地,PostgreSQL 用于业务库)
- [ ] 为数据库 MCP 创建专用只读用户,不使用管理员账号
- [ ] GitHub MCP 使用 Fine-grained Token,限制仓库和权限范围
- [ ] API 密钥通过环境变量或系统 Keychain 管理,不明文写入配置文件