FatSecret MCP Server
# FatSecret MCP Server <img src="https://cdn.prod.website-files.com/6854cb4b7a1b8e39612d89cf/685543fddca41e9e9ce5ae5f_fatsecret_logo-op.png" alt="FatSecret Logo" height="28" />
> [!IMPORTANT]
> This is **not an official MCP server** by FatSecret.
> It uses the [FatSecret Platform API](https://platform.fatsecret.com/) which requires a free developer account.
An MCP (Model Context Protocol) server that connects Claude/Cursor to the [FatSecret Platform API](https://platform.fatsecret.com/). Search foods, track your diet, manage recipes, and monitor weight directly from your AI assistant.
**Available on NPM**: `npx fatsecret-mcp` | **Claude Desktop Extension**: [fatsecret-mcp.mcpb](https://github.com/fliptheweb/fatsecret-mcp/releases/latest/download/fatsecret-mcp.mcpb)
## โจ Features
- ๐ **Authentication** โ Interactive credential setup and OAuth authorization
- ๐ **Food Search** โ Search FatSecret's extensive food database with detailed nutrition data
- ๐ท **Barcode Lookup** โ Find foods by GTIN-13 barcode
- ๐ณ **Recipe Search** โ Browse and filter recipes by calories, macros, and prep time
- ๐ **Food Diary** โ Add, edit, copy, and delete food diary entries
- ๐ฝ๏ธ **Saved Meals** โ Create and manage reusable meal templates
- โ๏ธ **Weight Tracking** โ Record and view weight history
- ๐โโ๏ธ **Exercise Tracking** โ View exercises and manage activity entries
- โญ **Favorites** โ Manage favorite foods and recipes
## ๐ Quick Start
Add to your MCP client configuration:
```json
{
"mcpServers": {
"fatsecret": {
"command": "npx",
"args": ["-y", "fatsecret-mcp"]
}
}
}
```
That's it! On first use, the AI will guide you through setup:
1. **`check_auth_status`** โ detects missing credentials and tells you what to do
2. **`setup_credentials`** โ you provide your API keys (saved to `~/.fatsecret-mcp/config.json`)
3. **`start_auth`** โ **`complete_auth`** โ authorize your FatSecret account for diary/weight tools
Alternatively, you can pass credentials as environment variables:
```json
{
"mcpServers": {
"fatsecret": {
"command": "npx",
"args": ["-y", "fatsecret-mcp"],
"env": {
"FATSECRET_CLIENT_ID": "your_client_id",
"FATSECRET_CLIENT_SECRET": "your_client_secret",
"FATSECRET_CONSUMER_SECRET": "your_consumer_secret"
}
}
}
}
```
### ๐ Where to Get Credentials
1. Create a free account at [platform.fatsecret.com](https://platform.fatsecret.com/)
2. Navigate to **My Account โ API Keys**
3. You'll see three values:
- **Client ID** (used for both OAuth 2.0 and OAuth 1.0)
- **Client Secret** (OAuth 2.0 - for public food/recipe search)
- **Consumer Secret** (OAuth 1.0 - for user profile/diary access)
๐ Step-by-step guide: [Getting Started with FatSecret API](https://github.com/fatsecret-group/postman-fatsecret-apis)
### Claude Desktop (Extension)
Download and open [fatsecret-mcp.mcpb](https://github.com/fliptheweb/fatsecret-mcp/releases/latest/download/fatsecret-mcp.mcpb) with Claude Desktop. You'll be prompted to enter your FatSecret credentials โ secrets are stored securely in the OS keychain.
See [Building Desktop Extensions with MCPB](https://support.claude.com/en/articles/12922929-building-desktop-extensions-with-mcpb) for more details.
### Claude Desktop (Manual)
`~/Library/Application Support/Claude/claude_desktop_config.json`
### Claude Code (CLI)
```bash
claude mcp add fatsecret -- npx -y fatsecret-mcp
```
Or with env vars:
```bash
claude mcp add fatsecret \
-e FATSECRET_CLIENT_ID=your_client_id \
-e FATSECRET_CLIENT_SECRET=your_client_secret \
-e FATSECRET_CONSUMER_SECRET=your_consumer_secret \
-- npx -y fatsecret-mcp
```
Verify with `claude mcp list`.
### Cursor
- **Settings UI** โ `Settings โ MCP โ + Add new MCP server`, then fill in the command, args, and env
- **Project config** โ add JSON to `.cursor/mcp.json` in your project root
- **Global config** โ add JSON to `~/.cursor/mcp.json`
## ๐ ๏ธ Available Tools
| Tool | Description |
|------|-------------|
| **๐ Setup & Auth** | |
| `check_auth_status` | Check if credentials and profile auth are configured. **Call this first.** |
| `setup_credentials` | Save FatSecret API credentials to persistent config |
| `start_auth` | Start OAuth 1.0 authorization โ returns URL for user to visit |
| `complete_auth` | Complete OAuth with verifier PIN from authorization page |
| | |
| **๐ Food Search** *(public)* | |
| `search_foods` | Search the food database |
| `get_food` | Get detailed nutrition info for a food |
| `find_food_by_barcode` | Find food by GTIN-13 barcode |
| `autocomplete_foods` | Get search autocomplete suggestions |
| | |
| **๐ณ Recipes** *(public)* | |
| `search_recipes` | Search recipes with filters |
| `get_recipe` | Get recipe details with ingredients and directions |
| | |
| **๐ Reference** *(public)* | |
| `get_food_categories` | Get food categories |
| `get_food_sub_categories` | Get food sub categories |
| `get_brands` | Get food brands |
| `get_recipe_types` | Get recipe types |
| | |
| **๐ Food Diary** *(profile auth)* | |
| `get_food_entries` | Get food diary entries for a date |
| `get_food_entries_month` | Get monthly nutrition summary (calories & macros per day) |
| `create_food_entry` | Add a food diary entry |
| `edit_food_entry` | Edit a food diary entry |
| `delete_food_entry` | Delete a food diary entry |
| `copy_food_entries` | Copy entries from one date to another |
| `copy_saved_meal_entries` | Copy a saved meal to a date |
| | |
| **โญ Favorites** *(profile auth)* | |
| `get_favorite_foods` | Get favorite foods |
| `delete_favorite_food` | Remove food from favorites |
| `get_most_eaten_foods` | Get most eaten foods |
| `get_recently_eaten_foods` | Get recently eaten foods |
| `get_favorite_recipes` | Get favorite recipes |
| `add_favorite_recipe` | Add recipe to favorites |
| `delete_favorite_recipe` | Remove recipe from favorites |
| | |
| **๐ฝ๏ธ Saved Meals** *(profile auth)* | |
| `get_saved_meals` | Get saved meals |
| `create_saved_meal` | Create a saved meal |
| `edit_saved_meal` | Edit a saved meal |
| `delete_saved_meal` | Delete a saved meal |
| `get_saved_meal_items` | Get items in a saved meal |
| `add_saved_meal_item` | Add food to a saved meal |
| `edit_saved_meal_item` | Edit saved meal item |
| `delete_saved_meal_item` | Remove item from saved meal |
| | |
| **โ๏ธ Weight** *(profile auth)* | |
| `update_weight` | Record weight for a date |
| `get_weight_month` | Get weight history for a month |
| | |
| **๐โโ๏ธ Exercise** *(profile auth)* | |
| `get_exercises` | Get exercise types |
| `edit_exercise_entries` | Shift exercise time between activities |
| `get_exercise_entries_month` | Get exercise data for a month |
| `save_exercise_template` | Save exercise template for weekdays |
| | |
| **๐ค Profile** *(profile auth)* | |
| `get_profile` | Get user profile info |
| `create_food` | Create a custom food (Premier) |
<sub>API reference: [FatSecret Postman Collection](https://www.postman.com/fatsecret/fatsecret-public-apis/)</sub>
## ๐งช Test Connection
```bash
npx fatsecret-mcp
```
Or with env vars:
```bash
FATSECRET_CLIENT_ID='...' FATSECRET_CLIENT_SECRET='...' FATSECRET_CONSUMER_SECRET='...' npx fatsecret-mcp
```
## ๐ Requirements
- Node.js 18+
- FatSecret Platform API account ([platform.fatsecret.com](https://platform.fatsecret.com/))
- MCP-compatible client (Claude Desktop, Cursor, etc.)
## ๐ง Development
1. Clone the repository
2. `npm install`
3. Copy `.env.example` to `.env` and fill in your credentials
4. `npm run dev` to run in development mode
Debugging with MCP Inspector:
```bash
FATSECRET_CLIENT_ID=X FATSECRET_CLIENT_SECRET=X FATSECRET_CONSUMER_SECRET=X npx -y @modelcontextprotocol/inspector npx <local-path>/fatsecret-mcp
```
## ๐ License
MIT License - see [LICENSE](LICENSE) file for details.
TDQS
Scored across 44 tools
Each tool targets a distinct action or resource, with clear boundaries between food search, recipe lookup, food diary management, weight tracking, exercise, and auth flows. No two tools have overlapping or ambiguous purposes.
All tools follow a consistent verb_noun pattern (e.g., search_foods, create_food_entry, get_profile). Even compound names like find_food_by_barcode and copy_saved_meal_entries maintain the same structure. No mixing of conventions.
With 44 tools, the server is significantly over the typical well-scoped range of 3โ15. While the FatSecret API is broad, this many tools in one server can overwhelm agents, and some functionality (e.g., auth setup with 4 tools) could be consolidated.
The tool set covers most major operations: food and recipe search, diary CRUD, favorites, saved meals, weight logging, and exercise. Minor gaps exist, such as missing single-date weight retrieval and lack of direct exercise entry creation, but core workflows are supported.