mcp-open-food-facts
Version:
MCP server to use Open Food Facts API
59 lines (49 loc) • 1.63 kB
text/typescript
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);
}