跳转到主要内容

什么是 Tools?

Tools 是一些 Python functions,让 AI agents 能够与健康数据交互、执行动作并访问外部服务。Mirobody Health 的 tools 系统让你无需复杂配置就能非常轻松地扩展自定义能力。
Tools 会从项目根目录的 tools/ 自动发现,并通过 MCP protocol 对外暴露。

Tool 架构

易于添加

编写 Python functions——无需 JSON schema

自动发现

自动检测并注册 tools

MCP 原生

通过 Model Context Protocol 立即可用

内置 Tools

Mirobody Health 默认包含两个关键的健康 tools:

1. get_user_health_profile

获取完整的用户健康 profile 信息。
async def get_user_health_profile(user_info: UserInfo) -> Dict:
    """
    Get user health profile including connected devices and summary data
    
    Args:
        user_info: User authentication information (automatically provided)
        
    Returns:
        Dict containing user profile, connected providers, and health summary
    """
    pass
Returns:
  • 用户 profile 信息
  • 已连接的健康设备/providers
  • 健康数据摘要与统计信息

2. get_health_indicator

获取用于分析的指定健康指标数据。
async def get_health_indicator(
    user_info: UserInfo,
    indicator: str,
    start_time: Optional[str] = None,
    end_time: Optional[str] = None
) -> List[Dict]:
    """
    Get health indicator data for a specific metric
    
    Args:
        user_info: User authentication information (automatically provided)
        indicator: Health indicator name (e.g., "HEART_RATE", "STEPS")
        start_time: Optional start time filter (ISO format)
        end_time: Optional end time filter (ISO format)
        
    Returns:
        List of health indicator records
    """
    pass
Use Cases:
  • 查询一段时间内的心率数据
  • 获取睡眠模式
  • 分析活动趋势
  • 对比生物标志物
这些内置 tools 会查询 theta_ai.th_series_data 表,该表包含所有标准化的健康指标。

Tool 分类

需要认证的 私有数据 tools
  • 访问用户健康指标
  • 查询个人 profiles
  • 获取设备数据
  • 分析个人趋势
Requirements:
  • 必须包含 user_info: UserInfo 参数
  • 自动强制 OAuth 认证
  • 数据仅限当前认证用户范围

Tools 如何工作

1

Tool 发现

启动时,Mirobody Health 会扫描 tools/ 目录,查找包含 Service class 的 Python 文件。
# tools/my_tool.py
class MyToolService:
    # All public methods become tools
    pass
2

自动注册

Service class 中的每个 public method 都会被自动注册为一个 tool。
class WeatherService:
    async def get_weather(self, location: str) -> Dict:
        """Get weather for location"""
        # This becomes a tool automatically
        pass
3

通过 MCP 暴露

Tools 会通过 MCP protocol 在 http://localhost:18080/mcp 暴露出来,供 AI agents 发现并调用。
4

Agent 调用

AI agents(Claude、Cursor、ChatGPT)可以通过 MCP 接口发现并调用你的 tools。

Tool 配置

Tools 在 config.yaml 中配置:
config.yaml
# Tool Directories
MCP_TOOL_DIRS:
  - mirobody/pub/tools    # Built-in tools
  - tools                 # Your custom tools

# Tool Access Control
ALLOWED_TOOLS_SYNERGY:
  - get_user_health_profile
  - get_health_indicator
  - your_custom_tool

DISALLOWED_TOOLS_SYNERGY:
  - dangerous_tool
ALLOWED_TOOLS_SYNERGY 留空表示默认允许全部 tools。用 DISALLOWED_TOOLS_SYNERGY 来屏蔽特定 tools。

健康数据的数据库 Schema

Tools 可以从以下表中查询标准化健康数据:

theta_ai.th_series_data

用于时间序列健康指标的主表:
ColumnTypeDescription
idintegerPrimary key
user_idvarchar用户标识
indicatorvarchar指标 code/name
valuetext原始指标值
value_standardizedtext标准化后的指标值
start_timetimestamp指标开始时间
end_timetimestamp指标结束时间
sourcevarchar数据来源(system/device/manual)
source_tablevarchar原始来源表
source_table_idvarchar来源记录 ID
indicator_idtext唯一指标标识
deletedinteger删除标记(0: active, 1: deleted)
create_timetimestamptz创建时间戳
update_timetimestamptz更新时间戳
task_idvarcharTask ID
full_dim_idbigintFull dimension ID
fhir_idbigintFHIR resource ID
fhir_mapping_infojsonbFHIR mapping 信息
is_standardizedboolean标准化标记
commenttext备注

theta_ai.health_user_profile_by_system

用户 profile 存储表:
ColumnTypeDescription
idintegerPrimary key
user_idvarchar用户标识
versioninteger版本号
namevarcharProfile 名称
last_execute_doc_idinteger上一次执行的 document ID
common_partvarcharProfile 内容(JSON)
create_timetimestamp创建时间戳
last_update_timetimestamp更新时间戳
is_deletedboolean删除标记

下一步