Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"io-github-foodxdevelopment-foodblock-mcp": {
"args": [
"-y",
"foodblock"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A content-addressable protocol for universal food data.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y 'foodblock' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked foodblock against OSV.dev.
Click any tool to inspect its schema.
blocksCollection of all FoodBlock blocks in the server
/blocks
blocks_by_typeFilter blocks by type
/blocks?type={type}
blocks_headsGet only head blocks (latest versions)
/blocks?heads=true
chainRetrieve the provenance chain for a block
/chain/{hash}
forwardFind all blocks that reference a given block
/forward/{hash}
discoveryServer metadata and federation discovery endpoint
/.well-known/foodblock
templatesList available block templates
/blocks?type=observe.template
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in data
Manage Supabase projects — databases, auth, storage, and edge functions
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
The Apify MCP server enables your AI agents to extract data from social media, search engines, maps, e-commerce sites, or any other website using thousands of ready-made scrapers, crawlers, and automation tools available on the Apify Store.
An official Qdrant Model Context Protocol (MCP) server implementation
MCP Security Weekly
Get CVE alerts and security updates for io.github.FoodXDevelopment/foodblock-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A content-addressable protocol for universal food data.
One axiom. Three fields. Six base types. Every food industry operation.
{
"type": "substance.product",
"state": { "name": "Sourdough", "price": 4.50, "allergens": { "gluten": true } },
"refs": { "seller": "a1b2c3...", "inputs": ["flour_hash", "water_hash", "yeast_hash"] }
}
id = SHA-256(canonical(type + state + refs))
The food industry spans 14 sectors — farming, processing, distribution, retail, hospitality, regulation, sustainability, and more. Every sector models food data differently. There is no shared primitive.
FoodBlock is that primitive. One data structure that can represent a farm harvest, a restaurant menu item, a food safety certification, a cold chain reading, a grocery order, or a consumer review. Same three fields. Same hashing. Same protocol.
Every FoodBlock has exactly three fields:
| Field | Type | Description |
|---|---|---|
type | string | What kind of block (dot-notated subtypes) |
state | object | The block's data (schemaless, any valid JSON) |
refs | object | Named references to other blocks by hash |
Identity is derived from content: SHA-256(canonical(type + state + refs)). Same content always produces the same hash, regardless of where or when the block is created.
Entities — things that exist:
Actions — things that happen:
Subtypes via dot notation: actor.producer, substance.product, observe.review, transfer.order.
npm install foodblock
fb()The fastest way to use FoodBlock. Describe food in plain English, get structured blocks back.
const { fb } = require('foodblock')
fb("Sourdough bread, $4.50, organic, contains gluten")
// => { type: 'substance.product', state: { name: 'Sourdough bread', price: { value: 4.5, unit: 'USD' }, organic: true, allergens: { gluten: true } }, blocks: [...] }
fb("Amazing pizza at Luigi's, 5 stars")
// => { type: 'observe.review', state: { name: "Luigi's", rating: 5, text: "..." }, blocks: [...] }
fb("Green Acres Farm, 200 acres, organic wheat in Oregon")
// => { type: 'actor.producer', state: { name: 'Green Acres Farm', acreage: 200, crop: 'organic wheat', region: 'Oregon' }, blocks: [...] }
fb("Walk-in cooler temperature 4 celsius")
// => { type: 'observe.reading', state: { temperature: { value: 4, unit: 'celsius' } }, blocks: [...] }
fb("Ordered 50kg flour from Stone Mill")
// => { type: 'transfer.order', state: { weight: { value: 50, unit: 'kg' } }, blocks: [...] }
No types to memorize. No schemas to configure. No API calls — fb() is pure pattern matching, runs locally, costs nothing.
const fb = require('foodblock')
// Create a farm
const farm = fb.create('actor.producer', { name: 'Green Acres Farm' })
// => { hash: 'e3b0c4...', type: 'actor.producer', state: {...}, refs: {} }
// Create a product with provenance
const wheat = fb.create('substance.ingredient', { name: 'Organic Wheat' }, { source: farm.hash })
const flour = fb.create('substance.product', { name: 'Stoneground Flour' }, { source: wheat.hash })
const bread = fb.create('substance.product', {
name: 'Sourdough',
price: 4.50
}, {
seller: bakery.hash,
inputs: [flour.hash, water.hash, yeast.hash]
})
// Update (creates new block, old one preserved)
const updated = fb.update(bread.hash, 'substance.product', {
name: 'Sourdough',
price: 5.00
}, { seller: bakery.hash })
// updated.refs.updates === bread.hash
... [View full README on GitHub](https://github.com/FoodXDevelopment/foodblock#readme)