使用说明

项目简介

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 等多种传输协议。

安装步骤

  1. 确保你的 Python 环境已安装,推荐使用 Python 3.8 或更高版本。
  2. 使用 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"]' 即可。

基本使用方法

  1. 启动 MCP 服务器: 根据你选择的示例 (如 'evaluation/eval.py', 'cookbook/calculator.py' 或 'cookbook/gamestats.py'),配置并启动 MCP 服务器。对于 'evaluation/eval.py',运行脚本即可;对于 'cookbook' 示例,也需要运行相应的 Python 脚本。

  2. 配置 MCP 客户端: 在你的 MCP 客户端应用中,根据上述 服务器配置 部分提供的 JSON 配置信息,配置连接到 Treelang MCP 服务器。确保客户端的传输协议、端口、路径等配置与服务器端一致。

  3. 使用 MCP 客户端与服务器交互: 客户端连接成功后,即可向 Treelang MCP 服务器发送 MCP 请求,例如:

    • 列出可用工具: 客户端可以发送 'ListToolsRequest' 请求,查询服务器注册的工具 (如 'add', 'subtract', 'get_players', 'get_game_stats' 等)。
    • 调用工具: 客户端可以使用 'CallToolRequest' 请求调用服务器上的工具,并传递相应的参数。例如,调用 'calculator' 服务器的 'add' 工具,可以发送请求 '{"tool_name": "add", "arguments": {"a": 5, "b": 3}}'。
    • 会话管理: MCP 客户端可以管理与服务器的会话,进行初始化、保持连接和关闭会话等操作。
  4. 利用 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与计算