import os
from flask import Flask, request, jsonify
from pyhive import hive
app = Flask(__name__)
def get_hive_connection():
"""Get a connection to Hive."""
host = os.environ.get("HIVESERVER2_HOST")
port = int(os.environ.get("HIVESERVER2_PORT", 10000))
user = os.environ.get("HIVESERVER2_USER")
password = os.environ.get("HIVESERVER2_PASSWORD")
return hive.connect(host=host, port=port, username=user, password=password)
@app.route("/query", methods=["POST"])
def query():
"""Execute a query on Hive."""
data = request.get_json()
query_str = data.get("query")
if not query_str:
return jsonify({"error": "Missing query"}), 400
try:
conn = get_hive_connection()
cursor = conn.cursor()
cursor.execute(query_str)
results = cursor.fetchall()
column_names = [desc[0] for desc in cursor.description]
conn.close()
return jsonify({"columns": column_names, "rows": results})
except Exception as e:
return jsonify({"error": str(e)}), 500
def main():
"""Start the MCP server."""
app.run(host="0.0.0.0", port=5000)
if __name__ == "__main__":
main()