From 64e81869eaabcd1d4cb694428f49ff6a52755ae9 Mon Sep 17 00:00:00 2001 From: Jarian Cottingham Date: Sat, 31 Jan 2026 13:10:59 -0600 Subject: [PATCH] Restore /facts endpoint and maintain all MCP Server functionality --- MCPServer/server.py | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/MCPServer/server.py b/MCPServer/server.py index 0e49706..4229a49 100644 --- a/MCPServer/server.py +++ b/MCPServer/server.py @@ -325,6 +325,59 @@ def update_company_facts(): "facts": facts }) +# Restore the original /facts endpoint +@app.route("/facts", methods=["POST"]) +def get_facts(): + """ + Get the best set of facts about a question + """ + data = request.get_json() + question = data.get("question") + + if not question: + return jsonify({"error": "Missing 'question' in request body"}), 400 + + # Query ChromaDB for relevant articles + results = query_chroma(question, n_results=10) + + if "error" in results: + return jsonify({"error": results["error"]}), 500 + + # Process results to create diverse article set + mcp_results = [] + for doc, score, meta in zip( + results.get("documents", [[]])[0], + results.get("distances", [[]])[0], + results.get("metadatas", [[]])[0]): + mcp_results.append({ + "document": doc, + "score": float(score), + "metadata": meta + }) + + # Apply diversity filtering + diverse_results = get_diverse_articles(mcp_results, 5) + + # Combine with company facts if question mentions a company + company_facts_result = {} + question_lower = question.lower() + + # Check if question mentions any known company + for company_name in company_facts.keys(): + if company_name.lower() in question_lower: + company_facts_result = company_facts[company_name] + break + + # Return combined results + response_data = { + "question": question, + "articles": diverse_results, + "company_facts": company_facts_result, + "timestamp": datetime.now().isoformat() + } + + return jsonify(response_data) + @app.route("/health", methods=["GET"]) def health(): """Health check endpoint"""