Radek Oracle MCP
高级Oracle 19c诊断MCP服务器 人工智能工具(克劳德代码、光标)。
29工具 涵盖了完整的Oracle诊断堆栈:会话、锁、等待事件、SQL性能(v$SQL)、表空间、SGA/PGA内存、重做日志、撤消管理、优化器统计、数据保护和模式分析。
______________________________________________________________________
察看连接信息
| 参数 | 值 |
|---|---|
| 服务器名称 | radek-oracle-mcp |
| MCP名称 (在客户端配置中) | radek-oracle |
| 统一资源定位符 | https://radek-oracle-mcp.clickchain.eu/mcp |
| 健康检查 | https://radek-oracle-mcp.clickchain.eu/health |
| 港口(本地) | 8003 |
| 隧道ID | ffcf0846-8f91-4687-a312-989ac2e11835 |
| 隧道DNS | radek-oracle-mcp.clickchain.eu |
______________________________________________________________________
快速开始
1.安装依赖项
cd /data/project/radek-oracle-mcp
npm install
npm run build2.初始化配置并生成secret
cp db.config.example.json db.config.json
node dist/create-token.js --init3.生成JWT令牌
node dist/create-token.js --name claude --days 365输出包括一个即用型 .mcp.json Claude代码和游标块。
4.启动服务器
npm start
# or for development:
npm run dev验证:
curl http://localhost:8003/health
# {"status":"ok","server":"Radek Oracle MCP","version":"1.0.0","tools":29}5.启动Cloudflare隧道
cloudflared tunnel --config ~/.cloudflared/config-radek-oracle-mcp.yml run radek-oracle-mcp______________________________________________________________________
配置
db.config.json:
{
"auth": {
"secret": ""
},
"server": {
"port": 8003,
"tunnel_url": "https://radek-oracle-mcp.clickchain.eu"
}
}database.url是可选的--Claude通过以下方式动态传递Oracle URLX-Database-URL头球
______________________________________________________________________
Oracle连接URL格式
X-Database-URL: oracle://user:password@host:1521/service_name
X-Database-URL: oracle://user:password@host:1521/ORCL
X-Database-URL: oracle://user:password@scan-host:1521/MYDB (RAC)
X-Database-URL: oracle+ssl://user:password@host:2484/ORCL (SSL/TLS)所需Oracle权限
GRANT CREATE SESSION TO mcp_user;
GRANT SELECT_CATALOG_ROLE TO mcp_user;
GRANT SELECT ANY DICTIONARY TO mcp_user;
-- For explain_query:
GRANT CREATE ANY TABLE TO mcp_user;
-- Or simply:
GRANT DBA TO mcp_user;______________________________________________________________________
MCP客户端配置
克劳德代码-- .mcp.json
{
"mcpServers": {
"radek-oracle": {
"type": "http",
"url": "https://radek-oracle-mcp.clickchain.eu/mcp",
"headers": {
"Authorization": "Bearer ",
"X-Database-URL": "oracle://user:password@host:1521/ORCL"
}
}
}
}克劳德代码-CLI
TOKEN=""
DB="oracle://user:password@host:1521/ORCL"
claude mcp add radek-oracle https://radek-oracle-mcp.clickchain.eu/mcp \
--transport http \
--header "Authorization: Bearer $TOKEN" \
--header "X-Database-URL: $DB" \
--scope local光标-- .cursor/mcp.json
{
"mcpServers": {
"radek-oracle": {
"type": "http",
"url": "https://radek-oracle-mcp.clickchain.eu/mcp",
"headers": {
"Authorization": "Bearer ",
"X-Database-URL": "oracle://user:password@host:1521/ORCL"
}
}
}
}______________________________________________________________________
Cloudflare 隧道
隧道 radek-oracle-mcp 使用ID创建 ffcf0846-8f91-4687-a312-989ac2e11835.
域名系统 radek-oracle-mcp.clickchain.eu → 指向这条隧道。
手动开始
cloudflared tunnel --config ~/.cloudflared/config-radek-oracle-mcp.yml run radek-oracle-mcp配置文件(~/.cloudflared/config-radek-oracle-mcp.yml)
credentials-file: /home/mcp/.cloudflared/ffcf0846-8f91-4687-a312-989ac2e11835.json
ingress:
- hostname: radek-oracle-mcp.clickchain.eu
service: http://127.0.0.1:8003
- service: http_status:404systemd服务
sudo tee /etc/systemd/system/cloudflared-radek-oracle-mcp.service > /dev/null << 'EOF'
[Unit]
Description=Cloudflare Tunnel — radek-oracle-mcp
After=network.target
[Service]
User=mcp
ExecStart=/usr/bin/cloudflared tunnel --config /home/mcp/.cloudflared/config-radek-oracle-mcp.yml run radek-oracle-mcp
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable cloudflared-radek-oracle-mcp
sudo systemctl start cloudflared-radek-oracle-mcp______________________________________________________________________
令牌生成
# First time — generate secret
node dist/create-token.js --init
# Generate tokens
node dist/create-token.js --name claude --days 365
node dist/create-token.js --name cursor --days 90
node dist/create-token.js --name ci-bot --days 365
# Using npm script
npm run token -- --name claude --days 365______________________________________________________________________
可用工具(29)
| 类别 | 工具 | 描述 |
|---|---|---|
| 诊断 | auto_diagnose | Oracle全自动诊断——从这里开始 |
| 诊断 | health_check | 快速运行状况:版本、SGA、缓冲区缓存、会话、等待 |
| 会话 | analyze_sessions | 按用户/机器/程序、长时间运行、长时间操作、限制划分的会话 |
| 锁 | analyze_locks | 使用kill命令、锁等待、事务、DDL锁阻止会话 |
| SQL性能 | analyze_sql | 从v$SQL按已用/CPU/磁盘/缓冲区/执行次数排列的顶级SQL |
| SQL性能 | explain_query | 解释+DBMS_XPLAN的计划。显示(全部) |
| 等待事件 | analyze_waits | v$system_event、当前等待、排队、锁存、ASH |
| 记忆 | analyze_memory | SGA/PGA组件、内存顾问、排序溢出 |
| 表空间 | analyze_tablespaces | 使用率%、数据文件、可用空间、临时、自动扩展风险 |
| 表格 | analyze_tables | 段大小、统计数据、过时统计数据、分区 |
| 表格 | investigate_table | 深入了解一张表(大小、统计数据、索引、约束) |
| 表格 | list_tables | 所有按大小排序的用户表 |
| 索引 | analyze_indexes | 所有索引,不可用,不可见,基数低,重复 |
| 索引 | indexes_for_table | 特定表的所有索引 |
| 索引 | suggest_index | 生成CREATE INDEX(不执行) |
| 存储 | analyze_storage | 按模式、数据文件I/O、数据块碎片进行分段 |
| 重做 | analyze_redo | 日志组、切换频率、归档状态 |
| 撤销 | analyze_undo | ORA-01555风险、撤消统计、撤消分段 |
| 统计 | analyze_statistics | 过时/缺失的优化器统计数据,收集作业状态 |
| 数据卫士 | analyze_dataguard | 应用/传输延迟、存档转储、数据库角色 |
| 配置 | analyze_configuration | 关键参数、非默认、安全设置 |
| 模式 | analyze_schema | 对象无效、缺少PK、没有索引的FK、禁用约束 |
| 模式 | table_structure | 一个表的列、约束和索引 |
| 行动 | run_query | 执行任何Oracle SQL |
| 行动 | kill_session | ALTER SYSTEM KILL会话“sid,序列号” |
| 报告 | generate_report | 来自markdown的PDF/HTML/DOCX报告 |
| 发现 | query_tools | 列出所有带参数的工具 |
| 发现 | query_queries | 自然语言问题示例 |
| 发现 | get_instructions | 返回CLAUDE.md指令 |
______________________________________________________________________
Oracle专用工具(没有MySQL/PostgreSQL等效工具)
| 工具 | 为什么特定于Oracle |
|---|---|
analyze_waits | 完整的Oracle等待事件模型(v$system_event,ASH) |
analyze_redo | 恢复日志组、切换频率、存档 |
analyze_undo | 撤销管理,ORA-01555跟踪 |
analyze_statistics | DBMS_STATS优化器统计信息 |
analyze_dataguard | Oracle数据保护(备用/主) |
______________________________________________________________________
建筑
AI Client (Claude Code, Cursor)
│ HTTPS + JWT Bearer + X-Database-URL header
▼
Cloudflare Tunnel (radek-oracle-mcp.clickchain.eu)
│ ffcf0846-8f91-4687-a312-989ac2e11835
▼
HTTP Server (Node.js, port 8003)
│ JWT verify → JSON-RPC 2.0
▼
MCP Handler (protocol 2025-11-25)
│ tools/call dispatch
▼
Tool Layer (29 tools in src/tools/)
│ Oracle SQL queries
▼
Query Layer (Oracle SQL in src/queries/)
│ oracledb pool (max 5 connections, thin mode)
▼
Oracle 12c / 18c / 19c / 21c______________________________________________________________________
文档
| 文件 | 内容 |
|---|---|
README.md | 此文件——设置、配置、工具概述 |
USER_GUIDE.md | 逐步设置、令牌生成、客户端配置、故障排除 |
TOOLS.md | 所有29个工具的完整参考,包括参数和示例 |
QUERIES.md | 映射到工具的自然语言问题示例 |
TREE.md | 决策树——症状→ 工具映射 |
ARCHITECTURE.md | 内部架构、层、文件结构 |
CLAUDE.md | AI助手说明(工作流程、报告格式、Oracle特定注释) |
______________________________________________________________________
许可证
麻省理工学院
