项目简介
'Pixeltable' 主要是一个声明式多模态AI数据基础设施库。在其 'tests' 目录中包含一个名为 'example_mcp_server.py' 的示例程序,它是一个独立的MCP服务器实现。该服务器使用 'fastmcp' 库构建,用于演示如何向LLM客户端提供“工具”功能,允许LLM调用预定义的Python函数。
主要功能点
- 工具注册与执行: 注册了 'pixelmultiple'(计算两个整数的特定乘积)和 'pixeldict'(处理字典并添加新键值)等工具。这些工具可以被外部LLM客户端通过标准协议调用。
- JSON-RPC通信: 通过 'mcp.server.fastmcp' 库,该服务器能够通过JSON-RPC协议接收LLM客户端的工具调用请求并返回结果。
- 会话管理与能力声明: 支持MCP协议的会话管理和能力声明机制,为LLM应用提供上下文服务。
安装步骤
-
克隆仓库: 首先,将Pixeltable GitHub仓库克隆到您的本地机器:
git clone https://github.com/pixeltable/pixeltable.git cd pixeltable -
安装依赖: 建议在虚拟环境中安装项目所需的依赖,以避免与系统Python环境冲突:
# 创建并激活虚拟环境 (可选,但强烈推荐) python -m venv venv source venv/bin/activate # macOS/Linux # 或在 Windows 上使用: venv\Scripts\activate.bat # 安装必要的Python库 # fastmcp 是MCP服务器框架,pixeltable 是客户端库,openai 是为了测试文件中的LLM集成 pip install fastmcp pixeltable openai
服务器配置 (供MCP客户端使用)
MCP客户端需要以下JSON格式的配置信息来连接此MCP服务器:
{ "server_name": "PixeltableDemo", "command": "python", "args": [ "path/to/pixeltable/tests/example_mcp_server.py" ], "description": "连接到Pixeltable仓库中提供的MCP示例服务器。此服务器托管了pixelmultiple和pixeldict工具,并使用JSON-RPC协议进行通信。您可以通过该服务器调用预定义的Python工具,例如计算特定数学表达式或处理字典数据。" }
- 'server_name': MCP服务器的唯一标识符,客户端将用此名称来引用服务器。
- 'command': 启动MCP服务器进程的命令,通常是 'python'。
- 'args': 启动命令的参数列表。其中第一个参数是MCP服务器脚本的路径。请务必将 'path/to/pixeltable' 替换为您的本地 'pixeltable' 仓库的实际根目录路径。
- 'description': 对此MCP服务器功能的简要说明,帮助LLM客户端理解其提供的能力。
基本使用方法
-
启动MCP服务器: 在终端中,导航到 'pixeltable' 仓库的根目录,然后运行以下命令启动MCP服务器:
python tests/example_mcp_server.py服务器将启动并监听来自MCP客户端的请求(默认通过 'streamable-http' 传输协议)。
-
在Pixeltable客户端中加载并调用工具(示例): 打开另一个Python环境或脚本(如果之前激活了虚拟环境,请再次激活),您可以使用 'pixeltable' 库作为MCP客户端,加载并调用服务器上注册的工具。
import pixeltable as pxt # 从MCP服务器加载工具。服务器地址和端口必须与example_mcp_server.py中配置的匹配。 # 默认是 http://localhost:8000/mcp。 mcp_tools = pxt.mcp_udfs('http://localhost:8000/mcp') # 打印加载到的工具列表,以确认连接成功并识别工具 print("MCP服务器上可用的工具:", [tool.name for tool in mcp_tools]) # 假设服务器上注册的第一个工具是 'pixelmultiple' # 您也可以通过工具名称访问:pixelmultiple_tool = next(t for t in mcp_tools if t.name == 'pixelmultiple') pixelmultiple_tool = mcp_tools[0] # 创建一个Pixeltable表来演示如何将MCP工具调用集成到数据处理流程中 t = pxt.create_table('my_llm_app_data', {'val_a': pxt.Int, 'val_b': pxt.Int}) t.insert([{'val_a': 10, 'val_b': 5}, {'val_a': 20, 'val_b': 3}]) # 将MCP工具的调用结果作为计算列添加到表中 # 这里,pixelmultiple_tool 接收表中的 val_a 和 val_b 作为参数 t.add_computed_column(result_from_mcp=pixelmultiple_tool(a=t.val_a, b=t.val_b)) # 查询表,查看工具调用和计算结果 print(t.select(t.val_a, t.val_b, t.result_from_mcp).collect()) # 预期输出将显示服务器上 pixelmultiple 工具的计算结果: # 对于 (10, 5) -> (10 + 22) * 5 = 160 # 对于 (20, 3) -> (20 + 22) * 3 = 126
信息
分类
AI与计算