We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mashrur-rahman-fahim/fleetmind-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""
FleetMind MCP Server with Authentication Proxy
Launches both the FastMCP server and the authentication proxy.
This script:
1. Starts FastMCP server on port 7861 (internal)
2. Starts authentication proxy on port 7860 (public)
3. Handles graceful shutdown of both processes
Usage:
python start_with_proxy.py
"""
import subprocess
import sys
import time
import signal
import os
from pathlib import Path
# Process handles
fastmcp_process = None
proxy_process = None
def signal_handler(sig, frame):
"""Handle Ctrl+C gracefully"""
print("\n\nShutting down FleetMind MCP Server...")
if proxy_process:
print(" -> Stopping proxy...")
proxy_process.terminate()
try:
proxy_process.wait(timeout=5)
except subprocess.TimeoutExpired:
proxy_process.kill()
if fastmcp_process:
print(" -> Stopping FastMCP server...")
fastmcp_process.terminate()
try:
fastmcp_process.wait(timeout=5)
except subprocess.TimeoutExpired:
fastmcp_process.kill()
print("[OK] FleetMind MCP Server stopped.")
sys.exit(0)
def main():
global fastmcp_process, proxy_process
# Register signal handler
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
print("\n" + "=" * 70)
print("FleetMind MCP Server with Multi-Tenant Authentication")
print("=" * 70)
print("Starting components:")
print(" 1. FastMCP Server (port 7861) - Internal")
print(" 2. Auth Proxy (port 7860) - Public")
print("=" * 70 + "\n")
# Get Python executable
python_exe = sys.executable
# Start FastMCP server
print("[1/2] Starting FastMCP server on port 7861...")
try:
# Don't capture output - let it show in console
fastmcp_process = subprocess.Popen(
[python_exe, "app.py"]
)
print("[OK] FastMCP server starting (output below)...")
except Exception as e:
print(f"[ERROR] Failed to start FastMCP server: {e}")
sys.exit(1)
# Wait a bit for FastMCP to initialize
print(" Waiting for FastMCP to initialize...")
time.sleep(3)
# Check if FastMCP is still running
if fastmcp_process.poll() is not None:
print("[ERROR] FastMCP server failed to start")
print(" Check the error messages above")
sys.exit(1)
print("[OK] FastMCP server running")
# Start proxy
print("\n[2/2] Starting authentication proxy on port 7860...")
try:
# Don't capture output - let it show in console
proxy_process = subprocess.Popen(
[python_exe, "proxy.py"]
)
print("[OK] Auth proxy starting (output below)...")
except Exception as e:
print(f"[ERROR] Failed to start proxy: {e}")
if fastmcp_process:
fastmcp_process.terminate()
sys.exit(1)
# Wait a bit for proxy to initialize
time.sleep(2)
# Check if proxy is still running
if proxy_process.poll() is not None:
print("[ERROR] Proxy failed to start")
if fastmcp_process:
fastmcp_process.terminate()
sys.exit(1)
print("[OK] Auth proxy running")
print("\n" + "=" * 70)
print("[OK] FleetMind MCP Server is READY!")
print("=" * 70)
print(f"Connect to: http://localhost:7860/sse")
print(f"Claude Desktop config:")
print(f' "args": ["mcp-remote", "http://localhost:7860/sse?api_key=YOUR_KEY"]')
print("=" * 70)
print("\n[AUTH] Multi-tenant authentication is ENABLED")
print(" Each connection's API key will be captured automatically\n")
print("Press Ctrl+C to stop...\n")
# Monitor both processes
try:
while True:
# Check FastMCP
if fastmcp_process.poll() is not None:
print("[ERROR] FastMCP server stopped unexpectedly")
if proxy_process:
proxy_process.terminate()
sys.exit(1)
# Check proxy
if proxy_process.poll() is not None:
print("[ERROR] Proxy stopped unexpectedly")
if fastmcp_process:
fastmcp_process.terminate()
sys.exit(1)
# Read and display logs (non-blocking)
# This keeps the terminal responsive
time.sleep(1)
except KeyboardInterrupt:
signal_handler(signal.SIGINT, None)
if __name__ == "__main__":
# Check if required files exist
if not Path("app.py").exists():
print("[ERROR] app.py not found")
sys.exit(1)
if not Path("proxy.py").exists():
print("[ERROR] proxy.py not found")
sys.exit(1)
main()