mcpField
F
foodblock-mcp

foodblock-mcp

ローカル
github.com/FoodXDevelopmentビジネス・マーケティング11 週間前に更新

foodblock-mcp について

foodblock-mcpは、AIエージェントがFoodBlockの署名付きレコードを読み書きするためのMCPサーバーです。食品関連情報を構造化プロトコルで扱い、レコードを検証できます。

主な機能

  1. 01署名付きブロックの読み書き
  2. 02食品と関連レコードの表現
  3. 03ブロック構造と署名の検証
  4. 04FoodBlockのアイデンティティチェーン管理

活用シーン

  1. 01食品のオファーや約束の記録
  2. 02構造化された食品情報の読み取り
  3. 03レコードの作成者と有効性の確認

MCP 対応

MCPサーバーを通じて、MCP対応システムが署名付きFoodBlockブロックを読み書きできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"foodxdevelopment-foodblock": {
"command": "npx",
"args": [
"-y",
"foodblock-mcp"
],
"env": {
"FOODBLOCK_URL": "<FOODBLOCK_URL>"
}
}
}
}
起動コマンドnpx -y foodblock-mcp
設定が必要な環境変数
FOODBLOCK_URLOptional FoodBlock server URL. Leave empty for standalone mode.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmfoodblock-mcp0.5.1

ツール

17

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
refsobjectいいえハッシュで他のブロックを参照します。例:{ seller: 'abc123...' }
typestringはいブロックの種類。基本型:actor、place、substance、transform、transfer、observe。サブタイプにはドット記法を使用します(例:actor.producer、substance.product、transfer.order)。
stateobjectいいえブロックのプロパティを JSON オブジェクトで指定します。例:{ name: 'Sourdough', price: 4.50 }

詳細

FoodBlock

OpenSSF Best Practices IETF Internet-Draft DOI OpenSSF Scorecard

食品に関わる見知らぬ人同士が合意するための、上司のいない最小限の言語です。それ以外はすべてデータです。

ブロックは3つのフィールドで構成され、作成者が自分のデバイス上で署名します。

{
  "type": "promise",
  "state": {
    "terms": { "price": { "minor": 450, "currency": "GBP" }, "quantity": { "value": "30", "unit": "{egg}" } },
    "at": "2026-10-15T09:00:00.000Z",
    "audience": "public",
    "seq": 4
  },
  "refs": { "author": "a1b2…", "prev": "c3d4…", "from": "a1b2…", "what": "e5f6…" }
}

これはオファーです。from側が署名します。そのIDは正規形のハッシュです(テキストでの正確な書き方の1つ:RFC 8785)。作成者は同じバイト列にEd25519(デフォルトのスイート。p256とsmも選択できます)で署名します。誰の時計も権限を決めません。相手側はその権限を確認できます。署名がなければ、何も失われたり偽造されたりすることはありません。

  • 仕様書: spec/protocol.md、FoodBlock 1.6(2026-10-19改訂)。これは規範文書です。ここにあるほかの記述と食い違う場合は、仕様書が優先されます。関連文書:protocol.json(コードで読み込むための全リスト)、正規形、トランスポート(メールが封筒で、FoodBlockが手紙です)、適合性ベクトル。プロトコルに以前のバージョンはありません。1.6が初年度です。古いデータは、プロトコルの一部ではないコンバーターを通して一度だけ取り込みます。NECESSITY.mdには、すべてのフィールド、用語、動詞、閉じた型、参照キー、不変条件について、それがなければどのベクトルが失敗するかを示しています。圧縮を試した記録はEXPERIMENTS.mdにあります。
  • 論文: FoodBlockホワイトペーパー v1.6(PDF)(DOI 10.5281/zenodo.23457910):プロトコルが存在する理由を説明しています。論文と仕様書に違いがある場合は、仕様書が最新です。

言語

7つの型を、3つのモードに分けています。

型意味
存在するものactor人、自律システムや機械、集まり、または連絡先
thing所有、発見、記述されるあらゆるもの:食品、ツール、場所、レシピ、持ち分、スキーマ
であるobserve何かが事実であるという主張
transformあるものが変化すること:入力が出力になる、またはあるものが保たれ、そのままの状態であること
transferあるものの所有者、保持者、または場所が変わること
しなければならないpromise提案または依頼された確約
してもよいgrant誰かに与えられる権限

7つの動詞が、ブロックをつなぐ参照です:updates、answers(同意を示す唯一の方法)、confirms、defeats、for、derives_from、same_as。prevとafterは、それ以前に何があったかを示します。

**厳格です。**権限を持つ4つの型(actor、promise、transfer、grant)のみが閉じた型です。それ以外の語はすべて開いた型で、ノードはそれを保存して引き継ぎます。ノードが書き込み、読み取るのは1.6の形式だけです。null値も浮動小数点数も使いません(金額は{ minor, currency }、数量は小数を表す文字列を含む{ value, unit }です)。時刻はUTCの正確な形式で、集合はソートして記述し、すべてのブロックはキーのチェーンに属します(state.seq、refs.prev)。ブロックを修復することはありません。拒否し、作成者が新しいブロックに署名します。

3 種類のピア

すべてのピアは、それ自体でプロトコルを話します。電話、ロボットキッチン、配送バン、ドローン、スマート冷蔵庫、センサーなどです。機械も人と同じようにピアです。あらゆる食品機械は SDK を使い、独自の ID を作成し、保有する許可の範囲内で動作できます。各ピアは 3 種類のサイズのいずれかです(protocol.json の peers)。

  • マイクロはデバイスです。土壌センサーや冷蔵庫センサー、はかり、オーブン、ロボットの本体などです。正規形式、SHA-256、Ed25519、書き込みチェック、独自のチェーン、およびこれらのベクトルが必要です。実世界で動作するものは、許可も確認し、停止指示が届いたらすぐに停止します。
  • エッジはローカルの運用者です。農場、キッチン、バン、店舗にあるコンピューターなどです。ローカルでの探索、近くのピアとのプルおよびプッシュ、自身の取引に対する約束の集約機能を備え、オフラインでも動作し続けます。
  • ノードは永続的なレベルです。封印されたエンベロープとコミットメントを追加し、誰に対してもプルとプッシュを提供し、署名付きの応答とインターネット探索、保持するすべての記録の集約機能を備えます。

ノードを持つのは人と機械だけです。企業、世帯、コミュニティは、それらのノードからなるサークルです。サークルには ID と記録があり、メンバーのノードが保持しますが、サークル自身がノードを持つことはありません。

内容

フォルダー内容
spec/プロトコル、各種リスト、正規形式、トランスポート、プロファイル、ベクトル、オラクル、論文
sdk/javascriptリファレンス SDK
sdk/rust唯一のコア。すべてのルールを Rust クレート、C ライブラリ、WebAssembly として実装
sdk/python、sdk/go、sdk/swift、sdk/kotlin他の言語で同じプロトコルを実装。コアを薄くラップし、それぞれがすべてのベクトルセクションを実行
server/ノード。ブロック用の Postgres、署名付きプルとプッシュ用の HTTP、および .well-known/foodblock
mcp/MCP サーバー。あらゆる自律システムが署名付きブロックを読み書きできます
cli/fb:ID とデバイスキーを作成し、キーのチェーンにブロックを書き込み、チェック、検証、署名確認を行い、古いデータを一度だけ変換
sql/schema.sqlノードのストア。追記専用で、各ブロックを受信時のまま正確に保持
test/複数言語にまたがる正規形式のベクトルと、仕様を各 SDK にコピーするスクリプト

各 SDK の README には、対応するプロファイルが記載されています。

自律システム向け

FoodBlock は、人、自律システム、機械が一緒に使えるように構築されています。自律システムは FoodBlock を直接読み書きできます。

クイックスタート

const fb = require('@foodxdev/foodblock') // in this repository: require('./sdk/javascript/src/index.cjs')
const keys = fb.generateKeypair()                  // one key is the whole ceremony
const me = fb.identity.genesis(keys)               // who you are: its hash is your id
const eggs = fb.write('thing', { kind: 'eggs', name: 'Free-range eggs' }, {}, { author: me.hash, key: keys, held: [me] })
fb.valid(eggs, [me])                               // [] : sound, signed by a key of its author, in its chain

ターミナルから:

cd cli && npm install
node bin/fb.js init me.json
node bin/fb.js create thing eggs --state '{"name":"Free-range eggs"}' --identity me.json

ノード間

誰でも、自分が署名したものすべてをノードから持ち出せます。ピアは2つのメッセージ(spec/modules/nodes.md)を使ってブロックを交換します。

  • Pull { since, limit, filter, heads }:到着番号以降の一致するものを、古い順にすべて取得します。順位付けはしません。 heads: true の場合、最新のブロックのみを返します。署名付きの pull は要求者が誰かを証明するため、その要求者宛てに封印されたコピーも取得できます。
  • Push { messages, for }:ノードは、作成者が署名したものと、所有者の受け入れルールで許可されたものを保持します。 前のブロックが見つからないブロックは保留されます。同じキーの2つのブロックが同じ prev を指定している場合、虚偽の証拠になります。
  • 署名付きリクエストには counter または challenge(GET /challenge)が含まれ、時刻は含まれません。
  • すべての応答には、ノードの保有者(人またはマシン)の鍵で署名します。
  • ディスカバリー: .well-known/foodblock は、ノードの識別情報、保持する内容、誰を代表するか、受け入れルールを示します。ローカルネットワークでは、より短い形式で告知できます。

docker compose -f server/docker-compose.yml up で起動するか、DATABASE_URL に指定した Postgres と、NODE_KEY に指定した fb key で作成したキーファイルを用意して、cd server && npm install && npm start を実行してください。

テスト

内容コマンド
適合性ベクターnode spec/run-vectors.cjs
SDK が仕様をそのまま実装していることnode test/sync-spec.cjs --check
JS SDKcd sdk/javascript && npm test
Python SDKcd sdk/python && python3 -m unittest discover -s tests
Go SDKcd sdk/go && CGO_ENABLED=0 go test ./...
Swift SDKsdk/swift/scripts/build-xcframework.sh --macos && swift test(ルートディレクトリで実行)
Rust コアcd sdk/rust && cargo test
Kotlin SDKcd sdk/kotlin && ./gradlew :foodblock:test(JDK 17 が必要です);バンドルライブラリのチェック:scripts/build-natives.sh jvm && ./gradlew :foodblock:testBundled
仕様テキストだけをもとに書かれたオラクルnode spec/oracle/run.cjs
すべての fold、コアとオラクルの照合node test/audit/run.cjs
一覧にあるものに未使用または未テストのものがないことnode test/necessity.cjs(完全な計測には10分かかります:node tools/necessity.cjs)
保存済みブロックと現在のコアの照合node tools/replay-check.cjs <export>(件数と理由コードのみ;DISTRIBUTION.md を参照)
ノードcd server && npm test(インメモリ Postgres;実際のものを使う場合は TEST_DATABASE_URL を設定してください)
MCP サーバーcd mcp && npm test
CLIcd cli && npm test

ライセンス

MIT。著作権者は、このリポジトリを所有する FOODX WORLD LIMITED(イングランドおよびウェールズ、会社番号 16406719)です。このプロトコルの実装に許可は不要です。

変更の提案方法とバージョンの仕組みについては、GOVERNANCE.md をご覧ください。互いにどう接するか、および許可されないコンテンツについては、CODE_OF_CONDUCT.md をご覧ください。脆弱性の報告については、SECURITY.md をご覧ください。

FoodBlock の引用については、CITATION.cff をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。