项目简介 LettaPlus MCP工作流服务旨在为LLM(大型语言模型)应用提供强大的后端支持,以实现复杂的多步骤任务。它允许用户定义基于AWS Step Functions样式(ASL)的状态机来编排任务,并利用配备可动态加载技能的Letta智能体作为执行单元。核心理念是“编排优先”,工作者智能体通过一个RedisJSON控制平面进行自我协调,无需中心化编排器循环。这个服务通过标准MCP协议向LLM客户端暴露一系列功能强大的工具,包括工作流管理、状态控制、技能加载卸载以及数据交互。
主要功能点
- 工作流定义与验证: 支持使用ASL(AWS Step Functions Language)定义复杂的工作流状态机,并提供验证工具确保工作流定义的正确性。
- 动态技能管理: 允许智能体动态加载和卸载“技能”(即封装的能力),每个技能都定义了其所需的工具、数据源和权限。
- 分布式工作流执行: 通过RedisJSON实现分布式控制平面,工作者智能体能够自主协调,检查任务就绪性、获取租约、执行任务、写入结果并通知下游智能体。
- 上下文数据管理: 提供一系列RedisJSON操作工具,方便智能体存取、修改和管理工作流的元数据、状态数据和任务输出数据。
- 智能体生命周期管理: 能够创建和删除用于执行工作流任务的瞬时Letta智能体。
- 可插拔工具: 通过MCP协议暴露大量原子工具,这些工具覆盖了工作流的规划、执行、状态更新、通知、技能管理等各个方面,方便LLM进行调用。
安装步骤
- 准备环境: 确保您的系统已安装Python 3.8+,并可访问Redis服务器(需启用RedisJSON模块)。
- 克隆仓库:
git clone https://github.com/lujunbofan2019/LettaPlus.git cd LettaPlus - 安装依赖:
(假设'requirements.txt'文件存在且包含所有必需的Python包,例如'redis', 'letta_client', 'mcp', 'jsonschema', 'uvicorn', 'starlette'等。)pip install -r requirements.txt - 配置环境变量:
- 'REDIS_URL': Redis服务器的连接URL,例如 'redis://localhost:6379/0'
- 'LETTA_BASE_URL': Letta智能体平台的API基础URL,例如 'http://localhost:8283'
- 'SKILL_REGISTRY_PATH': 技能注册表的路径,例如 'skills_src/registry.json'(如果使用CSV-first原型工具生成技能)
- 运行MCP服务器:
这将启动LettaPlus MCP工作流服务,监听在'0.0.0.0'地址的'8000'端口。uvicorn dcf_mcp.server:app --host 0.0.0.0 --port 8000
服务器配置 (供MCP客户端连接) MCP客户端需要知道如何连接到此MCP服务器并发现其功能。以下是连接MCP服务器的配置示例(假设服务器运行在'localhost:8000'):
{ "server_name": "LettaPlus_Workflow_Server", "command": ["python", "-m", "uvicorn", "dcf_mcp.server:app", "--host", "0.0.0.0", "--port", "8000"], "args": [], "env": { "REDIS_URL": "redis://localhost:6379/0", "LETTA_BASE_URL": "http://localhost:8283", "SKILL_REGISTRY_PATH": "skills_src/registry.json" }, "description": "连接到LettaPlus MCP工作流服务,用于管理和执行基于Letta智能体的复杂任务编排。", "tools_definition": { "type": "mcp_streamable_http", "endpoint": "http://localhost:8000/mcp", "path": "/mcp" } }
- server_name: MCP服务器的唯一标识名称。
- command: 启动MCP服务器进程的命令及参数列表。请确保此命令能在客户端运行环境中正确执行。
- args: 额外的命令行参数(如果需要)。
- env: 启动服务器时需要设置的环境变量,例如Redis和Letta平台的连接信息。
- description: 对此MCP服务器功能的简要描述。
- tools_definition: 客户端用于发现和调用此MCP服务器上注册的工具的配置。'type'为'mcp_streamable_http'表示通过Streamable HTTP协议通信,'endpoint'为服务器的HTTP地址,'path'为MCP协议的具体端点路径。
基本使用方法 MCP客户端(例如一个LLM智能体)可以通过JSON-RPC调用此服务器上暴露的工具来执行任务。
例如,LLM客户端可以调用以下工具来创建、管理和执行一个工作流:
- 验证工作流定义: 调用'validate_workflow'工具,传入工作流的JSON定义,以检查其合法性。
- 创建控制平面: 调用'create_workflow_control_plane'工具,基于工作流定义在Redis中初始化工作流的元数据和所有状态的初始信息。
- 创建工作者智能体: 调用'create_worker_agents'工具,根据工作流中的任务状态和智能体模板,在Letta平台创建对应的智能体。
- 启动工作流: 调用'notify_next_worker_agent'工具,通知起始状态的智能体开始执行任务。
- 智能体任务循环: 工作者智能体接收到通知后,会调用此MCP服务器上的'acquire_state_lease'获取任务租约,'load_skill'加载所需技能,执行实际任务,然后调用'update_workflow_control_plane'更新任务状态和输出,最后调用'release_state_lease'释放租约,并可能通过'notify_next_worker_agent'通知下一个智能体。
- 读取工作流状态: 随时可以通过'read_workflow_control_plane'工具查看工作流的当前状态、各任务的进度和输出。
- 完成工作流: 当所有任务完成后,调用'finalize_workflow'工具来清理资源(如删除工作者智能体)并记录工作流的最终状态。
信息
分类
开发者工具