Skip to main content
Glama
fastmcp_server.py3.67 kB
"""FastMCP server implementation for Aerospace flight planning tools. Loads environment from .env before importing tools so feature flags and API keys are available at import time. """ import logging import sys # Load environment from .env before importing tool modules try: from dotenv import load_dotenv load_dotenv() except Exception: pass from fastmcp import FastMCP from .tools.aerodynamics import ( airfoil_polar_analysis, calculate_stability_derivatives, get_airfoil_database, wing_vlm_analysis, ) from .tools.agents import ( format_data_for_tool, select_aerospace_tool, ) from .tools.atmosphere import ( get_atmosphere_profile, wind_model_simple, ) # Import all tool modules from .tools.core import ( calculate_distance, get_aircraft_performance, get_system_status, plan_flight, search_airports, ) from .tools.frames import ( ecef_to_geodetic, geodetic_to_ecef, transform_frames, ) from .tools.optimization import ( genetic_algorithm_optimization, monte_carlo_uncertainty_analysis, optimize_thrust_profile, particle_swarm_optimization, porkchop_plot_analysis, trajectory_sensitivity_analysis, ) from .tools.orbits import ( calculate_ground_track, elements_to_state_vector, hohmann_transfer, orbital_rendezvous_planning, propagate_orbit_j2, state_vector_to_elements, ) from .tools.propellers import ( get_propeller_database, propeller_bemt_analysis, uav_energy_estimate, ) from .tools.rockets import ( estimate_rocket_sizing, optimize_launch_angle, rocket_3dof_trajectory, ) # Configure logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # Initialize FastMCP server mcp = FastMCP("aerospace-mcp") # Register all tools # Core flight planning tools mcp.tool(search_airports) mcp.tool(plan_flight) mcp.tool(calculate_distance) mcp.tool(get_aircraft_performance) mcp.tool(get_system_status) # Atmospheric tools mcp.tool(get_atmosphere_profile) mcp.tool(wind_model_simple) # Coordinate frame tools mcp.tool(transform_frames) mcp.tool(geodetic_to_ecef) mcp.tool(ecef_to_geodetic) # Aerodynamics tools mcp.tool(wing_vlm_analysis) mcp.tool(airfoil_polar_analysis) mcp.tool(calculate_stability_derivatives) mcp.tool(get_airfoil_database) # Propeller/UAV tools mcp.tool(propeller_bemt_analysis) mcp.tool(uav_energy_estimate) mcp.tool(get_propeller_database) # Rocket tools mcp.tool(rocket_3dof_trajectory) mcp.tool(estimate_rocket_sizing) mcp.tool(optimize_launch_angle) # Orbital mechanics tools mcp.tool(elements_to_state_vector) mcp.tool(state_vector_to_elements) mcp.tool(propagate_orbit_j2) mcp.tool(calculate_ground_track) mcp.tool(hohmann_transfer) mcp.tool(orbital_rendezvous_planning) # Optimization tools mcp.tool(optimize_thrust_profile) mcp.tool(trajectory_sensitivity_analysis) mcp.tool(genetic_algorithm_optimization) mcp.tool(particle_swarm_optimization) mcp.tool(porkchop_plot_analysis) mcp.tool(monte_carlo_uncertainty_analysis) # Agent tools for helping users mcp.tool(format_data_for_tool) mcp.tool(select_aerospace_tool) def run(): """Main entry point for the FastMCP server.""" # Check for SSE mode if len(sys.argv) > 1 and sys.argv[1] == "sse": host = sys.argv[2] if len(sys.argv) > 2 else "localhost" port = int(sys.argv[3]) if len(sys.argv) > 3 else 8001 logger.info(f"Starting FastMCP server in SSE mode on {host}:{port}") mcp.run(transport="sse", host=host, port=port) else: logger.info("Starting FastMCP server in stdio mode") mcp.run() if __name__ == "__main__": run()

Implementation Reference

Latest Blog Posts

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/cheesejaguar/aerospace-mcp'

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