Spaces:
Sleeping
Sleeping
| # 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() | |