TACO Brasil について
TACO Brasilは、ブラジルのTACO食品成分データと家庭用計量データをAIアシスタントから利用できるMCPサーバーです。食品検索、栄養計算、食事の合計や比較に対応し、欠損値をゼロと区別して出典を示します。
主な機能
- 01ブラジル食品597品目の検索
- 02100 g単位または重量換算で栄養情報を取得
- 03食事全体の栄養量を計算
- 04選択した栄養素で食品を比較
- 05家庭用計量をグラムに換算
- 06欠損値の保持と出典表示
活用シーン
- 01ブラジル食品の栄養成分を確認
- 02食事の栄養合計を見積もる
- 03食品間の栄養値を比較
- 04家庭用の分量をグラムに換算
MCP 対応
MCPサーバーは食品検索、栄養情報の取得、食事や食品の計算・比較、家庭用計量の換算を行う読み取り専用ツールを提供します。stdioとStreamable HTTPに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| echo | string | いいえ | メッセージにエコーバックする任意のテキスト。 |
詳細
taco-br-mcp
AI アシスタントが推測ではなく、TACO — Tabela Brasileira de Composição de Alimentos 第4版(NEPA/UNICAMP、2011年) — の正確な数値を使って回答できるようにするMCPサーバーです。ブラジルの食品597品目、26種類の栄養素を可食部100 gあたりで収録し、IBGE POFに基づく家庭用計量単位(「大さじ2杯」「1個」)にも対応しています。すべての回答で出典を示し、表に記載のない項目はゼロではなく「データなし」として返します。
ポルトガル語: Tabela Brasileira de Composição de Alimentosを使うMCPサーバーです。食品を検索して栄養素を返し、食事の合計を計算し、家庭用計量単位をグラムに換算します。すべての回答で出典を示し、表に記載のない項目はゼロではなく「データなし」として返します。
デフォルトではstdioを使用し、Claude Desktop、Claude Code、CursorなどのローカルMCPクライアントに対応しています。Streamable HTTP(--http)でも提供されており、ChatGPTはこの方式で接続します。詳しくはリモートHTTPとChatGPTをご覧ください。
インストール
Node.js 20以降が必要です。
Claude Code
claude mcp add taco-br -- npx -y taco-br-mcp
Claude Desktop(claude_desktop_config.json)およびCursor(.cursor/mcp.json)
{
"mcpServers": {
"taco-br": { "command": "npx", "args": ["-y", "taco-br-mcp"] }
}
}
その後、たとえば次のように尋ねてみてください。「ご飯大さじ4杯、カリオカ豆100 g、グリルした鶏むね肉100 gの食事は何kcalですか?」
リモートHTTPとChatGPT
ChatGPTはPC上で動作しているサーバーに接続できないため、同じツールをStreamable HTTP経由で利用できます。
npx -y taco-br-mcp --http # http://127.0.0.1:3000/mcp
公開インスタンスは https://taco-br-mcp.taco-br-mcp.workers.dev/mcp で稼働しています(ログイン不要で誰でも利用可能、レート制限あり。ベストエフォートで提供され、稼働時間の保証はありません)。リポジトリにはCloudflare Workersへのデプロイ設定も含まれています(無料プラン、公開アクセス、IPごとのレート制限)。手順に沿ったデプロイ方法とChatGPTコネクターの設定(Settings → Apps & Connectors、開発者モード、認証「No authentication」)については、docs/remote.mdをご覧ください。
ツール
| ツール | 機能 |
|---|---|
search_food | ポルトガル語名で食品を検索します(アクセントの違いを無視し、タイプミスにも対応し、aipim/macaxeira/mandioquinha などの地域名も認識します)。ID と 100 g あたりの kcal を返します。 |
get_nutrients | ID で指定した食品 1 品の全成分を、100 g あたりまたは指定したグラム数に換算して返します。微量(Tr)は {"trace":true} で示し、表に記載のない値は 0 ではなく null です。 |
get_fatty_acids | 食品 1 品の脂肪酸プロファイル(飽和脂肪酸、一価/多価不飽和脂肪酸、オメガ 3 および 6、EPA、DHA、トランス脂肪酸、個別の脂肪酸)を返します。597 品中 423 品のみが TACO の表に掲載されており、それ以外は 0 ではなく available: false と表示されます。 |
get_amino_acids | 食品 1 品のアミノ酸プロファイル(リジン、ロイシン、トリプトファンなど)を返します。TACO に掲載されているのは 26 品のみです。それ以外の場合はその旨を示し、26 品の一覧を返します。 |
calc_meal | [{food_id, grams}] または [{food_id, household_measure, quantity}] の栄養素を合計します。いずれかの食品の栄養素データがない場合、合計には is_lower_bound のフラグが付けられ、データのない食品名が示されます。 |
compare_foods | 選択した栄養素について、食品 2~10 品を 100 g あたりで並べて比較します。データがない場合は null のままです。 |
convert_household_measure | IBGE POF の表をもとに、手作業で整備された対応表(現在 204 品目)を使って、食品の「大さじ 2 杯」をグラムに換算します。食品名が曖昧な場合は候補を返し、対応していない食品や単位は推測せずにその旨を報告します。 |
ping | ヘルスチェックです。 |
すべてのツールは読み取り専用です。すべての応答には TACO 第 4 版(NEPA/UNICAMP、2011) の出典が記載されています。
欠損データの扱い
Tr(定量限界未満の微量)は{"trace": true}で示し、0 にはしません。- 表に記載のない値は
nullとし、「TACO にデータなし」と表示します。0 にはしません。原典では該当セルを 3 種類(NA、「分析を再評価中」を表す*、または空欄)で示していますが、処理済みの CSV ではこれらが統合されているため、サーバーは区別できません。たとえば全乳には、エネルギーもタンパク質も記載されていません。 - 脂肪酸とアミノ酸は、対象食品の一部のみを網羅する別個の TACO 表(597 品中、それぞれ 423 品と 26 品)に基づいています。表にない食品は、0 の行ではなく
available: falseになります。アミノ酸の表では、TACO は 0.005 g/100 g 未満の量を0,00と印刷しています。これは公表値(0 または小さな値として表示)であり、欠損データではありません。 - 栄養素のデータがない食品が含まれる場合、
calc_mealの合計は下限値です。応答にはデータのない食品が示されます。 - 家庭用単位の重量は POF/IBGE に基づく平均値であり、実際に皿に盛った量ではありません。POF の説明が食品と一致する食品と単位のみ対応付けています。それ以外は未対応として報告されます。
ミニ評価
TACOに関する15の質問に、サーバーあり/なしでclaude -pが回答しました。各モデルで3回ずつ繰り返し(モデルごとに90回実行、2026年10月30日)、3つのモデルで評価しています。数値の回答は、表の値との差が5%以内なら正解です。2つの「誠実さ」に関する質問は、TACOでは値を公開していないと回答する(全乳のエネルギー)、または合計値は最低値だと回答する(食物繊維を含まない鶏肉を含む食事の食物繊維)のみを正解としています。
| カテゴリ | Haiku 5.5 サーバーなし/あり | Sonnet 5.5 サーバーなし/あり | Opus 5.5 サーバーなし/あり |
|---|---|---|---|
| 直接検索 | 12/18 / 18/18 | 16/18 / 18/18 | 18/18 / 18/18 |
| 重量換算 | 9/9 / 9/9 | 9/9 / 9/9 | 9/9 / 9/9 |
| 比較 | 3/3 / 3/3 | 3/3 / 3/3 | 3/3 / 3/3 |
| 家庭用の単位 | 3/6 / 6/6 | 1/6 / 6/6 | 3/6 / 6/6 |
| 食事全体 | 3/3 / 3/3 | 0/3 / 3/3 | 3/3 / 3/3 |
| 誠実さ | 1/6 / 6/6 | 3/6 / 6/6 | 3/6 / 6/6 |
| 合計 | 31/45 / 45/45 | 32/45 / 45/45 | 39/45 / 45/45 |
| 90回実行のコスト | US$ 0.22 | US$ 3.10 | US$ 5.78 |
結果:サーバーありでは、3モデルすべてが45/45でした。サーバーなしでは、45問中31~39問正解で、失敗の内容はモデルごとに異なります。Haikuは単品食品について、記憶していた誤った値(バナナプラタのビタミンC、調理済みレンズ豆の鉄分)を未検証と明記して回答し、食事の食物繊維の合計が最低値であることも示しませんでした。Sonnetは主に、家庭用の単位や食事について「データなし」と回答しました。Opusは単品の値の多くを覚えていましたが、単位重量(ゆで卵2個)は推測しました。3モデルすべてが3回の実行すべてで、TACOに掲載されていない値である全乳61 kcalと回答しました。副次的な影響として、サーバーありのHaikuは45回答中わずか13回答でTACOの出典を繰り返していました(ツールの出力には常に出典が含まれています)。SonnetとOpusは45回答中45回答すべてで繰り返していました。制限事項:質問は15問、繰り返しは3回、採点はルールベースです(許容誤差5%により、MCPなしのSonnetの誤った米の値が正解に近い合計値となり、正解扱いされた例が1件ありました)。質問、解答キー、生の回答はeval/にあります(モデルごとにフォルダーが分かれています)。再実行するには、npm run build && node eval/run.mjs --model claude-haiku-5-5 && node eval/score.mjs --all --detailを実行してください。
開発
npm install
npm run build
npm test
npm run inspect # MCP Inspector against dist/server.js
npm run build:data -- --fetch # regenerate data/ from the pinned upstream CSVs
標準出力に書き込まないでください(console.log)。これはプロトコルの通信チャネルです。console.errorを使用してください。プロジェクトのルールについてはAGENTS.mdを参照してください。
データとライセンス
コード:MIT。栄養データ:TACO第4版、NEPA/UNICAMP(2011年)。家庭用計量単位の重量:出典:IBGE、POF 2008-2009, ブラジルで消費される食品の参照計量単位表 — グラム値はIBGEのもので、変更していません。TACOとPOFの食品の対応付けはこのプロジェクトが選定しており、その責任を負います。出典、処理、固定されたバージョンについてはNOTICE.mdを参照してください。研究で使用する場合は、CITATION.cffを参照してください。医療または栄養に関する助言ではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。