# mcp_server.py import sys import json import pandas as pd from parser import parse_ingredients from spoilage_model import predict_spoilage from carbon_model import estimate_carbon from meal_planner import generate_meal_plan # Load Excel dataset for carbon model once carbon_df = pd.read_excel("SuEatableLife_Food_Fooprint_database.xlsx", sheet_name=0) carbon_data = carbon_df.to_dict(orient="records") def handle_tool_call(tool_name, arguments): if tool_name == "parse_ingredients": user_input = arguments.get("text", "") return parse_ingredients(user_input) elif tool_name == "predict_spoilage": items = arguments.get("items", []) return predict_spoilage(items) elif tool_name == "estimate_carbon": items = arguments.get("items", []) return [estimate_carbon(item, carbon_data) for item in items] elif tool_name == "generate_meal_plan": items = arguments.get("items", []) spoilage = arguments.get("spoilage", []) carbon = arguments.get("carbon", []) parsed = arguments.get("parsed", []) api_key = arguments.get("api_key", []) # api key return generate_meal_plan(items, spoilage, carbon, parsed, api_key) else: return {"error": f"Unknown tool: {tool_name}"} def main(): while True: line = sys.stdin.readline() if not line: break try: request = json.loads(line) tool_name = request.get("tool") arguments = request.get("input", {}) result = handle_tool_call(tool_name, arguments) response = { "id": request.get("id"), "output": result, } print(json.dumps(response), flush=True) except Exception as e: error_response = { "error": str(e) } print(json.dumps(error_response), flush=True) if __name__ == "__main__": main()