为Reachy Mini添加MCP工具
Reachy Mini现在可以通过MCP协议调用Hugging Face Spaces上的远程工具,如天气查询和网页搜索。用户只需一个命令即可添加工具,无需修改应用代码。本文介绍了内置工具、配置文件控制、远程工具的工作原理、安装命令、命名规范、示例配置文件以及当前限制。
Reachy Mini是一款具有交互能力的机器人,其对话应用现在支持通过MCP(Model Context Protocol)调用托管在Hugging Face Spaces上的远程工具。这意味着机器人可以获得新的能力,例如查询天气或搜索网络,而无需编辑应用程序代码。用户只需在终端中运行一条命令即可添加工具,这些工具在Spaces中持续运行,不会将代码下载到本地机器上。用户还可以发布自己的工具供他人使用。
Reachy Mini原本有一组内置工具,用于控制机器人的身体动作,例如移动头部、播放情感、通过摄像头捕捉画面等。这些工具都是本地的,并且通过配置文件(profiles)中的tools.txt文件来控制哪些工具可用。然而,对于与身体无关的功能,如网络搜索、天气查询等,使用本地工具存在诸多不便:共享工具需要传递Python文件,更新工具需要重新发送文件,修改工具则需要编辑整个应用。
远程工具的增加解决了这些问题。它们作为第三种工具类型存在,与内置的机器人工具和自定义本地工具并列。远程工具非常适合无状态的功能,如搜索、天气查询等,这些功能可以独立于应用进行迭代和发布。任何人都可以发布兼容的Space,从而轻松共享工具并相互协作。
目前,团队发布了两个示范工具:一个搜索工具和一个天气工具。它们足以测试整个流程:从Hub安装、发现远程工具、按配置文件启用,以及让实时后端像调用内置工具一样调用它们。用户可以在同一对话中同时使用搜索和天气功能。
安装远程工具的命令非常简单:reachy-mini-conversation-app tool-spaces add <Space名称>。默认情况下,该命令会将工具ID附加到当前活动配置文件的tools.txt中。用户还可以指定配置文件、仅安装而不启用、列出已安装的Space或删除Space。安装时,系统会验证Space在Hub上的存在、探测MCP端点、发现其工具,并确保工具名称的唯一性。远程工具的名称会加上命名空间前缀,以防止与内置工具冲突。
为了让机器人更好地使用工具,提示词(prompts)的设计至关重要。示范配置文件中包含了详细的指令,指导模型如何并行调用工具、如何合并结果并给出简洁的回答。例如,在搜索加天气的配置中,模型被要求同时调用两个工具,然后将天气信息和事件信息合并成一句话回答。目前,平行调用只能通过提示词鼓励,但不能保证确定性。如果必须保证平行调用,应该将逻辑转移到代码中。
当前支持的功能包括:通过slug安装公开的、兼容MCP的Gradio Spaces(标准/gradio_api/mcp/端点)、同时使用多个Spaces、按配置文件启用、命名空间远程工具ID、后端无关的注册(支持OpenAI、Gemini、Hugging Face)、不下载任意代码到本地。不支持的功能包括:私有或经过身份验证的Spaces、非Gradio Spaces、任意原始MCP URL或非Hugging Face的MCP服务器、以及保证平行工具编排。
对于希望发布工具的用户,建议将工具发布为公开的Gradio Space,暴露标准MCP端点,并保持工具无状态以良好运行于网络环境。一个Space是否可安装取决于其运行时行为,而非标签。