Hugging Face BlogAI Agent

為 Reachy Mini 新增 MCP 工具

2026年6月3日 00:00

重點摘要

Reachy Mini 對話應用現在可透過 MCP 協定,調用託管在 Hugging Face Spaces 上的工具。無需修改應用程式代碼,只需從 Hub 新增一個 Space,就能賦予機器人新能力,例如查詢天氣或搜尋網路。工具會在 Space 中持續運行,不會下載任何程式到本機。你也可以發布自己的工具供他人使用。新增工具只需一行指令:`reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool`,然後照常啟動應用程式即可。

站內 AI 整理稿

Back to Articles Adding MCP Tools to Reachy Mini Published June 3, 2026 Update on GitHub Upvote - Alina Lozovskaya alozowski Follow Reachy Mini no longer has to look out the window to tell you the weather The Reachy Mini conversation app can now use tools hosted in public Hugging Face Spaces, called over MCP. You can give your robot a new ability, like checking the weather or searching the web, by adding a Space from the Hub instead of editing the app. The tool keeps running in the Space itself, so no code is downloaded onto your machine. And you can publish your own tools for other people to use. Adding a tool takes one command: reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool Then start the app as usual: reachy-mini-conversation-app Now you can just ask: What's the weather in Paris today? Below, we look at what a tool is, how profiles control what the robot can use, and the current limits of the remote path. Built-in tools When you talk to the robot, what you get back isn't only a voice, it's a system that reacts to the conversation: the robot can move and respond non-verbally, when it's applicable. The part we want to focus on here is the tools that make that possible. A tool is something the model can do during a conversation: play an emotion, move the head, look through the camera. Each tool has a name and a short description. The model reads those, decides when one is useful, calls it, and uses what comes back. Today every tool is local and ships inside the app, and most of them are about the robot's body: Tool What it does move_head Queue a head pose change dance / stop_dance Play or clear a dance from the dances library play_emotion / stop_emotion Play or clear a recorded emotion clip head_tracking Toggle head-tracking offsets camera Capture a frame and analyze it idle_do_nothing Explicitly stay idle on an idle turn How profiles control tools A tool in the code isn't usable until it's enabled in a profile, a folder with two files that matter here: instructions.txt (the prompt) and tools.txt (the tools that are turned on). The default profile enables the full set: # profiles/default/tools.txt dance stop_dance play_emotion stop_emotion camera idle_do_nothing head_tracking move_head If a name isn't in tools.txt, the model can't call it. You can also write your own tool: add a Python file to the profile (or external_tools/), give it a name and description, and list that name in tools.txt. Today there are built-in tools and custom local tools, and tools.txt decides which are active. This works well for the robot's body and keeps the trusted core small. The limits of local tools The constraint here is that every tool has to be local Python. For move_head or play_emotion that's right: they talk to the hardware and belong in the app but a lot of useful things have nothing to do with the body, like web search, weather, or lookups. For those, keeping everything local is mostly friction: sharing a tool means handing someone your Python files updating it means sending those files again changing it means editing the app, even though the capability is really separate from it Calling tools from Spaces Remote tools add a third kind, alongside the built-in and custom local tools you already have, for capabilities that are easier to publish, share, and update on their own: built-in robot tools stay local and trusted shareable remote tools can live in public Hugging Face Spaces you can still use custom one-off tools from external_tools/ It's a good fit for stateless capabilities like search, weather, and lookups: anything you want to iterate on without touching the app itself. And because anyone can publish a compatible Space, it's easy to share tools and build on each other's work. We started with two canary tools, small test tools to exercise the new flow: pollen-robotics/reachy-mini-search-tool pollen-robotics/reachy-mini-weather-tool They're enough to exercise the whole feature: install from the Hub, discover the remote tools, enable them per profile, and let the realtime backend call them exactly like built-in tools. To use both at once, add each Space and their tools stack in the same profile: reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-search-tool reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool Now the robot can search the web and check the weather in the same conversation, which is exactly what the canary_web_search_weather profile below does. Install, list, remove # install + enable in active profile reachy-mini-conversation-app tool-spaces add <owner/space-name> # enable in a specific profile reachy-mini-conversation-app tool-spaces add <owner/space-name> --profile <NAME> # install without enabling reachy-mini-conversation-app tool-spaces add <owner/space-name> --install-only # list installed spaces reachy-mini-conversation-app tool-spaces list # remove an installed space reachy-mini-conversation-app tool-spaces remove <owner/space-name> add validates the Space on the Hub, probes the MCP endpoint, discovers its tools, and by default appends the tool IDs to the active profile's tools.txt. The active profile is default unless you've set REACHY_MINI_CUSTOM_PROFILE. Use --install-only to skip that step. tools.txt is the gatekeeper: a remote tool is only active if its ID appears in the profile's tools.txt, alongside whatever built-in tools you want. Where the manifest lives Installed sources are persisted in: installed_tool_spaces.json in managed app mode external_content/installed_tool_spaces.json in terminal mode Tool naming Each installed Space gets a local alias derived from its slug, with hyphens, dots, and slashes collapsing to underscores: pollen-robotics/reachy-mini-search-tool → pollen_robotics_reachy_mini_search_tool Remote tools are then namespaced with a double underscore: pollen_robotics_reachy_mini_search_tool__search_web pollen_robotics_reachy_mini_weather_tool__get_day_brief This keeps remote tool names from colliding with built-in ones and lets multiple Spaces coexist in the same profile. The implementation also strips redundant Space-name prefixes when possible, so a verbose remote tool name becomes a cleaner local ID. If stripping would cause a collision between two tools from the same Space, the code falls back to the fully namespaced name. There is also a duplicate safety check at registry level: Tool.name values must be unique across the entire merged tool set. The app fails fast if two sources claim the same name. Example profiles For this work we created two focused canary profiles to isolate the MCP experiment from the full embodied tool set. The first keeps a few expressive tools (emotions, head movement) and adds web search on top: # profiles/canary_web_search/tools.txt play_emotion stop_emotion idle_do_nothing move_head pollen_robotics_reachy_mini_search_tool__search_web The second is the same, plus the weather tool alongside search: # profiles/canary_web_search_weather/tools.txt play_emotion stop_emotion idle_do_nothing move_head pollen_robotics_reachy_mini_search_tool__search_web pollen_robotics_reachy_mini_weather_tool__get_day_brief The small physical tool set means Reachy Mini can still react expressively while answering current questions from the web. Why the prompts matter The remote-tool plumbing gets the tools into the model. The prompts decide how the model uses them. That was especially visible in the search-plus-weather canary. A combined question like: Should I bring a jacket in Bordeaux today, and is there anything major happening downtown tonight? can be handled in at least three ways: weather first then search, search first then weather, or both in the same turn. If the prompt is vague, the model serialises the calls and creates unnecessary latency. So the canary prompts became part of the feature, not just incidental configuration. canary_web_search/instructions.txt [default_prompt] ## CANARY WEB SEARCH RULE

Related

相關文章

Hugging Face BlogAI Agent

MosaicLeaks: Can your research agent keep a secret?

Back to Articles MosaicLeaks: Can your research agent keep a secret? Enterprise Article Published June 18, 2026 Upvote - Alexander Gurung agurung Follow ServiceNow Rafael Pardinas rafapi-snow Follow ServiceNow TL;DR Deep research agents increasingly combine private local documents with external tools like web retrieval, creating a privacy risk: an agent's external queries may leak sensitive information. MosaicLeaks proposes a new deep-research task with multi-hop questions that interleave public and private information. Across the models we tested, agents frequently leaked private information, and training only for task performance made it worse. We propose a mosaic-leakage-aware RL training method, Privacy-Aware Deep Research (PA-DR), which raises strict chain success (the share of chains

16 小時前
量子位AI Agent

騰訊老兵+大廠00後新銳,碼上飛想做的不只是AI Coding

這篇消息聚焦「騰訊老兵+大廠00後新銳,碼上飛想做的不只是AI Coding」。原始導語提到:已接入華為鴻蒙生態 從 AI 情報角度來看,這類內容值得關注其背後的技術進展、產品落地、產業競爭與後續市場影響。

16 小時前

21年老牌企服公司的AI實驗:讓Agent跑一遍流程

這篇消息聚焦「21年老牌企服公司的AI實驗:讓Agent跑一遍流程」。原始導語提到:司盟企服接入騰訊雲WorkBuddy後,將海外郵件管理、審計理賬、訂單審核等高頻交付流程交給Agent先跑一遍 從 AI 情報角度來看,這類內容值得關注其背後的技術進展、產品落地、產業競爭與後續市場影響。

18 小時前
TechWebAI Agent

曹操出行宣佈啟動全面AI轉型,組織升級向AI原生公司邁進

曹操出行在2026國際汽車及供應鏈博覽會 上宣佈啟動全面AI轉型,併發布RoboX戰略,打造全球領先的物理AI移動科技平臺。與此同時,公司正式啟動組織升級,加快向AI原生公司邁進。為推動全面AI轉型,今年上半年,公司推進戰略聚焦,持續優化業務結構,主動收縮非核心業務,加快向AI原生公司轉型。

20 小時前