Skip to main content
Glama

StarTree MCP Server for Apache Pinot

Official
by startreedata
Apache 2.0
11
  • Apple
  • Linux
simple_query_builtin.py5.2 kB
#!/usr/bin/env python3 """ Simple query script using only built-in Python modules No external dependencies required! """ import json import urllib.parse import urllib.request def query_mcp_server(): """Query the MCP server using built-in urllib""" print("🔍 Querying MCP Pinot Server (Built-in Python)") print("=" * 50) base_url = "http://127.0.0.1:8080" # Test 1: List available tools print("1️⃣ Listing available tools...") try: with urllib.request.urlopen(f"{base_url}/api/tools/list") as response: data = json.loads(response.read().decode()) print("✅ Available tools:") for tool in data.get("tools", []): print(f" • {tool['name']}: {tool['description']}") except Exception as e: print(f"❌ Error: {e}") print() # Test 2: List all tables print("2️⃣ Listing all Pinot tables...") try: request_data = {"name": "list-tables", "arguments": {}} data = json.dumps(request_data).encode("utf-8") req = urllib.request.Request( f"{base_url}/api/tools/call", data=data, headers={"Content-Type": "application/json"}, ) with urllib.request.urlopen(req) as response: result = json.loads(response.read().decode()) tables = result.get("result", []) print(f"✅ Found {len(tables)} tables:") for i, table in enumerate(tables, 1): print(f" {i:2d}. {table}") except Exception as e: print(f"❌ Error: {e}") print() # Test 3: Test connection print("3️⃣ Testing Pinot connection...") try: request_data = {"name": "test-connection", "arguments": {}} data = json.dumps(request_data).encode("utf-8") req = urllib.request.Request( f"{base_url}/api/tools/call", data=data, headers={"Content-Type": "application/json"}, ) with urllib.request.urlopen(req) as response: result = json.loads(response.read().decode()) conn_result = result.get("result", {}) print(f"✅ Connection test: {conn_result.get('connection_test', False)}") print(f"✅ Query test: {conn_result.get('query_test', False)}") print(f"✅ Tables count: {conn_result.get('tables_count', 0)}") except Exception as e: print(f"❌ Error: {e}") print() # Test 4: Count records in airlineStats print("4️⃣ Counting records in airlineStats...") try: request_data = { "name": "read-query", "arguments": { "query": "SELECT COUNT(*) as total_records FROM airlineStats" }, } data = json.dumps(request_data).encode("utf-8") req = urllib.request.Request( f"{base_url}/api/tools/call", data=data, headers={"Content-Type": "application/json"}, ) with urllib.request.urlopen(req) as response: result = json.loads(response.read().decode()) query_result = result.get("result", []) if query_result and len(query_result) > 0: count = query_result[0].get("total_records", 0) print(f"✅ airlineStats has {count:,} records") else: print("⚠️ No results returned") except Exception as e: print(f"❌ Error: {e}") print() # Test 5: Sample data from githubEvents print("5️⃣ Getting sample data from githubEvents...") try: request_data = { "name": "read-query", "arguments": { "query": "SELECT id, type, created_at FROM githubEvents LIMIT 3" }, } data = json.dumps(request_data).encode("utf-8") req = urllib.request.Request( f"{base_url}/api/tools/call", data=data, headers={"Content-Type": "application/json"}, ) with urllib.request.urlopen(req) as response: result = json.loads(response.read().decode()) query_result = result.get("result", []) if query_result: print("✅ Sample GitHub events:") for i, event in enumerate(query_result[:3], 1): event_id = event.get("id") event_type = event.get("type") event_date = event.get("created_at") print( f" {i}. ID: {event_id}, Type: {event_type}, " f"Date: {event_date}" ) else: print("⚠️ No results returned") except Exception as e: print(f"❌ Error: {e}") print() print("🎉 Query testing completed!") print("=" * 50) print() print("💡 Usage Summary:") print("• Server is running at: http://127.0.0.1:8080") print("• REST API endpoints:") print(" - GET /api/tools/list") print(" - POST /api/tools/call") print("• All queries work with built-in Python!") if __name__ == "__main__": query_mcp_server()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/startreedata/mcp-pinot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server