SWMM-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_modelsB | Returns a list of available models in the server. |
| duplicate_modelB | Duplicates a model and returns the new model name. Use this for testing scenarios. |
| prompt_model_uploadB | Prompts the user with a UI where they can upload a SWMM model. |
| upload_modelB | Uploads a new SWMM model to the server. The content should be the full .inp file content. |
| get_model_infoC | Returns general information about a model. Be sure to enter the model name exactly as it appears in the list. |
| get_input_sectionsC | Returns a list of sections in the input file for a given model. |
| get_input_infoA | Returns the contents of a section of the input file for a given model. Do NOT include brackets in the section name. Refer to the tool get_input_sections for a list of sections. |
| add_storageB | Replace a junction with a cylindrical storage node of specified volume. Unless specified, it will start empty. Returns success message or error description. |
| change_conduitC | Changes the diameter of a circular conduit in the model. |
| run_modelD | Runs a model. |
| get_report_sectionsB | Returns a list of sections in the report file for a given model. |
| get_report_infoC | Returns the contents of a section of the report file for a given model. |
| get_output_variablesB | Returns a list of variables in the output file for a given model. |
| get_output_objectsB | Returns a list of objects in the output file for a given model and object type. object_type: the type of object to return. E.g. "node", "link", "subcatchment". Refer to the tool "model_output_variables" for a list of types. |
| plot_output_dataC | Displays a full timeseries plot to the user. Returns a summary of the data. model_names: List of model names to plot. object_type: the type of object to return. E.g. "node", "link", "subcatchment". Refer to the tool "get_output_variables" for a list of types. object_label: the label of the object in the output file. E.g. "J1", "S1" variable: the variable to return. E.g. "flow". Refer to the tool "get_output_variables" for a list of variables. |
| plot_model_mapC | Creates an interactive map of the SWMM model using Plotly and displays it to the user. Returns whether the operation was successful. |
| plot_rainfallC | Displays a timeseries plot of the model's rainfall to the user. Returns the name of the timeseries or an error message. |
| change_stormC | Modify the model's storm event to an 24-hour SCS Type 2 design storm of a given depth. depth: Total rainfall depth in inches :return: Name of the new storm or error message |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| list_models | Which models are available? |
| describe_model | Tell me about the model. |
| get_pipes_and_junctions | How many pipes and junctions does it have? |
| largest_pipe | What's the largest pipe in the network? |
| show_network | Show me my network |
| run_model | Run a model for me |
| compare_flow_largest_pipe | Compare flow through the largest pipe for a 2-inch vs 4-inch storm. |
| nodes_flood_4_inch | Which nodes flood under a 4-inch storm? |
| detention_recommendations | Suggest detention locations to reduce downstream flooding. |
| add_storage_and_rerun | Add a storage unit at a node and rerun. |
| node_flow_timeseries | Show node flow during the simulation. |
| compare_base_to_modified | Compare base and modified scenarios. |
| outfall_hydrograph_comparison | Plot base vs. modified outfall hydrographs. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| visualization_view | Interactive visualization viewer. |
| upload_view | Interactive model upload interface. |
TDQS
Scored across 18 tools
Most tools have distinct purposes targeting specific SWMM operations like model management, data retrieval, and plotting. However, some overlap exists between 'get_input_info'/'get_input_sections' and 'get_report_info'/'get_report_sections', which could cause confusion in selecting the right file section tool. Overall, descriptions help clarify, but minor ambiguity remains.
Tool names follow a consistent verb_noun pattern throughout, such as 'list_models', 'run_model', and 'plot_output_data'. There are minor deviations like 'add_storage' (verb_noun) and 'change_conduit' (verb_noun) fitting the pattern, but 'prompt_model_upload' is slightly longer and less standard. Overall, naming is mostly predictable and readable.
With 18 tools, the count is slightly high but reasonable for a SWMM modeling server covering model upload, modification, running, and data analysis. It includes essential operations without being overly bloated, though it borders on heavy. The tools are well-scoped for the domain, with each serving a clear function.
The tool set provides complete coverage for SWMM modeling workflows, including CRUD-like operations (upload, duplicate, run), data retrieval (input/output/report sections), modifications (change storm, conduit, storage), and visualization (plotting maps, rainfall, output). There are no obvious gaps; agents can perform full lifecycle tasks from model setup to analysis without dead ends.