使用说明
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 build
2.初始化配置并生成secret
cp db.config.example.json db.config.json
node dist/create-token.js --init
3.生成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": "<64-char hex — generated by node dist/create-token.js --init>"
},
"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 <your-token>",
"X-Database-URL": "oracle://user:password@host:1521/ORCL"
}
}
}
}
克劳德代码-CLI
TOKEN="<your-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 <your-token>",
"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:404
systemd服务
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特定注释) |
许可证
麻省理工学院