Token导航 LogoToken导航TokenDH.com
Meta Query MCP logo
数据服务未说明官方级别未说明来源级核验

Meta Query MCP

MCP Server

AI驱动的SQL性能分析工具,支持Oracle和MySQL数据库,提供历史查询追踪、多层安全验证和执行计划可视化等功能。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude数据分析Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

aviciot

提供方

aviciot

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Oracle和MySQL性能MCP服务器🚀

基于人工智能的SQL性能分析,具有历史跟踪、多层安全、身份验证和多数据库支持

______________________________________________________________________

🎯 它做什么

此MCP服务器执行 无需执行查询即可进行深度SQL性能分析,支持两者 甲骨文MySQL,更多的数据库即将推出。

主要特点:

  • 🔍 智能SQL验证 -执行前阻止危险操作
  • 📊 历史查询跟踪 -检测随时间推移的性能回归
  • 🎨 可视化执行计划 -带有警告表情符号的ASCII树图
  • 🤖 如果增长模拟 -大规模预测性能
  • 🔐 多层安全 -针对危险SQL的三层防御
  • 🔑 可选API身份验证 -用于安全部署的承载令牌身份验证
  • 📈 实时性能监控 -数据库运行状况、热门查询和趋势
  • 🐬 原生MySQL 8.0+分析 -具有performance_schema的完全MySQL支持

未来的数据库引擎(PostgreSQL、Snowflake、SQL Server)可以通过模块化架构轻松添加。

______________________________________________________________________

🗄️ 支持的数据库

Oracle数据库

  • 版本:11克、12克、18克、19克、21克
  • 特性:DBMS_XPLAN计划解析、分区诊断、假设分析、历史计划比较、ASCII可视化计划

MySQL

  • 版本:5.7+、8.0+(推荐)
  • 特性:EXPLAIN FORMAT=JSON,performance_schema索引使用,重复索引检测,历史跟踪

______________________________________________________________________

🤖 LLM如何选择合适的工具

LLM会根据以下因素自动选择正确的分析工具:

  1. 工具描述标签 -每个工具都清楚地说明 [ORACLE ONLY][MYSQL ONLY]
  2. 数据库命名约定:

- 神谕: transformer_master, way4_docker7 - MySQL: mysql_devdb03_avi, mysql_production

  1. 用户上下文 -“分析此MySQL查询”等短语指导工具选择
  2. 错误处理 -如果需要,清除错误消息会重定向到正确的工具

______________________________________________________________________

🛠️ 可用工具

SQL分析工具

1. list_available_databases()

列出所有已配置的数据库终结点及其连接状态和版本信息。

退货:

  • 数据库名称
  • 连接状态(已连接/错误)
  • 数据库版本
  • 实例信息

______________________________________________________________________

2. analyze_full_sql_context(db_name, sql_text)

统一的Oracle+MySQL分析API

岩心分析

  • ✅ 执行计划(Oracle DBMS_XPLAN/MySQLEXPLAIN JSON)
  • ✅ 计划步骤、成本、基数
  • ✅ 表元数据(行数、大小、上次分析)
  • ✅ 索引元数据(列、基数、状态)
  • ✅ 列统计(不同值、空值、直方图)
  • ✅ 段大小(实际磁盘空间)
  • ✅ 分区诊断(修剪检测)
  • ✅ 优化参数
  • ✅ 约束(PK、FK、唯一)

增强功能

  • 🔐 SQL验证 -块INSERT、UPDATE、DELETE、DROP等。
  • 📊 历史跟踪 -使用SQLite存储的MD5指纹识别
  • 🎨 可视化执行计划 -带有表情符号警告的ASCII树
  • 📈 数据增长趋势 -检测表大小随时间的变化
  • ⚠️ 计划回归检测 -优化器更改策略时发出警报

______________________________________________________________________

3. compare_query_plans(db_name, original_sql, improved_sql)

Oracle和MySQL并行执行计划比较。

显示:

  • 成本差异和百分比改进
  • 访问方法更改(全扫描→ 索引扫描)
  • 基数估计差异
  • 方案结构比较

______________________________________________________________________

性能监控工具(Oracle)

4. get_database_health(db_name, time_range_minutes)

实时Oracle数据库运行状况监控。

退货:

  • 整体健康评分(0-100)
  • 系统指标:CPU使用率、活动会话、内存
  • 缓存命中率(缓冲区缓存、库缓存、字典缓存)
  • 等待时间最多的事件
  • 健康状况:健康/警告/危急

例子:

get_database_health("transformer_master", 5)

______________________________________________________________________

5. get_top_queries(db_name, metric, top_n, time_range_hours, exclude_sys, schema_filter, module_filter)

按性能指标检索顶级查询。

韵律学:

  • cpu_time -CPU消耗量最高
  • elapsed_time -运行时间最长的查询
  • buffer_gets -最合乎逻辑的阅读
  • executions -最常执行

过滤:

  • exclude_sys=true -过滤掉系统/内部查询(默认)
  • schema_filter -仅限于特定模式(例如“OWS”)
  • module_filter -按应用程序模块筛选

退货:

  • 带有查询模式的SQL文本
  • 执行统计信息
  • 资源使用情况(CPU、缓冲区获取、磁盘读取)
  • 首次/最后一次出现的时间戳

______________________________________________________________________

6. get_performance_trends(db_name, metric, hours_back, interval_minutes)

JSON图表数据的历史性能趋势。

韵律学:

  • cpu_usage -CPU百分比随时间变化
  • active_sessions -会话计数趋势
  • wait_events -等待事件模式
  • cache_hit_ratio -缓冲区缓存效率

退货:

  • 时间序列数据点
  • JSON图表数据(兼容chart.js)
  • 趋势分析(增加/减少/稳定)
  • 异常检测

例子:

get_performance_trends("way4_docker7", "cpu_usage", 24, 60)

______________________________________________________________________

🐬 MySQL专用工具

analyze_mysql_query(db_name, sql_text)

MySQL查询性能综合分析:

  • ✅ 解释格式=JSON解析
  • ✅ 来自information_schema的表+索引元数据
  • ✅ 来自performance_schema的索引使用统计信息
  • ✅ 重复索引检测
  • ✅ 历史查询跟踪(与Oracle共享)

compare_mysql_query_plans(db_name, original_sql, optimized_sql)

MySQL具体方案比较:

  • 成本差异
  • 访问方法改进
  • 行估计减少
  • 指标使用情况比较

______________________________________________________________________

🆕 此版本的新功能

性能监控(Oracle)

  • ✅ 实时数据库健康监控(CPU、内存、会话、缓存)
  • ✅ 带过滤的热门查询分析(排除系统查询,按模式/模块过滤)
  • ✅ JSON图表数据的性能趋势(兼容chart.js)
  • ✅ 具有30天保留期的历史快照
  • ✅ 可配置的输出格式(标准/紧凑/最小)

API身份验证

  • ✅ 可选的承载令牌身份验证
  • ✅ 多个API密钥支持和客户端命名
  • ✅ 每客户端请求日志记录
  • ✅ 公共卫生检查终点
  • ✅ 零性能开销
  • ✅ 使用密钥生成器实用程序轻松设置

MySQL支持

  • ✅ 完整解释格式=JSON解析
  • ✅ 从performance_schema中了解索引使用情况
  • ✅ 跨表的重复索引检测
  • ✅ MySQL特定的优化(跳过扫描,覆盖索引)

增强型安全系统(3层)

  1. LLM级别警告 -工具说明包括突出的安全警报
  2. 工具级SQL验证 -在元数据收集之前对查询进行预验证
  3. 收集器级别验证 -使用25个以上被屏蔽的关键字进行深度验证

受阻操作:

  • 插入、更新、删除、替换、合并、截断
  • 创建、删除、更改、重命名
  • 授予、撤销
  • 提交、回滚、保存点
  • 关机、终止、执行、调用
  • INTO OUTFILE/DUMFILE(MySQL数据泄露)
  • 锁定/解锁桌子
  • 子查询深度>10级
  • 查询长度>100KB

历史查询跟踪

  • 归一化 -将文字转换为占位符(WHERE id = 123WHERE id = :N)
  • 指纹识别 -用于查询结构匹配的MD5哈希生成
  • SQLite持久化 -本地存储在 server/data/query_history.db
  • 比较 -检测计划更改、成本增加和数据增长

可视化执行计划

  • 具有层次结构的ASCII树结构
  • 成本和基数显示
  • 警告表情符号:

- ✅ 高效的索引访问 - ⚠️ 全表扫描、跳过扫描 - 🚨 笛卡尔连接、分割问题

智能MCP提示

  • oracle_full_analysis -综合性能分析
  • oracle_index_analysis -指数策略建议
  • oracle_partition_analysis -分区修剪诊断
  • oracle_rewrite_query -SQL重写建议
  • oracle_what_if_growth -增长预测和产能规划

______________________________________________________________________

⚠️ 安全通知——MCP不执行SQL

此工具100%安全:

  • ✅ 仅使用元数据查询(information_schema、ALL\_\*视图)
  • ✅ 仅使用EXPLAIN PLAN/EXPLAIN(模拟执行)
  • 从不执行用户SQL
  • ✅ 对DELETE/UPDATE语句安全(在分析之前将被阻止)
  • ✅ 可以进行零数据修改

______________________________________________________________________

🔐 所需的Oracle权限

最低限度(核心功能)

GRANT SELECT ON ALL_TABLES TO ;
GRANT SELECT ON ALL_INDEXES TO ;
GRANT SELECT ON ALL_IND_COLUMNS TO ;
GRANT SELECT ON ALL_TAB_COL_STATISTICS TO ;
GRANT SELECT ON ALL_CONSTRAINTS TO ;
GRANT SELECT ON ALL_CONS_COLUMNS TO ;
GRANT SELECT ON ALL_PART_TABLES TO ;
GRANT SELECT ON ALL_PART_KEY_COLUMNS TO ;
GRANT SELECT ON PLAN_TABLE TO ;

推荐(增强功能)

GRANT SELECT ON V$PARAMETER TO ;
GRANT SELECT ON DBA_SEGMENTS TO ;
-- OR
GRANT SELECT ON USER_SEGMENTS TO ;

可选(运行时统计)

GRANT SELECT ON V$SQL TO ;

______________________________________________________________________

🐬 所需MySQL权限

最低限度(核心功能)

GRANT SELECT ON information_schema.TABLES TO ''@'%';
GRANT SELECT ON information_schema.STATISTICS TO ''@'%';
GRANT SELECT ON information_schema.COLUMNS TO ''@'%';
GRANT SELECT ON .* TO ''@'%';

推荐(增强功能)

GRANT SELECT ON performance_schema.table_io_waits_summary_by_index_usage TO ''@'%';
GRANT SELECT ON performance_schema.events_statements_summary_by_digest TO ''@'%';

性能架构设置

-- Enable performance_schema (add to my.cnf and restart)
[mysqld]
performance_schema = ON

-- Check if enabled
SELECT @@performance_schema;

-- Enable table I/O monitoring
UPDATE performance_schema.setup_instruments 
SET ENABLED = 'YES', TIMED = 'YES' 
WHERE NAME LIKE 'wait/io/table/%';

UPDATE performance_schema.setup_consumers 
SET ENABLED = 'YES' 
WHERE NAME LIKE '%table%';

______________________________________________________________________

⚙️ 配置

编辑 server/config/settings.yaml:

数据库连接

database_presets:
  way4_docker7:
    user: inform
    password: your_password
    dsn: hostname:1521/service_name
  
  mysql_devdb03_avi:
    host: devdb03.dev.bos.credorax.com
    port: 3306
    user: avi
    password: your_password
    database: avi

分析特征

oracle_analysis:
  output_preset: "compact"  # standard | compact | minimal
  metadata:
    table_statistics:
      enabled: true
  optimizer:
    parameters:
      enabled: true

mysql_analysis:
  output_preset: "compact"
  features:
    index_usage:
      enabled: true
    duplicate_detection:
      enabled: true

performance_monitoring:
  snapshots:
    retention_days: 30  # Keep history for 30 days
  output_preset: "compact"
  chart_format: "json"

身份验证(可选)

server:
  authentication:
    enabled: false  # Set to true to enable API key authentication
    api_keys:
      - name: "claude_desktop"
        key: "your-secure-api-key-here"
        description: "Claude Desktop client"

要启用身份验证,请执行以下操作:

  1. 生成API密钥: python generate_api_key.py
  2. 将密钥添加到 settings.yaml (套 enabled: true)
  3. 使用配置客户端 Authorization: Bearer 头球
  4. 身份验证_GUIDE.md 详情

日志记录

logging:
  level: INFO  # DEBUG | INFO | WARNING | ERROR
  show_tool_calls: true
  show_sql_queries: false

______________________________________________________________________

🚀 快速开始

1.配置数据库

编辑 server/config/settings.yaml 使用您的数据库凭据。

2.使用Docker运行

docker compose up --build

服务器将:

  • 从端口8300开始
  • 自动创建 server/data/query_history.db
  • 启用热重新加载以进行开发

3.使用MCP检验员进行测试

List available databases

然后分析一个查询:

Analyze this query on way4_docker7:

SELECT ms.contract_id, ms.ready_date 
FROM ows.merchant_statement ms
WHERE ms.contract_id = 12313 
  AND ROWNUM  20 ORDER BY order_date LIMIT 10"
  }
}

答复包括:

  • 解释格式=JSON计划
  • 来自performance_schema的索引使用统计信息
  • 重复索引检测结果
  • 历史跟踪比较
  • 未使用的索引警告

查询比较

{
  "tool": "compare_query_plans",
  "arguments": {
    "db_name": "way4_docker7",
    "original_sql": "SELECT * FROM ows.merchant_statement WHERE contract_id = 12313",
    "improved_sql": "SELECT contract_id, ready_date FROM ows.merchant_statement WHERE contract_id = 12313 AND ROWNUM  SYSDATE - 30
  AND ROWNUM  20
  AND status = 'pending'
ORDER BY order_date DESC
LIMIT 10;

Show me the execution plan and any performance issues.

5.指标使用分析

Analyze this query and check which indexes are actually being used:

SELECT co.order_id, co.customer_id, co.amount, co.status
FROM avi.customer_order co
WHERE co.amount > 100
  AND co.order_date > DATE_SUB(NOW(), INTERVAL 30 DAY)
ORDER BY co.status, co.order_date;

Include index usage statistics from performance_schema.

6.重复索引检测

Check the customer_order table for any duplicate or redundant indexes.

Analyze query: SELECT * FROM avi.customer_order WHERE customer_id = 123

Tell me if there are unused indexes that could be dropped.

7.MySQL安全测试

Try to analyze this MySQL query (should be blocked):

DELETE FROM avi.customer_order WHERE amount = 0;

Expected: Security validation blocks the query immediately with error message.

性能监测测试

8.数据库健康检查

Check the current health status of transformer_master database.

Use get_database_health to see CPU usage, active sessions, cache hit ratios, and top wait events.

9.顶级CPU查询

Show me the top 10 queries consuming the most CPU time on way4_docker7 in the last 4 hours.

Filter out system queries and focus on application queries.

10.性能趋势

Show me the CPU usage trend for transformer_master over the last 24 hours with hourly intervals.

Include a chart visualization of the trend.

______________________________________________________________________

📊 响应结构

{
  "facts": {
    "query_fingerprint": "MD5 hash of normalized query",
    "historical_executions": "Number of previous runs",
    "historical_context": "Human-readable comparison",
    "visual_plan": "ASCII tree with emojis",
    "execution_plan": "Traditional DBMS_XPLAN output",
    "plan_details": [...],
    "tables": [...],
    "indexes": [...],
    "columns": [...],
    "constraints": [...],
    "optimizer_params": {...},
    "segment_sizes": {...},
    "partition_diagnostics": {...}
  }
}

关键字段:

  • query_fingerprint -查询结构的唯一MD5哈希
  • historical_executions -上次运行次数
  • historical_context -性能比较、计划更改、数据增长
  • visual_plan -带有表情符号警告的ASCII树
  • plan_details -具有成本/基数的结构化计划步骤
  • tables -行数、大小、分区信息
  • indexes -指数统计、聚类因子、计划中的使用情况

______________________________________________________________________

🛡️ 安全功能

多层防御

  1. LLM意识 -工具说明包括安全警告
  2. 工具级别验证 -在元数据收集之前预验证SQL
  3. 收集器验证 -通过全面的关键字屏蔽进行深度验证

受阻操作

  • 数据修改:插入、更新、删除、替换、合并、截断
  • 架构更改:创建、删除、更改、重命名
  • 权限:授予、撤销
  • 系统运维:关闭、终止、执行、调用
  • 数据渗漏:选择INTO(Oracle)、INTO OUTFILE/DUMFILE(MySQL)
  • 表锁定:锁定、解锁表(MySQL)

DoS防御

  • 最多10级子查询嵌套
  • 查询长度限制:100KB
  • 验证查询超时

可选API身份验证

  • 承载令牌身份验证 -通过授权头验证API密钥
  • 多客户端支持 -跟踪和管理多个API密钥
  • 公共端点 -无需身份验证即可进行健康检查
  • 零性能影响 -每个请求的开销\ 50000

-- Normalized SELECT * FROM EMPLOYEES WHERE DEPT_ID = :N AND SALARY > :N


1. **指纹识别** -生成规范化SQL的MD5哈希

1. **存储** -保存到SQLite(`server/data/query_history.db`)

CREATE TABLE query_history ( id INTEGER PRIMARY KEY, query_fingerprint TEXT NOT NULL, executed_at TIMESTAMP, plan_hash TEXT, total_cost INTEGER, num_tables INTEGER, tables_summary TEXT );


1. **比较** -检测变化:

   - 计划哈希值已更改(优化器切换策略)
   - 成本增加(性能回归)
   - 行数已更改(数据增长)

### 益处

- **回归检测** -及早发现性能下降
- **计划稳定性** -跟踪优化器何时更改策略
- **数据增长监测** -查看表格大小趋势
- **基线比较** -与历史规范相比

______________________________________________________________________

## 🎨 可视化执行计划

### 示例

SELECT STATEMENT (Cost: 450) └─ COUNT (Cost: 450) └─ FILTER (Cost: 450) ├─ TABLE ACCESS BY INDEX ROWID: OWS.MERCHANT_STATEMENT (Cost: 450, Rows: 1,850) │ └─ INDEX RANGE SCAN: OWS.IDX_MS_CONTRACT ✅ (Cost: 5, Rows: 1,850) └─ FILTER (Cost: 5)


### 报警指示器

|表情符号|操作|含义|
|-------|-----------|---------|
| ✅ | 索引唯一扫描|完美-单行查找|
| ✅ | 索引范围扫描(低成本)|高效索引访问|
| ⚠️ | 表访问已满|警告-全表扫描|
| ⚠️ | 索引跳过扫描|警告-索引使用效率低|
| ⚠️ | 嵌套外观(高行)|警告-笛卡尔风险大|
| 🚨 | 笛卡尔式|批判性-笛卡尔式连接|

______________________________________________________________________

## 🔧 项目结构

server/ ├── config/ │ ├── settings.yaml # Database connections + configuration │ └── settings.template.yaml # Template for new installations ├── tools/ │ ├── oracle_analysis.py # Oracle MCP tools │ ├── oracle_collector_impl.py # Oracle data collection │ ├── mysql_analysis.py # MySQL MCP tools │ ├── mysql_collector_impl.py # MySQL data collection │ ├── database_tools.py # Database listing tool │ └── plan_visualizer.py # ASCII tree generator ├── prompts/ │ └── analysis_prompts.py # Smart MCP prompts ├── resources/ │ └── (optional resources) ├── data/ │ └── query_history.db # SQLite history (auto-created) ├── history_tracker.py # Query fingerprinting ├── db_connector.py # Oracle connector ├── mysql_connector.py # MySQL connector └── mcp_app.py # FastMCP application


______________________________________________________________________

## 🧪 测试检查表

- \[ \] **安全**:尝试更新/删除→ 应该被封锁
- \[ \] **验证**:尝试无效语法→ 应返回明确错误
- \[ \] **历史(首轮)**:新查询→ 显示“0次历史执行”
- \[ \] **历史(第二轮)**:相同的查询→ 显示比较
- \[ \] **可视化计划**:响应包括带有表情符号的ASCII树
- \[ \] **MySQL索引使用情况**:显示性能_模式统计信息
- \[ \] **重复检测**:标识冗余索引
- \[ \] **查询比较**:显示成本差异

______________________________________________________________________

## 🛠️ 故障排除

### Oracle问题

**“ORA-00942:表或视图不存在”**

- 检查用户是否对所需视图进行了选择
- 验证settings.yaml中的连接凭据

**缺少优化器参数**

- 用户需要在V$PARAMETER上选择
- 或通过禁用 `oracle_analysis.optimizer.parameters.enabled: false`

**分析速度慢**

- 尝试“紧凑型”输出预设
- 如果DBA_SEGMENTS速度较慢,则禁用segment_size

### MySQL问题

**“用户访问被拒绝”**

- 验证MySQL用户在information_schema上有SELECT
- 检查目标数据库访问权限

**缺少索引使用统计信息**

- 在my.cnf中启用performance_schema
- 检查setup_instruments和setup_consummer

**解释失败**

- 验证用户在目标表上具有SELECT
- 检查SQL中的语法错误

______________________________________________________________________

## 👤 作者

**阿维·科恩**\
电子邮件:aviciot@gmail.com\
github: [Aviciot/MetaQuery-MCP](https://github.com/aviciot/MetaQuery-MCP)

______________________________________________________________________

## 📜 许可证

MIT许可证-有关详细信息,请参阅许可证文件

目录标签

目录标签

PythonClaude数据分析数据库优化本地部署SQL分析性能监控安全验证执行计划可视化

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明api-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP