mcp-open-food-facts
Version:
MCP server to use Open Food Facts API
39 lines (38 loc) • 1.53 kB
JavaScript
import { McpServer } 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);
}