使用说明
项目简介
Treelang 是一个利用抽象语法树(AST)进行高级功能调用的框架,尤其适用于与大型语言模型(LLM)配合使用。它不仅是一个 MCP 客户端,也包含 MCP 服务器的实现。Treelang 的核心优势在于能够处理复杂的工作流和嵌套函数调用,通过单次 LLM 调用生成完整解决方案的 AST,从而节省成本并提高安全性。此外,Treelang 将解决方案封装为 AST,便于重用、共享和缓存。
主要功能点
- MCP 服务器功能: 基于 'fastmcp.FastMCP' 提供了可运行的 MCP 服务器端实现,能够注册和管理工具,并通过 JSON-RPC 协议与 MCP 客户端通信。
- 抽象语法树 (AST) 表示: 使用 AST 来表示程序和功能调用,支持复杂的逻辑和工作流。
- LLM 集成: 可以与 LLM (如 OpenAI 模型) 集成,利用 LLM 生成 AST 程序。
- 动态工具选择: 支持动态选择系统中可用的工具(函数)。
- 异步执行: 采用完全异步的设计,实现高效的计算。
- AST 到工具的转换: 可以将 Treelang AST 转换为可以动态添加到 MCP 服务器的工具。
- 多种传输协议支持: 虽然示例中主要使用了 SSE,但 MCP 框架本身支持 Stdio, SSE, WebSocket 等多种传输协议。
安装步骤
- 确保你的 Python 环境已安装,推荐使用 Python 3.8 或更高版本。
- 使用 pip 安装 treelang 库:
pip install treelang
服务器配置
Treelang MCP 服务器可以通过多种方式启动,以下分别介绍基于 'evaluation/eval.py', 'cookbook/calculator.py' 和 'cookbook/gamestats.py' 启动服务器的 MCP 客户端配置信息。
1. 基于 evaluation/eval.py 启动 (SSE 传输)
-
项目简介: 'evaluation/eval.py' 主要用于评估 Treelang 的功能,它在代码中实例化并启动了一个 'FastMCP' 服务器,并使用了 SSE (Server-Sent Events) 传输协议。
-
启动命令: 由于 'evaluation/eval.py' 脚本本身会启动服务器,因此 MCP 客户端的启动命令可以直接指向 Python 解释器,并执行该脚本。
-
MCP 客户端配置 (JSON):
{ "server_name": "evaluator", "command": "python", "args": ["evaluation/eval.py"], "transport": "sse", "port": 8080, "sse_path": "/sse" }参数注释:
- 'server_name': MCP 服务器的名称,这里设置为 "evaluator",与 'evaluation/eval.py' 中 'FastMCP("evaluator", ...)' 的名称一致。
- 'command': 启动服务器的命令,这里使用 'python' 解释器。
- 'args': 传递给 'python' 命令的参数,即执行 'evaluation/eval.py' 脚本。
- 'transport': 使用的传输协议,这里为 SSE ('sse')。
- 'port': SSE 服务器监听的端口,默认为 '8080',与 'FastMCP' 默认配置一致。
- 'sse_path': SSE 路径,默认为 '/sse',与 'FastMCP' 默认配置一致。
2. 基于 cookbook/calculator.py 或 cookbook/gamestats.py 启动 (Stdio 传输)
-
项目简介: 'cookbook/calculator.py' 和 'cookbook/gamestats.py' 提供了简单的计算器和游戏数据统计 MCP 服务器示例,它们使用 Stdio (标准输入输出) 作为传输协议。
-
启动命令: MCP 客户端的启动命令可以直接指向 Python 解释器,并执行相应的 cookbook 脚本。
-
MCP 客户端配置 (JSON - 以 calculator.py 为例):
{ "server_name": "calculator", "command": "python", "args": ["cookbook/calculator.py"], "transport": "stdio" }参数注释:
- 'server_name': MCP 服务器的名称,这里设置为 "calculator",与 'cookbook/calculator.py' 中 'FastMCP("calculator", ...)' 的名称一致。
- 'command': 启动服务器的命令,这里使用 'python' 解释器。
- 'args': 传递给 'python' 命令的参数,即执行 'cookbook/calculator.py' 脚本。
- 'transport': 使用的传输协议,这里为 Stdio ('stdio')。
注意: 对于 'cookbook/gamestats.py',只需将 'server_name' 修改为 "gamestats",并将 'args' 修改为 '["cookbook/gamestats.py"]' 即可。
基本使用方法
-
启动 MCP 服务器: 根据你选择的示例 (如 'evaluation/eval.py', 'cookbook/calculator.py' 或 'cookbook/gamestats.py'),配置并启动 MCP 服务器。对于 'evaluation/eval.py',运行脚本即可;对于 'cookbook' 示例,也需要运行相应的 Python 脚本。
-
配置 MCP 客户端: 在你的 MCP 客户端应用中,根据上述 服务器配置 部分提供的 JSON 配置信息,配置连接到 Treelang MCP 服务器。确保客户端的传输协议、端口、路径等配置与服务器端一致。
-
使用 MCP 客户端与服务器交互: 客户端连接成功后,即可向 Treelang MCP 服务器发送 MCP 请求,例如:
- 列出可用工具: 客户端可以发送 'ListToolsRequest' 请求,查询服务器注册的工具 (如 'add', 'subtract', 'get_players', 'get_game_stats' 等)。
- 调用工具: 客户端可以使用 'CallToolRequest' 请求调用服务器上的工具,并传递相应的参数。例如,调用 'calculator' 服务器的 'add' 工具,可以发送请求 '{"tool_name": "add", "arguments": {"a": 5, "b": 3}}'。
- 会话管理: MCP 客户端可以管理与服务器的会话,进行初始化、保持连接和关闭会话等操作。
-
利用 AST 进行复杂功能调用: Treelang 的强大之处在于可以使用 AST 描述复杂的功能调用流程。客户端可以利用 LLM (如 'treelang.ai.arborist.OpenAIArborist') 生成 AST,然后通过 MCP 协议发送给 Treelang MCP 服务器执行。服务器会解析 AST 并按需调用注册的工具,最终返回结果。
示例: 使用 'evaluation/eval.py' 中的 'Evaluator' 类,可以发送问题给 LLM,让 LLM 生成 AST,然后 'Evaluator' 会执行这个 AST,通过 MCP 客户端与 'FastMCP' 服务器交互,调用工具并返回最终答案。
总结
Treelang 提供了一个基于 AST 的强大功能调用框架,其 MCP 服务器实现能够与 MCP 客户端协同工作,支持复杂的工作流和 LLM 集成。通过简单的安装和配置,你可以利用 Treelang MCP 服务器提供的工具,构建更智能的应用。
信息
分类
AI与计算