这是一个提供对FatSecret营养数据库API访问的Model Context Protocol (MCP)服务器,并支持完整的三腿OAuth认证。
# 克隆仓库
git clone https://github.com/your-username/fatsecret-mcp.git
cd fatsecret-m- cp
# 安装依赖
npm install
# 构建TypeScript
npm run build
需要在您的MCP客户端(如Claude Desktop)中配置服务器。在您的MCP配置中添加以下内容:
{
"mcpServers": {
"fatsecret": {
"command": "node",
"args": ["path/to/fatsecret-mcp-server/dist/index.js"]
}
}
}
最简单的认证方式是使用包含的OAuth控制台工具:
# 确保您已经构建了项目
npm run build
# 运行OAuth控制台工具
node dist/cli.js
这个交互式工具会:
~/.fatsecret-mcp-config.json如果您希望通过MCP界面(例如,在Claude中)进行认证:
设置您的API凭证:
使用工具:set_credentials
参数:
- clientId: "your_client_id_here"
- clientSecret: "your_client_secret_here"
启动OAuth流程:
使用工具:start_oauth_flow
参数:
- callbackUrl: "oob"(用于带外认证)
访问提供的授权URL:
完成OAuth流程:
使用工具:complete_oauth_flow
参数:
- requestToken: [来自步骤2响应]
- requestTokenSecret: [来自步骤2响应]
- verifier: [从授权页面复制的代码]
您也可以通过环境变量提供凭证:
# 在项目根目录创建一个.env文件
CLIENT_ID=your_client_id_here
CLIENT_SECRET=your_client_secret_here
# 服务器将在启动时自动加载这些
注意:您仍然需要完成OAuth流程以执行特定于用户的操作。
首先,设置您的FatSecret API凭证:
使用set_credentials工具与您的客户端ID和客户端密钥
对于特定于用户的操作,您需要完成OAuth流程:
1. 使用start_oauth_flow工具(带有回调URL或“oob”用于带外)
2. 访问提供的授权URL
3. 授权应用并获取验证代码
4. 使用complete_oauth_flow工具与请求令牌、秘密和验证器
一旦认证成功,您可以使用所有可用工具:
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(字符串,必需):您的FatSecret客户端IDclientSecret(字符串,必需):您的FatSecret客户端密钥start_oauth_flow开始三腿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食品IDsearch_recipes在FatSecret数据库中搜索食谱。
参数:
searchExpression(字符串,必需):搜索词pageNumber(数字,可选):页码(默认:0)maxResults(数字,可选):每页最大结果数(默认:20)get_recipe获取特定食谱的详细信息。
参数:
recipeId(字符串,必需):FatSecret食谱IDget_user_profile获取已认证用户的个人资料信息。
get_user_food_entries获取用户特定日期的食物日记条目。
参数:
date(字符串,可选):YYYY-MM-DD格式的日期(默认:今天)add_food_entry向用户的日记添加食物条目。
参数:
foodId(字符串,必需):FatSecret食品IDservingId(字符串,必需):食品的服务IDquantity(数字,必需):服务的数量mealType(字符串,必需):餐类型(早餐、午餐、晚餐、小吃)date(字符串,可选):YYYY-MM-DD格式的日期(默认:今天)设置凭证:
工具:set_credentials
- clientId: "your_client_id"
- clientSecret: "your_client_secret"
搜索食品:
工具:search_foods
- searchExpression: "鸡胸肉"
获取食品详情:
工具:get_food
- foodId: "12345"
认证用户(如果需要):
工具:start_oauth_flow
- callbackUrl: "oob"
# 跟随授权URL,然后:
工具:complete_oauth_flow
- requestToken: "from_start_oauth_flow"
- requestTokenSecret: "from_start_oauth_flow"
- verifier: "from_authorization_page"
添加食物到日记:
工具:add_food_entry
- foodId: "12345"
- servingId: "67890"
- quantity: 1
- mealType: "午餐"
服务器将配置(凭证和令牌)存储在~/.fatsecret-mcp-config.json。此文件包含:
此服务器实现了FatSecret平台API。有关详细的API文档,请访问:
服务器提供了常见问题的详细错误消息:
项目包括几个测试实用程序:
# 运行交互式测试菜单
node test-interactive.js
这提供了一个菜单驱动的接口来测试所有MCP工具。
# 测试日期转换逻辑
node test-date-conversion.js
验证日期是否正确转换为FatSecret的“自纪元以来的天数”格式。
# 通过管道发送测试消息
node test-mcp.js | node dist/index.js
check_auth_status工具开始以验证连接npm run build)check_auth_status工具检查认证状态~/.fatsecret-mcp-config.json要修改或扩展服务器:
# 安装依赖
npm install
# 构建并运行
npm run build
npm start
# 开发模式,自动重建
npm run dev
fatsecret-mcp/
├── src/
│ ├── index.ts # 主MCP服务器实现
│ └── cli.ts # OAuth控制台工具
├── dist/ # 编译后的JavaScript文件
├── test-*.js # 测试实用程序
├── package.json
├── tsconfig.json
└── README.md
MIT许可证 - 详见LICENSE文件。