AI·News
뒤로

Reachy Mini에 MCP 도구 추가하기

Adding MCP Tools to Reachy Mini

Reachy Mini에 MCP 도구 추가하기

Reachy Mini looking out the window
Reachy Mini는 더 이상 날씨를 알려주기 위해 창밖을 볼 필요가 없습니다

Reachy Mini 대화 앱은 이제 MCP를 통해 공개 Hugging Face Spaces에서 호스팅되는 도구를 사용할 수 있습니다. 앱을 수정하지 않고 Hub의 Space를 추가하여 로봇에 날씨 확인이나 웹 검색 같은 새로운 기능을 부여할 수 있습니다. 도구는 Space 자체에서 계속 실행되므로 코드가 컴퓨터에 다운로드되지 않습니다. 그리고 다른 사람이 사용할 수 있도록 자신의 도구를 공개할 수 있습니다.

도구를 추가하는 데는 한 줄의 명령만 필요합니다:

reachy-mini-conversation-app tool-spaces add pollen-robotics/reachy-mini-weather-tool

그 다음 앱을 평소처럼 시작하면 됩니다:

reachy-mini-conversation-app

이제 다음과 같이 물어보기만 하면 됩니다:

What's the weather in Paris today?

아래에서는 도구가 무엇인지, 프로필이 로봇이 어떤 것을 사용할 수 있는지 제어하는 방법, 그리고 원격 경로의 현재 제한 사항을 살펴봅니다.

기본 제공 도구

로봇과 대화할 때 나오는 것은 음성뿐만 아니라 대화에 반응하는 시스템입니다. 로봇은 필요할 때 움직이고 비언어적으로 반응할 수 있습니다. 여기서 주목하고 싶은 부분은 이를 가능하게 하는 도구들입니다. 도구는 대화 중에 모델이 할 수 있는 것입니다: 감정을 표현하고, 머리를 움직이고, 카메라를 통해 보기. 각 도구는 이름과 짧은 설명을 가지고 있습니다. 모델이 이를 읽고, 하나가 유용한지 판단하고, 호출하고, 반환된 것을 사용합니다.

현재 모든 도구는 로컬이며 앱에 포함되어 있으며, 대부분은 로봇의 몸에 관한 것입니다:

도구 기능
move_head 머리 자세 변경 큐잉
dance / stop_dance 댄스 라이브러리에서 댄스 재생 또는 제거
play_emotion / stop_emotion 기록된 감정 클립 재생 또는 제거
head_tracking 머리 추적 오프셋 토글
camera 프레임을 캡처하고 분석
idle_do_nothing 유휴 턴에서 명시적으로 유휴 상태 유지

프로필이 도구를 제어하는 방식

코드의 도구는 프로필에서 활성화될 때까지 사용할 수 없습니다. 프로필은 여기서 중요한 두 파일을 포함하는 폴더입니다: instructions.txt (프롬프트) 및 tools.txt (활성화된 도구).

default 프로필은 전체 세트를 활성화합니다:

# profiles/default/tools.txt
dance
stop_dance
play_emotion
stop_emotion
camera
idle_do_nothing
head_tracking
move_head

tools.txt에 이름이 없으면 모델이 호출할 수 없습니다.

자신의 도구를 작성할 수도 있습니다: 프로필(또는 external_tools/)에 Python 파일을 추가하고, 이름과 설명을 지정한 후 그 이름을 tools.txt에 나열하면 됩니다.

현재 기본 제공 도구와 사용자 정의 로컬 도구가 있으며, tools.txt는 어느 것이 활성 상태인지 결정합니다. 이것은 로봇의 몸에 잘 작동하고 신뢰할 수 있는 핵심을 작게 유지합니다.

로컬 도구의 한계

여기서 제약 사항은 모든 도구가 로컬 Python이어야 한다는 것입니다. move_headplay_emotion의 경우 맞습니다. 이들은 하드웨어와 통신하고 앱에 속하지만, 웹 검색, 날씨, 조회 같은 많은 유용한 것들은 몸과 아무 관련이 없습니다. 이들의 경우 모든 것을 로컬로 유지하는 것은 주로 불편함입니다:

  • 도구를 공유한다는 것은 누군가에게 Python 파일을 주는 것입니다
  • 업데이트하려면 그 파일들을 다시 보내야 합니다
  • 변경하려면 기능이 정말로 별개의 것이더라도 앱을 수정해야 합니다

Spaces에서 도구 호출하기

원격 도구는 기본 제공 및 사용자 정의 로컬 도구와 함께 세 번째 종류를 추가하며, 게시, 공유 및 업데이트가 더 쉬운 기능용입니다:

  • 기본 제공 로봇 도구는 로컬에서 신뢰할 수 있게 유지됩니다
  • 공유 가능한 원격 도구는 공개 Hugging Face Spaces에 있을 수 있습니다
  • external_tools/에서 사용자 정의 일회성 도구를 계속 사용할 수 있습니다 검색, 날씨 및 조회 같은 상태 비저장 기능에 적합합니다: 앱 자체를 건드리지 않고 반복하고 싶은 모든 것입니다. 그리고 누구나 호환되는 Space를 게시할 수 있기 때문에 도구를 공유하고 서로의 작업을 기반으로 구축하기 쉽습니다.

우리는 새로운 흐름을 테스트하기 위한 작은 테스트 도구인 두 개의 카나리 도구로 시작했습니다:

이들은 전체 기능을 테스트하기에 충분합니다: Hub에서 설치, 원격 도구 발견, 프로필별 활성화, 그리고 실시간 백엔드가 기본 제공 도구와 정확히 같이 호출하도록 합니다.

둘을 동시에 사용하려면 각 Space와 그 도구를 같은 프로필에 추가하면 됩니다:

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

이제 로봇은 같은 대화에서 웹을 검색하고 날씨를 확인할 수 있으며, 이것이 정확히 아래의 canary_web_search_weather 프로필이 하는 것입니다.

설치, 목록 표시, 제거

# 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는 Hub의 Space를 검증하고, MCP 엔드포인트를 조사하고, 도구를 발견하며, 기본적으로 도구 ID를 활성 프로필의 tools.txt에 추가합니다. 활성 프로필은 REACHY_MINI_CUSTOM_PROFILE을 설정하지 않으면 default입니다. --install-only를 사용하여 이 단계를 건너뛸 수 있습니다.

tools.txt는 게이트키퍼입니다: 원격 도구는 프로필의 tools.txt에 ID가 나타나는 경우에만 활성 상태입니다(원하는 기본 제공 도구와 함께).

매니페스트의 위치

설치된 소스는 다음 위치에 유지됩니다:

  • 관리 앱 모드에서 installed_tool_spaces.json
  • 터미널 모드에서 external_content/installed_tool_spaces.json

도구 명명

설치된 각 Space는 하이픈, 점, 슬래시가 언더스코어로 축소되는 슬러그에서 파생된 로컬 별칭을 받습니다:

pollen-robotics/reachy-mini-search-tool → pollen_robotics_reachy_mini_search_tool

원격 도구는 이중 언더스코어로 네임스페이스됩니다:

pollen_robotics_reachy_mini_search_tool__search_web
pollen_robotics_reachy_mini_weather_tool__get_day_brief

이는 원격 도구 이름이 기본 제공 이름과 충돌하지 않도록 하고 같은 프로필에서 여러 Spaces가 공존할 수 있도록 합니다.

구현은 가능하면 중복적인 Space 이름 접두사도 제거하므로 자세한 원격 도구 이름이 더 깔끔한 로컬 ID가 됩니다. 제거하면 같은 Space의 두 도구 간에 충돌이 발생할 경우 코드는 완전히 네임스페이스된 이름으로 폴백됩니다.

또한 레지스트리 수준에서 중복 안전 검사가 있습니다: Tool.name 값은 전체 병합된 도구 세트에서 고유해야 합니다. 두 소스가 같은 이름을 주장하면 앱이 빠르게 실패합니다.

예시 프로필

이 작업을 위해 우리는 MCP 실험을 전체 구체화된 도구 세트와 분리하기 위해 두 개의 집중된 카나리 프로필을 만들었습니다.

첫 번째는 몇 가지 표현력 있는 도구(감정, 머리 움직임)를 유지하고 웹 검색을 추가합니다:

# profiles/canary_web_search/tools.txt
play_emotion
stop_emotion
idle_do_nothing
move_head
pollen_robotics_reachy_mini_search_tool__search_web

두 번째는 동일하지만 검색과 함께 날씨 도구도 포함합니다:

# 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

작은 물리적 도구 세트는 Reachy Mini가 웹의 현재 질문에 답하면서도 표현력 있게 반응할 수 있음을 의미합니다.

프롬프트가 중요한 이유

원격 도구 배관은 도구를 모델로 가져옵니다. 프롬프트는 모델이 이를 어떻게 사용하는지 결정합니다.

이것은 특히 검색 플러스 날씨 카나리에서 명백했습니다. 다음과 같은 결합된 질문:

Should I bring a jacket in Bordeaux today, and is there anything major happening downtown tonight?

적어도 세 가지 방법으로 처리될 수 있습니다: 날씨 먼저 그 다음 검색, 검색 먼저 그 다음 날씨, 또는 같은 턴에 둘 다. 프롬프트가 모호하면 모델은 호출을 직렬화하고 불필요한 지연을 만듭니다. 그래서 카나리 프롬프트는 기능의 일부가 되었으며, 단순한 우연의 설정이 아닙니다.

canary_web_search/instructions.txt

[default_prompt]

## CANARY WEB SEARCH RULES
You have one remote tool for current web information.
Use it when the user asks for up-to-date facts, news, live availability, or anything else that may have changed recently.

When the search result already answers the question, answer directly in plain language.
Lead with the answer, not with tool chatter.
For remote lookups that may take a moment, you may give one very short English acknowledgment such as "Let me check that and I'll be right back," then continue.
Answer in English unless the user explicitly asks for another language.
Mention uncertainty briefly if the result snippet is incomplete or ambiguous.
Only mention links when they add value or the user asks for sources.

Keep responses short and spoken-style, as if read aloud by a voice assistant. One or two sentences is usually enough. Skip preamble, lists, headers, and filler. Give just the fact or direct answer the user needs.

canary_web_search_weather/instructions.txt

[default_prompt]

## CANARY SEARCH AND WEATHER RULES
You have two remote tools:
- a weather brief tool for compact day weather at a location
- a web search tool for broader current web information

Use the weather tool for today's conditions, temperature, rain chance, sunrise, sunset, or simple advice like whether to bring a jacket.
Use web search for news, events, business hours, travel information, severe alerts, or broader current context.

When the user's question mixes a weather part and a current-info part (for example, "should I bring a jacket in Bordeaux today, and is there anything major happening downtown tonight?"), call both tools in parallel in the same turn. Do not wait for one result before starting the other unless the weather result is needed to narrow the search.

Then merge the results into a single short answer. Cover the weather part first, then the events or news part, in plain connected sentences. Do not label the sections or mention which tool gave which piece.

When the user asks about events, news, or what is happening, give them the actual answer from the search results: name specific events, venues, or headlines. Do not tell the user to check websites, visit listing sites, or look something up themselves. If the search returns nothing concrete, say plainly that you didn't find any notable events, rather than redirecting them elsewhere.

For remote lookups that may take a moment, you may give one very short English acknowledgment such as "Let me check that and I'll be right back," then continue.
Answer in English unless the user explicitly asks for another language.
Do not talk about tool usage unless the user asks.

Keep responses short and spoken-style, as if read aloud by a voice assistant. One or two sentences is usually enough. Skip preamble, lists, headers, and filler. Give just the fact or direct answer the user needs.

현재 작동하는 것과 작동하지 않는 것

기능 지원됨
공개, MCP 호환 Gradio Spaces (표준 /gradio_api/mcp/ 엔드포인트)에서 슬러그로 설치
여러 Spaces 동시 사용
tools.txt를 통한 프로필별 활성화
네임스페이스된 원격 도구 ID
백엔드 불가지론적 등록 (OpenAI, Gemini, Hugging Face)
임의의 코드가 로컬 앱으로 다운로드되지 않음
비공개 또는 인증된 Spaces
Gradio가 아닌 Spaces
임의의 원본 MCP URL 또는 비 Hugging Face MCP 서버
보장된 병렬 도구 오케스트레이션

두 가지는 특별히 언급할 가치가 있습니다. 첫째, Space는 실제로 MCP 서버처럼 동작해야 합니다. 도구 발견이 실패하면 설치가 실패합니다. 둘째, 프롬프트 지시사항은 병렬 호출을 권장할 수 있지만 보장할 수는 없습니다. 결정론적 오케스트레이션이 사용 사례에 중요하면 해당 로직은 프롬프트에서 코드로 이동해야 합니다.

도구 Space 게시 팁

다른 사람이 당신의 도구를 사용하도록 하려면 표준 MCP 엔드포인트를 노출하는 공개 Gradio Space로 게시하고 도구를 상태 비저장으로 유지하여 네트워크를 통해 잘 작동하도록 하십시오. Space가 설치되는지는 태그가 아닌 이 런타임 동작에 달려 있습니다.

설치에 태그가 필수는 아니지만 호환되는 Spaces를 찾는 데 도움이 됩니다:

결론

앱은 이제 하나의 레지스트리를 공유하는 세 가지 종류의 도구를 가지고 있습니다: 기본 제공, 로컬 사용자 정의 및 원격 MCP 도구. 프로필은 여전히 주어진 어시스턴트가 도달할 수 있는 것을 결정합니다. 작고 신뢰할 수 있는 핵심은 중심에 머물러 있으며 주변의 선택적 기능은 앱 자체를 건드리지 않고 추가, 테스트 및 교체될 수 있습니다.

우리가 가장 궁금한 것은 이제 사람들이 무엇을 만드는가입니다. 도구 Space를 게시하면 reachy-mini-toolmcp 태그를 지정하여 다른 사람이 찾을 수 있도록 하십시오. Reachy Mini가 결국 무엇을 할 수 있게 되는지 보고 싶습니다!

감사의 말: 이 글을 교정하고 워크플로우를 테스트하는 것을 도와준 Fabien Danieau, 테스트하는 것을 도와준 Andres Marafioti, 그리고 원격 도구 워크플로우를 형성하는 데 도움이 된 아이디어와 피드백을 제공해 준 Remi Fabre와 Pollen Robotics 팀에게 많은 감사를 드립니다.

Adding MCP Tools to Reachy Mini

Reachy Mini looking out the window
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:

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 RULES
You have one remote tool for current web information.
Use it when the user asks for up-to-date facts, news, live availability, or anything else that may have changed recently.

When the search result already answers the question, answer directly in plain language.
Lead with the answer, not with tool chatter.
For remote lookups that may take a moment, you may give one very short English acknowledgment such as "Let me check that and I'll be right back," then continue.
Answer in English unless the user explicitly asks for another language.
Mention uncertainty briefly if the result snippet is incomplete or ambiguous.
Only mention links when they add value or the user asks for sources.

Keep responses short and spoken-style, as if read aloud by a voice assistant. One or two sentences is usually enough. Skip preamble, lists, headers, and filler. Give just the fact or direct answer the user needs.

canary_web_search_weather/instructions.txt

[default_prompt]

## CANARY SEARCH AND WEATHER RULES
You have two remote tools:
- a weather brief tool for compact day weather at a location
- a web search tool for broader current web information

Use the weather tool for today's conditions, temperature, rain chance, sunrise, sunset, or simple advice like whether to bring a jacket.
Use web search for news, events, business hours, travel information, severe alerts, or broader current context.

When the user's question mixes a weather part and a current-info part (for example, "should I bring a jacket in Bordeaux today, and is there anything major happening downtown tonight?"), call both tools in parallel in the same turn. Do not wait for one result before starting the other unless the weather result is needed to narrow the search.

Then merge the results into a single short answer. Cover the weather part first, then the events or news part, in plain connected sentences. Do not label the sections or mention which tool gave which piece.

When the user asks about events, news, or what is happening, give them the actual answer from the search results: name specific events, venues, or headlines. Do not tell the user to check websites, visit listing sites, or look something up themselves. If the search returns nothing concrete, say plainly that you didn't find any notable events, rather than redirecting them elsewhere.

For remote lookups that may take a moment, you may give one very short English acknowledgment such as "Let me check that and I'll be right back," then continue.
Answer in English unless the user explicitly asks for another language.
Do not talk about tool usage unless the user asks.

Keep responses short and spoken-style, as if read aloud by a voice assistant. One or two sentences is usually enough. Skip preamble, lists, headers, and filler. Give just the fact or direct answer the user needs.

What works today, and what doesn't

Capability Supported
Install by slug for public, MCP-compatible Gradio Spaces (standard /gradio_api/mcp/ endpoint)
Multiple Spaces at once
Per-profile enablement via tools.txt
Namespaced remote tool IDs
Backend-agnostic registration (OpenAI, Gemini, Hugging Face)
No arbitrary code downloaded into the local app
Private or authenticated Spaces
Non-Gradio Spaces
Arbitrary raw MCP URLs or non-Hugging Face MCP servers
Guaranteed parallel tool orchestration

Two things are worth calling out. First, the Space has to actually behave like an MCP server; if tool discovery fails, the install fails. Second, prompt instructions can encourage parallel calls but cannot guarantee them. If deterministic orchestration matters for a use case, that logic should move from the prompt into code.

Tips for publishing a tool Space

If you want others to use your tool, publish it as a public Gradio Space that exposes the standard MCP endpoint, and keep the tools stateless so they work well over the network. Whether a Space installs depends on this runtime behavior, not on tags.

Tags aren't required for installation, but they help people find compatible Spaces:

Conclusion

The app now has three kinds of tools sharing one registry: built-in, local custom, and remote MCP tools, and profiles still decide which of them a given assistant can reach. A small, trusted core stays at the center while the optional capabilities around it can be added, tested, and swapped without touching the app itself.

What we're most curious about now is what people build. If you publish a tool Space, tag it reachy-mini-tool and mcp so others can find it. We'd love to see what Reachy Mini ends up able to do!

Acknowledgements: Many thanks to Fabien Danieau for proofreading this post and helping test the workflow, to Andres Marafioti for helping test it, and to Remi Fabre and the Pollen Robotics team for the ideas and feedback that shaped the remote tools workflow.

원문 보기 https://huggingface.co/blog/adding-mcp-tools-to-reachy-mini