营养数据库API服务器

一个提供FatSecret营养数据库API访问的MCP服务器,支持完整的OAuth认证流程,可用于食物搜索、食谱查询和用户饮食数据管理。

  • by fcoury
  • JavaScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 fcoury/fatsecret-mcp

使用说明

FatSecret MCP服务器

模型上下文协议(MCP)服务器,提供对FatSecret营养数据库API的访问,并提供完整的3脚OAuth身份验证支持。

特性

  • 完整的OAuth 1.0a实现:用于用户身份验证的完整3标签OAuth流
  • 食品数据库访问:搜索和检索详细的营养信息
  • 配方数据库:搜索食谱并获取详细的烹饪说明
  • 用户数据管理:访问用户食物日记并添加食物条目
  • 安全凭证存储:API凭证和令牌的加密存储

入门指南

先决条件

  • Node.js(v14或更高版本)
  • npm或纱线
  • FatSecret开发人员帐户

安装

# Clone the repository
git clone https://github.com/your-username/fatsecret-mcp.git
cd fatsecret-mcp

# Install dependencies
npm install

# Build the TypeScript
npm run build

设置

1.获取FatSecret API凭据

  1. 访问 FatSecret平台
  2. 创建开发人员帐户并注册您的应用程序
  3. 记下你的 客户端ID 和 客户端密钥

2.配置MCP服务器

需要在MCP客户端(如Claude Desktop)中配置服务器。将此添加到MCP配置中:

{
  "mcpServers": {
    "fatsecret": {
      "command": "node",
      "args": ["path/to/fatsecret-mcp-server/dist/index.js"]
    }
  }
}

3.身份验证过程

选项1:使用OAuth控制台实用程序(推荐)

最简单的身份验证方法是使用附带的OAuth控制台实用程序:

# Make sure you've built the project first
npm run build

# Run the OAuth console utility
node dist/cli.js

此交互式实用程序将:

  1. 询问您的客户ID和客户密码
  2. 将它们安全地保存在 ~/.fatsecret-mcp-config.json
  3. 引导您完成OAuth流程:
    • 打开浏览器进入FatSecret授权页面
    • 提示您在授权后粘贴验证码
    • 保存访问令牌以备将来使用

选项2:通过MCP工具进行手动身份验证

如果您更喜欢通过MCP接口进行身份验证(例如,在Claude中):

  1. 设置API凭据:

    Use tool: set_credentials
    Parameters:
    - clientId: "your_client_id_here"
    - clientSecret: "your_client_secret_here"
    
  2. 启动OAuth流程:

    Use tool: start_oauth_flow
    Parameters:
    - callbackUrl: "oob" (for out-of-band authentication)
    
  3. 访问授权URL 在回复中提供:

    • 登录您的FatSecret帐户(或创建一个)
    • 点击“允许”以授权该应用程序
    • 复制页面上显示的验证码
  4. 完成OAuth流程:

    Use tool: complete_oauth_flow
    Parameters:
    - requestToken: [from step 2 response]
    - requestTokenSecret: [from step 2 response]
    - verifier: [the code you copied from the authorization page]
    

选项3:使用环境变量

您还可以通过环境变量提供凭据:

# Create a .env file in the project root
CLIENT_ID=your_client_id_here
CLIENT_SECRET=your_client_secret_here

# The server will automatically load these on startup

注意:对于用户特定的操作,您仍然需要完成OAuth流程。

用法

1.设置API凭据

首先,设置您的FatSecret API凭据:

Use the set_credentials tool with your Client ID and Client Secret

2.对用户进行身份验证(3-Legged OAuth)

对于用户特定的操作,您需要完成OAuth流程:

1. Use start_oauth_flow tool (with callback URL or "oob" for out-of-band)
2. Visit the provided authorization URL
3. Authorize the application and get the verifier code
4. Use complete_oauth_flow tool with the request token, secret, and verifier

3.使用API

一旦通过身份验证,您就可以使用所有可用的工具:

食品搜索和信息

  • search_foods:在数据库中搜索食物
  • get_food:获取特定食物的详细营养信息

配方搜索和信息

  • search_recipes:搜索食谱
  • get_recipe:获取详细的配方信息,包括配料和说明

用户数据(需要身份验证)

  • get_user_profile:获取经过身份验证的用户的个人资料
  • get_user_food_entries:获取特定日期的食物日记条目
  • add_food_entry:在用户日记中添加食物条目

效用

  • check_auth_status:检查当前身份验证状态

可用工具

身份验证工具

set_credentials

设置您的FatSecret API凭据。

参数:

  • clientId (string,必填):您的FatSecret客户端ID
  • clientSecret (string,必填):您的FatSecret客户端密码

start_oauth_flow

启动3个标签的OAuth流程。

参数:

  • callbackUrl (字符串,可选):OAuth回调URL(默认值:“oob”)

complete_oauth_flow

使用授权完成OAuth流程。

参数:

  • requestToken (字符串,必填):从start_oauth_flow请求令牌
  • requestTokenSecret (字符串,必填):从start_oauth_flow请求令牌密钥
  • verifier (字符串,必填):来自授权的OAuth验证器

check_auth_status

检查当前身份验证状态。

食品数据库工具

search_foods

在FatSecret数据库中搜索食物。

参数:

  • searchExpression (字符串,必填):搜索词
  • pageNumber (数字,可选):页码(默认值:0)
  • maxResults (数字,可选):每页最大结果数(默认值:20)

get_food

获取特定食物的详细信息。

参数:

  • foodId (字符串,必填):FatSecret食品ID

配方数据库工具

search_recipes

在FatSecret数据库中搜索食谱。

参数:

  • searchExpression (字符串,必填):搜索词
  • pageNumber (数字,可选):页码(默认值:0)
  • maxResults (数字,可选):每页最大结果数(默认值:20)

get_recipe

获取特定食谱的详细信息。

参数:

  • recipeId (字符串,必填):FatSecret配方ID

用户数据工具(需要身份验证)

get_user_profile

获取经过身份验证的用户的个人资料信息。

get_user_food_entries

获取用户特定日期的食物日记条目。

参数:

  • date (字符串,可选):YYYY-MM-DD格式的日期(默认值:今天)

add_food_entry

在用户的日记中添加食物条目。

参数:

  • foodId (字符串,必填):FatSecret食品ID
  • servingId (string,必填):食物的服务ID
  • quantity (数字,必填):服务数量
  • mealType (字符串,必填):用餐类型(早餐、午餐、晚餐、小吃)
  • date (字符串,可选):YYYY-MM-DD格式的日期(默认值:今天)

工作流示例

  1. 安装凭据:

    Tool: set_credentials
    - clientId: "your_client_id"
    - clientSecret: "your_client_secret"
    
  2. 寻找食物:

    Tool: search_foods
    - searchExpression: "chicken breast"
    
  3. 获取食物详细信息:

    Tool: get_food
    - foodId: "12345"
    
  4. 验证用户身份(如果需要):

    Tool: start_oauth_flow
    - callbackUrl: "oob"
    
    # Follow the authorization URL, then:
    
    Tool: complete_oauth_flow
    - requestToken: "from_start_oauth_flow"
    - requestTokenSecret: "from_start_oauth_flow"
    - verifier: "from_authorization_page"
    
  5. 将食物添加到日记中:

    Tool: add_food_entry
    - foodId: "12345"
    - servingId: "67890"
    - quantity: 1
    - mealType: "lunch"
    

配置存储

服务器将配置(凭据和令牌)存储在 ~/.fatsecret-mcp-config.json。此文件包含:

  • API凭据(客户端ID和机密)
  • OAuth访问令牌(经过身份验证时)
  • 用户ID(经过身份验证时)

安全说明

  • 凭据存储在本地主目录中
  • OAuth令牌使用正确的HMAC-SHA1签名进行安全管理
  • 所有API通信都使用HTTPS
  • 服务器实施了适当的OAuth 1.0a安全措施

api参考

此服务器实现FatSecret平台API。有关API的详细文档,请访问:

错误处理

服务器为常见问题提供详细的错误消息:

  • 缺少或无效的凭据
  • OAuth流错误
  • API速率限制
  • 网络连接问题
  • 无效参数

测试

从命令行进行测试

该项目包括几个测试实用程序:

1.交互式测试工具

# Run the interactive test menu
node test-interactive.js

这提供了一个菜单驱动的界面来测试所有MCP工具。

2.日期转换测试

# Test the date conversion logic
node test-date-conversion.js

验证日期是否正确转换为FatSecret的“纪元以来的天数”格式。

3.直接JSON-RPC测试

# Send test messages via pipe
node test-mcp.js | node dist/index.js

在Claude Desktop中进行测试

  1. 配置MCP服务器后重新启动Claude Desktop
  2. 在可用工具中查找“fatsecret”
  3. 从使用开始 check_auth_status 验证连接

故障排除

常见问题

“整数值无效:日期”

  • FatSecret API预计日期为自纪元以来的天数(1970-01-01)
  • 服务器自动转换YYYY-MM-DD格式的日期
  • 如果您遇到此错误,请确保您使用的是最新版本

OAuth身份验证失败

  • 验证您的客户端ID和客户端密码是否正确
  • 确保您使用了正确的URL(OAuth的authentication.fatsecret.com)
  • 检查您是否从授权页面复制了整个验证器代码

在Claude中找不到服务器

  • 确保MCP配置中的路径是绝对的,而不是相对的
  • 验证服务器是否已成功构建(npm run build)
  • 检查克劳德的日志是否有任何错误消息

“需要用户身份验证”

  • 使用CLI实用程序或MCP工具完成OAuth流程
  • 检查身份验证状态 check_auth_status 工具
  • 代币保存在 ~/.fatsecret-mcp-config.json

发展

要修改或扩展服务器,请执行以下操作:

# Install dependencies
npm install

# Build and run
npm run build
npm start

# Development mode with auto-rebuild
npm run dev

项目结构

fatsecret-mcp/
├── src/
│   ├── index.ts        # Main MCP server implementation
│   └── cli.ts          # OAuth console utility
├── dist/               # Compiled JavaScript files
├── test-*.js           # Test utilities
├── package.json
├── tsconfig.json
└── README.md

许可证

MIT许可证-有关详细信息,请参阅许可证文件。