项目简介
SSB MCP服务器是一个基于Model Context Protocol (MCP) 的应用后端,旨在将SQL Stream Builder (SSB) 的强大功能以标准化的方式暴露给大型语言模型(LLM)客户端,如Claude Desktop。它支持对SSB进行数据访问、任务管理、监控诊断等80多项操作,兼容独立部署和Cloudera Data Platform (CDP) 部署的SSB环境。
主要功能点
- 全面SSB管理: 通过80多种工具,覆盖SSB API的80%以上,实现SQL流管理、任务生命周期控制、表和数据源操作、UDF管理等。
- 多重认证支持: 支持SSB直连的基础认证,以及Apache Knox集成的Bearer Token、Cookie和密码令牌等多种认证方式。
- 安全操作: 默认开启只读模式(CDP部署),可配置启用写入操作,确保数据安全。
- 实时数据采样: 支持灵活的SQL查询执行,提供实时数据采样,包括“采样所有消息”模式和自定义采样配置。
- 监控与诊断: 提供系统健康检查、性能计数器、SQL查询分析等功能,帮助监控SSB运行状态。
- Kafka集成: 允许创建和注册基于Kafka的虚拟表,方便LLM查询实时流数据。
- 会话和能力声明: 遵循MCP协议,与LLM客户端进行JSON-RPC通信,支持会话管理和能力声明。
安装步骤
- 克隆仓库:
git clone https://github.com/BrooksIan/SSB-MCP-Server.git cd SSB-MCP-Server - 创建并激活Python虚拟环境:
python3 -m venv .venv source .venv/bin/activate - 安装项目依赖:
pip install -e . - 配置SSB连接信息: 根据您的SSB部署类型(独立部署或CDP部署),通过环境变量设置SSB连接凭据。您可以在运行MCP服务器的脚本或MCP客户端的配置中设置这些环境变量:
- 独立SSB部署:
- 'SSB_API_BASE': 您的SSB API基础URL,例如 'http://localhost:18121'
- 'SSB_USER': SSB用户名,例如 'admin'
- 'SSB_PASSWORD': SSB密码,例如 'admin'
- CDP SSB部署 (通过Knox):
- 'KNOX_GATEWAY_URL': Knox网关URL,例如 'https://<your-ssb-host>/gateway/ssb'
- 'KNOX_TOKEN': 您的Knox JWT令牌 (从CDP UI获取)
- 'SSB_API_BASE': CDP环境下SSB API的完整路径,例如 'https://<your-ssb-host>/ssb/api/v1'
- 可选:'SSB_READONLY': 设置为 'false' 可启用写入操作 (CDP部署默认为只读)
- 独立SSB部署:
- 启动SSB服务 (仅Docker Compose部署):
如果您使用Docker Compose进行本地Standalone SSB部署,需要先启动相关的SSB服务。在项目根目录执行:
docker-compose up -d
服务器配置
MCP客户端(如Claude Desktop)通过JSON格式的配置文件来连接MCP服务器。以下是配置示例及说明:
-
本地运行 (在虚拟环境中): 将以下JSON片段添加到您的MCP客户端配置(例如 '~/Library/Application Support/Claude/claude_desktop_config.json')中。请确保替换路径和令牌为您的实际值。
{ "mcpServers": { "ssb-mcp-server": { "command": "/FULL/PATH/TO/SSB-MCP-Server/.venv/bin/python", "args": [ "-m", "ssb_mcp_server.server" ], "env": { "MCP_TRANSPORT": "stdio", "SSB_API_BASE": "https://ssb-gateway.yourshere.cloudera.site/ssb/api/v1", "KNOX_TOKEN": "<your_knox_bearer_token>", "SSB_READONLY": "true" } } } }- '"ssb-mcp-server"': 您为该MCP服务器指定的唯一名称。
- 'command': MCP服务器的可执行命令的完整路径。在这里是您的虚拟环境中的Python解释器路径。
- 'args': 传递给命令的参数列表。'-m ssb_mcp_server.server' 指示Python解释器运行 'ssb_mcp_server' 模块内的服务器代码。
- 'env': 环境变量,用于配置MCP服务器的行为:
- 'MCP_TRANSPORT': 指定通信协议,'"stdio"' (标准输入输出) 是常用方式。
- 'SSB_API_BASE': SSB API的完整基础URL。
- 'KNOX_TOKEN': 您的Knox JWT认证令牌。
- 'SSB_READONLY': 设置为 '"true"' 或 '"false"' 控制服务器是否为只读模式。
-
通过'uvx'远程安装 (适用于Cloudera Agent Studio): 在您的Cloudera Agent Studio配置中,您可以使用'uvx'命令来远程安装和运行MCP服务器。
{ "mcpServers": { "ssb-mcp-server": { "command": "uvx", "args": [ "--from", "git+https://github.com/your-org/ssb-mcp-server@main", "run-server" ], "env": { "MCP_TRANSPORT": "stdio", "SSB_API_BASE": "https://ssb-gateway.yourshere.cloudera.site/ssb/api/v1", "KNOX_TOKEN": "<your_knox_bearer_token>", "SSB_READONLY": "true" } } } }- 'command': 使用 'uvx' 工具作为启动命令。
- 'args': 'uvx' 的参数,'--from git+...' 指定从Git仓库安装,'run-server' 告诉'uvx'运行仓库中的服务器。
- 'env': 环境变量,其含义与本地运行配置中的相同。
基本使用方法
配置完成后,重启您的MCP客户端(如Claude Desktop)。现在,您就可以通过自然语言与SSB环境进行交互了:
- 查询信息:
- “我的SSB版本是多少?”
- “列出所有我的SQL流。”
- “有哪些表可以查询?”
- “列出所有Kafka主题。”
- “集群健康状况如何?”
- 数据查询与获取:
- “执行这个查询:'SELECT * FROM NVDA LIMIT 10'。”
- “创建一个只采样所有消息的任务:'SELECT * FROM my_stream'。”
- “显示任务1234的状态。”
- “获取任务1234的采样数据。”
- 任务管理:
- “停止任务1234。”
- “重启任务1234并采样所有消息。”
- 流管理:
- “创建一个名为'sales_analysis'的新流,SQL是'SELECT * FROM sales WHERE amount > 1000'。”
- “显示'user_events'流的详细信息。”
- Kafka表管理:
- “创建一个名为'user_events'的本地Kafka表,主题是'user-events'。”
MCP服务器将解析您的自然语言请求,调用相应的SSB API工具,并将操作结果或数据以LLM易于理解的格式返回给客户端。
信息
分类
商业系统