这是一个模型上下文协议(MCP)服务器,用于提供对USDA食品数据中央API的API访问。
npm install
npm run build
该服务器使用标准I/O传输,这意味着它被设计为由MCP客户端作为子进程运行。要直接运行它:
# 将USDA API密钥设置为环境变量
export USDA_API_KEY=your-api-key-here
npm start
对于带有热重载的开发:
# 将USDA API密钥设置为环境变量
export USDA_API_KEY=your-api-key-here
npm run dev
要在Claude Desktop中使用此MCP服务器:
打开Claude Desktop设置:
在设置面板中,点击左侧栏中的“开发者”,然后点击“编辑配置”
这将创建或打开一个配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json将食品数据中央MCP服务器添加到配置文件中:
{
"mcpServers": {
"food-data-central": {
"command": "npx",
"args": ["tsx", "/path/to/food-data-central-mcp-server/src/index.ts"],
"env": {
"PATH": "/opt/homebrew/bin",
"USDA_API_KEY": "<INSERT KEY HERE>"
}
}
}
}
将/path/to/food-data-central-mcp-server替换为此仓库的绝对路径,并将<INSERT KEY HERE>替换为您的实际USDA API密钥。
注意:如果您在Windows上,可能需要调整PATH值以包含您的npm全局安装目录。
保存配置文件并重启Claude Desktop
重启后,您应该在输入框右下角看到一个锤子图标。点击它查看可用工具。
现在Claude可以通过这个MCP服务器访问食品数据中央API。您可以要求Claude搜索食品、获取营养信息或检索详细的食品数据。
food://details - 根据ID获取特定食品的详细信息
fdcId: 食品数据中央ID(必需)format: 可选。'abridged'用于简化的元素集,'full'用于所有元素(默认)nutrients: 可选。最多25个营养素编号的列表(逗号分隔)food://foods - 使用输入的FDC ID获取多个食品项目的详细信息
fdcIds: 多个FDC ID的列表(必需,逗号分隔)format: 可选。'abridged'用于简化的元素集,'full'用于所有元素(默认)nutrients: 可选。最多25个营养素编号的列表(逗号分隔)food://list - 获取食品的分页列表
dataType: 可选。按特定数据类型过滤(逗号分隔列表)pageSize: 可选。返回的最大结果数(默认:50)pageNumber: 可选。要检索的页码(默认:1)sortBy: 可选。排序字段sortOrder: 可选。排序顺序,“asc”或“desc”search-foods - 使用关键词搜索食品
query: 搜索术语以查找食品(必需)dataType: 可选。按特定数据类型过滤(字符串数组)pageSize: 可选。返回的最大结果数(默认:50)pageNumber: 可选。要检索的页码(默认:1)sortBy: 可选。排序字段sortOrder: 可选。排序顺序,“asc”或“desc”brandOwner: 可选。基于食品的品牌所有者过滤结果(仅适用于品牌食品)tradeChannel: 可选。过滤包含任何指定贸易渠道的食品startDate: 可选。过滤在此日期或之后发布的食品(格式:YYYY-MM-DD)endDate: 可选。过滤在此日期或之前发布的食品(格式:YMD)使用MCP资源获取食品详情:
food://details?fdcId=2345678&format=full
使用MCP资源获取多个食品:
food://foods?fdcIds=534358,373052,616350
使用MCP资源获取食品列表:
food://list?dataType=Foundation,SR Legacy&pageSize=10&pageNumber=1
使用MCP工具搜索食品:
{
"name": "search-foods",
"arguments": {
"query": "apple",
"dataType": ["Foundation", "SR Legacy"],
"pageSize": 10,
"pageNumber": 1
}
}