使用说明
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凭据
- 访问 FatSecret平台
- 创建开发人员帐户并注册您的应用程序
- 记下你的 客户端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
此交互式实用程序将:
- 询问您的客户ID和客户密码
- 将它们安全地保存在
~/.fatsecret-mcp-config.json - 引导您完成OAuth流程:
- 打开浏览器进入FatSecret授权页面
- 提示您在授权后粘贴验证码
- 保存访问令牌以备将来使用
选项2:通过MCP工具进行手动身份验证
如果您更喜欢通过MCP接口进行身份验证(例如,在Claude中):
-
设置API凭据:
Use tool: set_credentials Parameters: - clientId: "your_client_id_here" - clientSecret: "your_client_secret_here" -
启动OAuth流程:
Use tool: start_oauth_flow Parameters: - callbackUrl: "oob" (for out-of-band authentication) -
访问授权URL 在回复中提供:
- 登录您的FatSecret帐户(或创建一个)
- 点击“允许”以授权该应用程序
- 复制页面上显示的验证码
-
完成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客户端IDclientSecret(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食品IDservingId(string,必填):食物的服务IDquantity(数字,必填):服务数量mealType(字符串,必填):用餐类型(早餐、午餐、晚餐、小吃)date(字符串,可选):YYYY-MM-DD格式的日期(默认值:今天)
工作流示例
-
安装凭据:
Tool: set_credentials - clientId: "your_client_id" - clientSecret: "your_client_secret" -
寻找食物:
Tool: search_foods - searchExpression: "chicken breast" -
获取食物详细信息:
Tool: get_food - foodId: "12345" -
验证用户身份(如果需要):
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" -
将食物添加到日记中:
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中进行测试
- 配置MCP服务器后重新启动Claude Desktop
- 在可用工具中查找“fatsecret”
- 从使用开始
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许可证-有关详细信息,请参阅许可证文件。