Skip to main content
Glama
XRDS76354

SUMO-MCP Server

by XRDS76354
sim_gen.py2.45 kB
import os from mcp_tools.network import netgenerate from mcp_tools.route import random_trips, duarouter from mcp_tools.simulation import run_simple_simulation from mcp_tools.analysis import analyze_fcd def sim_gen_workflow(output_dir: str, grid_number: int = 3, steps: int = 100) -> str: """ Executes the Simulation Generation & Evaluation workflow: 1. Generate Grid Network 2. Generate Random Trips 3. Compute Routes 4. Create Config 5. Run Simulation 6. Analyze Results """ if not os.path.exists(output_dir): os.makedirs(output_dir) net_file = os.path.join(output_dir, "grid.net.xml") trips_file = os.path.join(output_dir, "trips.xml") route_file = os.path.join(output_dir, "routes.xml") sumocfg_file = os.path.join(output_dir, "sim.sumocfg") fcd_file = os.path.join(output_dir, "fcd.xml") # 1. Generate Net res = netgenerate(net_file, grid=True, grid_number=grid_number) if "failed" in res.lower(): return f"Step 1 Failed: {res}" # 2. Generate Trips res = random_trips(net_file, trips_file, end_time=steps) if "failed" in res.lower(): return f"Step 2 Failed: {res}" # 3. Generate Routes res = duarouter(net_file, trips_file, route_file) if "failed" in res.lower(): return f"Step 3 Failed: {res}" # 4. Create Config # We use absolute paths for safety or relative if SUMO expects it. # Usually relative to config file is best. try: with open(sumocfg_file, "w") as f: f.write(f"""<configuration> <input> <net-file value="{os.path.basename(net_file)}"/> <route-files value="{os.path.basename(route_file)}"/> </input> <time> <begin value="0"/> <end value="{steps}"/> </time> <output> <fcd-output value="{os.path.basename(fcd_file)}"/> </output> </configuration>""") except Exception as e: return f"Step 4 Failed: Could not write config file. {e}" # 5. Run Sim res = run_simple_simulation(sumocfg_file, steps) if "error" in res.lower(): return f"Step 5 Failed: {res}" # 6. Analyze # FCD file should exist after sim if not os.path.exists(fcd_file): return "Step 6 Failed: FCD file not generated." res_analysis = analyze_fcd(fcd_file) return f"Workflow Completed Successfully.\n\nSimulation Output:\n{res}\n\nAnalysis Result:\n{res_analysis}"

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/XRDS76354/SUMO-MCP-Server'

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