PySpark MCP 服务器是针对 Apache Spark 的轻量级 Model Context Protocol (MCP) 实现。
该 MCP 服务器的主要目的是通过 AI 系统来促进查询优化。它提供从 Spark 到 AI 系统进行分析的逻辑和物理查询计划,以及额外的查询计划信息。此外,该服务器还公开目录和表的信息,使基于 Spark 的数据湖具备数据发现能力。
必须使用 spark-submit 来运行服务器,以确保正确配置 Spark 环境和依赖项。这允许通过标准的 Spark 参数传递 Spark 配置、额外的 JAR 文件和 YARN 设置。
示例命令:
spark-submit --master "local[1]" ./pyspark_mcp_server/mcp_server.py --host "127.0.0.1" --port 8090
claude mcp add --transport http pyspark-mcp http://127.0.0.1:8090/mcp
以下工具包含在 PySpark MCP 服务器中:
| MCP 工具 | 描述 |
|---|---|
| 获取 PySpark 版本 | 从当前 PySpark 会话获取版本号 |
| 获取查询的分析计划 | 从提供的 SQL 查询中提取分析过的逻辑计划 |
| 获取查询的优化计划 | 从提供的 SQL 查询中提取优化过的逻辑计划 |
| 获取查询结果的大小估算 | 从查询计划解释中提取大小和单位 |
| 从查询计划中获取表 | 从查询计划解释中提取所有表(关系) |
| 获取当前 Spark 目录 | 获取当前 SparkSession 默认的目录 |
| 检查数据库是否存在 | 检查给定名称的数据库是否存在于当前目录 |
| 获取当前默认数据库 | 从默认目录获取当前默认数据库 |
| 列出当前目录中的所有数据库 | 列出现有目录中的所有数据库 |
| 列出可用目录 | 列出现在 SparkSession 中的所有目录 |
| 列出当前目录中的所有表 | 列出现有 Spark 目录中的所有表 |
| 获取表的注释 | 提取表的注释或返回空字符串 |
| 获取表模式 | 获取目录中表的 spark 模式 |
| 返回 SQL 查询结果的模式 | 执行查询,获取结果,获取结果的模式并返回一个 JSON 格式的模式值 |
| 读取文本文件的前 N 行 | 以纯文本形式读取文件的前 N 行。有助于确定文件格式 |