UNPKG

mcp-open-food-facts

Version:

MCP server to use Open Food Facts API

59 lines (49 loc) 1.63 kB
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import { searchProduct, getProduct, getProductByBarcode } from "./services/open-food-facts.services.js"; console.log('🚀 Starting OpenFoodFacts MCP Server...'); const server = new McpServer({ name: "OpenFoodFacts MCP Server", version: "1.0.0" }); console.log('📦 Loading tools...'); server.tool("search-product-by-name", "Search for products by name", { query: z.string() }, async ({ query }) => { const products = await searchProduct(query); return { content: [{ type: "text", text: String(products) }] } } ); server.tool("search-product-by-barcode", "Search for products by barcode", { barcode: z.string() }, async ({ barcode }) => { const product = await getProductByBarcode(barcode); return { content: [{ type: "text", text: String(product) }] } } ); server.tool("get-product-by-id", "Get product by id", { id: z.string() }, async ({ id }) => { const product = await getProduct(id); return { content: [{ type: "text", text: String(product) }] } } ); console.log('🔌 Starting server...'); // Start receiving messages on stdin and sending messages on stdout const transport = new StdioServerTransport(); try{ await server.connect(transport); console.log('🔌 Server started successfully'); } catch (error) { console.error('🔌 Server failed to start:', error); }