The MCP server is now a ROS node and the only way in or out, per the owner's decision that ROS never leaves the robot. It serves MCP on the USB address only with a bearer token, keeps the stable tool name look() (which waits for the next camera frame, so it is never stale, and passes the camera's JPEG through), and registers turn_head/head_position only when a head is fitted, which today it is not. While an authenticated client is connected it republishes the agent heartbeat on /hermes/state, so the face wakes on connect and sleeps about 40 s after the client leaves; look() also makes the face squint. The token is generated on the Pi into /etc/robot-mcp.env (root:hermes, 640) and never printed. Verified end to end from talos with a real MCP client over the USB link: tools listed, a 157 KB JPEG back in 0.08 s, a wrong token refused, the Wi-Fi path dropped by the firewall. Host config snippets now point at 10.55.0.2. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFN8nRRCiDiMN7ChBpHJhs
25 lines
657 B
Python
25 lines
657 B
Python
from setuptools import find_packages, setup
|
|
|
|
package_name = 'hermes_mcp'
|
|
|
|
setup(
|
|
name=package_name,
|
|
version='0.1.0',
|
|
packages=find_packages(exclude=['test']),
|
|
data_files=[
|
|
('share/ament_index/resource_index/packages', ['resource/' + package_name]),
|
|
('share/' + package_name, ['package.xml']),
|
|
],
|
|
install_requires=['setuptools'],
|
|
zip_safe=True,
|
|
maintainer='K. Isom',
|
|
maintainer_email='noreply@example.com',
|
|
description='MCP bridge for the Hermes robot.',
|
|
license='UNLICENSED',
|
|
entry_points={
|
|
'console_scripts': [
|
|
'mcp_server = hermes_mcp.mcp_node:main',
|
|
],
|
|
},
|
|
)
|