BMI-MCP-SERVER

healsky123/BMI-MCP-SERVER

3.1

If you are the rightful owner of BMI-MCP-SERVER and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The BMI Calculator MCP Service provides a comprehensive solution for calculating and categorizing BMI across all age groups, from children to the elderly, using the MCP protocol.

Tools
3
Resources
0
Prompts
0

BMI Calculator MCP Service

全人群BMI计算器MCP服务器,支持从儿童到老年人的BMI计算和评价分类。 注:6-20岁的在校学生有专门的BMI评价标准,与成年人标准有所不同, 且按性别年龄严格细分!目前大模型(LLM)学到的知识里都只有一个笼统 的成年人评价标准,不利于对健康体重的评价分类,本服务为大模型能获取 更细分的健康体重评价分类提供了精确的计算和评价,为健康体重相关提 问和应用项目增加一个实用的科学工具(采用标准的MCP协议构建)。

功能特点

  • 支持全年龄段(6岁至79岁)BMI计算
  • 根据年龄和性别提供个性化BMI标准
  • 提供标准MCP工具接口
  • 支持Streamable HTTP和STDIO两种通信方式

MCP工具接口使用指南

为了提高使用效率,我们提供了三个专门的工具,根据不同的使用场景选择合适的工具:

calculate_bmi(推荐优先使用)

功能:一次性计算BMI值并获取分类评价 使用场景:当您需要同时获取BMI值和分类时使用,这是功能最全面的工具

# 调用calculate_bmi工具(一次性获取BMI值和分类)
# 通过MCP客户端调用
{
  "method": "calculate_bmi",
  "params": {
    "age": 25,
    "gender": "male",
    "weight": 70,
    "height": 1.75
  }
}
# 返回: {"bmi": 22.9, "category": "normal"}

calculate_bmi_value

功能:仅计算BMI值 使用场景:当您只需要BMI数值,不需要分类评价时使用

# 调用calculate_bmi_value工具(只需要BMI数值)
# 通过MCP客户端调用
{
  "method": "calculate_bmi_value",
  "params": {
    "weight": 70,
    "height": 1.75
  }
}
# 返回: 22.9

get_bmi_category

功能:根据已知BMI值获取分类 使用场景:当您已经知道BMI值,只需要获取对应的分类评价时使用

# 调用get_bmi_category工具(已知BMI值,获取分类)
# 通过MCP客户端调用
{
  "method": "get_bmi_category",
  "params": {
    "age": 25,
    "gender": "male",
    "bmi": 22.9
  }
}
# 返回: "normal"

工具详细说明

calculate_bmi

计算BMI值和分类

age: 年龄(整数)
gender: 性别("male" 或 "female")
weight: 体重(公斤,数值)
height: 身高(米,数值)

get_bmi_category

根据年龄、性别和BMI值获取分类

age: 年龄(整数)
gender: 性别("male" 或 "female")
bmi: BMI值(数值)

calculate_bmi_value

计算BMI值(不考虑年龄和性别)

weight: 体重(公斤,数值)
height: 身高(米,数值)

资源接口

bmi://standards

获取BMI标准信息

环境准备

自动环境设置(推荐)

项目提供了环境设置脚本,可根据您的操作系统选择:

Windows系统
# 使用批处理脚本
setup_env.bat

# 或使用PowerShell脚本
PowerShell -ExecutionPolicy Bypass -File setup_env.ps1
macOS/Linux系统
chmod +x setup_env.sh
./setup_env.sh

手动环境设置

如果脚本无法正常工作,可以手动执行以下步骤:

# 1. 创建虚拟环境
python -m venv bmi_mcp_env

# 2. 激活虚拟环境
# Windows:
bmi_mcp_env\Scripts\activate
# macOS/Linux:
source bmi_mcp_env/bin/activate

# 3. 升级pip
python -m pip install --upgrade pip

# 4. 安装依赖
pip install -r requirements.txt

部署方式(标准MCP服务器)

STDIO方式(推荐用于测试和本地使用)

# 确保已激活虚拟环境并安装依赖
python mcp_stdio.py

STREAMABLE HTTP方式(推荐用于生产环境)

# 确保已激活虚拟环境并安装依赖
python bmi_mcp_http.py

服务配置(Server config)

{
  "name": "BMI Calculator",
  "description": "全人群BMI计算器MCP服务,支持从儿童到老年人的BMI计算和分类",
  "version": "1.0.0",
  "transport": {
    "stdio": {
      "type": "stdio",
      "command": "python",
      "args": ["mcp_stdio.py"],
      "cwd": "."
    },
    "http": {
      "type": "http",
      "url": "http://localhost:8000",
      "health_check_path": "/health"
    }
  },
  "tools": [
    {
      "name": "calculate_bmi",
      "description": "计算BMI值和分类",
      "input_schema": {
        "type": "object",
        "properties": {
          "age": {
            "type": "integer",
            "description": "年龄(整数,6-79岁)"
          },
          "gender": {
            "type": "string",
            "enum": ["male", "female"],
            "description": "性别(\"male\" 或 \"female\")"
          },
          "weight": {
            "type": "number",
            "description": "体重(公斤,数值)"
          },
          "height": {
            "type": "number",
            "description": "身高(米,数值)"
          }
        },
        "required": ["age", "gender", "weight", "height"]
      }
    },
    {
      "name": "get_bmi_category",
      "description": "根据年龄、性别和BMI值获取分类",
      "input_schema": {
        "type": "object",
        "properties": {
          "age": {
            "type": "integer",
            "description": "年龄(整数,6-79岁)"
          },
          "gender": {
            "type": "string",
            "enum": ["male", "female"],
            "description": "性别(\"male\" 或 \"female\")"
          },
          "bmi": {
            "type": "number",
            "description": "BMI值(数值)"
          }
        },
        "required": ["age", "gender", "bmi"]
      }
    },
    {
      "name": "calculate_bmi_value",
      "description": "计算BMI值(不考虑年龄和性别)",
      "input_schema": {
        "type": "object",
        "properties": {
          "weight": {
            "type": "number",
            "description": "体重(公斤,数值)"
          },
          "height": {
            "type": "number",
            "description": "身高(米,数值)"
          }
        },
        "required": ["weight", "height"]
      }
    }
  ],
  "resources": [
    {
      "uri": "bmi://standards",
      "name": "BMI标准信息",
      "description": "获取BMI标准信息",
      "mimeType": "text/plain"
    }
  ]
}

环境变量配置

本服务不需要特殊的环境变量配置即可运行。如需自定义配置,可设置以下环境变量:

{
  "env": {
    "PYTHONPATH": ".",
    "LOG_LEVEL": "INFO"
  }
}

服务地址和端口

默认情况下,HTTP服务运行在以下地址:

  • 地址: http://localhost:8000
  • 健康检查端点: http://localhost:8000/health

客户端请求标准示例

工具调用示例(通过MCP协议)

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "calculate_bmi",
  "params": {
    "age": 25,
    "gender": "male",
    "weight": 70,
    "height": 1.75
  }
}

使用示例

作为MCP服务使用

服务启动后,可以通过支持MCP协议的客户端调用工具。

直接调用(开发测试)

from bmiMCP import BMIEvaluator

# 计算BMI
evaluator = BMIEvaluator()
result = evaluator.evaluate(25, "male", 70, 1.75)
print(result)  # {'bmi': 22.9, 'category': 'normal'}

## 许可证

本项目采用MIT许可证,详情请见 [LICENSE](LICENSE) 文件。