ecoChef / mcp_server.py
tejasashinde's picture
Added project
d9d1fcf
# 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()