项目简介

这是一个基于 MCP(Model Context Protocol)的服务器实现,运行在 Apache Spark 环境中。它通过 HTTP 传输提供对 Spark 资源、工具和 Prompts 的访问能力,方便将 Spark 的查询结果、计划信息和元数据暴露给大语言模型(LLM)进行分析、优化与决策。

主要功能点

  • 作为 MCP 服务器:实现基于 FastMCP 的服务器端,处理来自客户端的请求,返回 JSON-RPC 风格的响应。
  • Spark 上下文管理:在服务器生命周期内创建并维护一个 SparkSession,确保计划和查询在同一上下文中执行。
  • 提供工具集合:包含执行 SQL、获取 Spark 版本、生成分析/优化计划、估算结果大小、获取表/数据库/目录信息等多种工具。
  • 计划与元数据渲染:可以返回分析计划、优化计划、表结构、查询输出模式等信息,便于 AI 客户端进行分析。
  • 多传输支持:通过 transport="http" 启动,后续也可扩展到其他传输协议(如 Stdio、SSE、WebSocket)。
  • CLI 启动支持:提供 PySpark 的封装入口,通过 spark-submit 启动 MCP 服务器,简化 Spark 配置。

安装步骤

  • 环境要求:Python 3.11 及以上、Spark 已安装并配置好环境变量、依赖包 fastmcp、loguru、pyspark 等可用。
  • 安装包并运行:
    • 通过 pip 安装对应包(示例中为 pyspark-mcp,具体名称以仓库说明为准)。
    • 使用提供的命令启动服务器,例如: pyspark-mcp --master "local[*]" --host 127.0.0.1 --port 8090
    • 服务器会在指定 host/port 提供 MCP 服务,默认端口为 8090。

服务器配置(MCP 客户端的连接信息)

以下为 MCP 客户端需要的连接配置信息示例(以 JSON 形式描述,请直接使用文本形式阅读,不提供代码块): { "server_name": "pyspark-mcp", "command": "pyspark-mcp", "args": [ "--master", "local[*]", "--host", "127.0.0.1", "--port", "8090" ], "endpoint": "http://127.0.0.1:8090/mcp", "transport": "http", "description": "通过上述命令启动的 MCP 服务器,提供 HTTP 接口供 MCP 客户端调用。" }

说明:

  • server_name 为服务器在客户端配置中的名称,便于识别。
  • command/args 是启动服务器的命令及参数,MCP 客户端将使用这些信息建立连接(实际启动往往由客户端自行执行命令,这里给出准确的配置)。
  • endpoint 指向服务器暴露的 MCP 接口地址,客户端会通过该地址发送请求(如读取资源、调用工具、获取 Prompts)。
  • 由于本实现通过 start_mcp_server().run(transport="http", port, host) 启动,HTTP 端口和主机需与上面的参数一致。

基本使用方法

  • 启动服务器:按照安装步骤运行命令,确保 Spark 环境就绪,服务器启动后监听指定的 host/port。
  • 连接客户端:将客户端的 MCP 配置指向 server 的 endpoint,例如 http://127.0.0.1:8090/mcp。
  • 调用工具与获取信息:通过 MCP 客户端发起 JSON-RPC 请求,服务器将执行 Spark 相关操作(如执行 SQL、获取计划或元数据),并返回结果。
  • 运行环境清理:停止服务器时,确保 SparkSession 正确关闭,以释放资源。

运行与扩展

  • 现有实现强调在 SparkSession 下的能力范围,未来可以扩展成更多传输协议、更多工具、以及对多会话/并发的更强支持。

信息

分类

AI与计算