Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SWMM-MCPSummarize the peak runoff and flooding results for the 'CityCenter' model."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SWMM-MCP
MCP Toolbox for SWMM
Setup
Clone this repository
Install dependencies with:
uv syncUsage
Put the following json block into an MCP client (e.g. Claude Desktop). Though, some clients may have a different interface for configuring MCP servers.
If you are currently in the root folder of this project in your IDE, you can find your full directory path by entering the command pwd.
{
"mcpServers": {
"SWMM": {
"command": "uv",
"args": [
"run",
"--directory",
"/<path/to/directory>/SWMM-MCP",
"server.py"
]
}
}
}On Windows it may look something like this:
{
"mcpServers": {
"SWMM": {
"command": "uv",
"args": [
"run",
"--directory",
"C:\\Users\\Jacob\\Documents\\SWMM-MCP",
"server.py"
]
}
}
}Example system prompt if allowed by your client:
You are an expert SWMM (Storm Water Management Model) assistant. You have access to tools to inspect and analyze SWMM models. Use the available tools to answer questions accurately.Inventory
Tools
Tool | Description |
| Returns a list of available models in the server. |
| Duplicates a model and returns the new model name. Useful for testing scenarios. |
| Returns general information about a model. |
| Returns a list of sections in the input file for a given model. |
| Returns the contents of a section of the input file for a given model. |
| Replace a junction with a cylindrical storage node of specified volume. |
| Changes the diameter of a circular conduit in the model. |
| Runs a model. |
| Returns a list of sections in the report file for a given model. |
| Returns the contents of a section of the report file for a given model. |
| Returns a list of variables in the output file for a given model. |
| Returns a list of objects in the output file for a given model and object type. |
| Modify the model's storm event to an 24-hour SCS Type 2 design storm of a given depth. |
Apps
App | Description |
| Prompts the user with a UI where they can upload a SWMM model. |
| Displays a full timeseries plot to the user. |
| Creates an interactive map of the SWMM model and displays it to the user. |
| Displays a timeseries plot of the model's rainfall to the user. |
Prompts
Name | Description |
| Which models are available? |
| Tell me about the model. |
| How many pipes and junctions does it have? |
| What's the largest pipe in the network? |
| Show me my network |
| Run a model for me |
| Compare flow through the largest pipe for a 2-inch vs 4-inch storm. |
| Which nodes flood under a 4-inch storm? |
| Suggest detention locations to reduce downstream flooding. |
| Add a storage unit at a node and rerun. |
| Show node flow during the simulation. |
| Compare base and modified scenarios. |
| Plot base vs. modified outfall hydrographs. |
Troubleshooting
Adding server to client failure
For macOS users, you may run into an issue of the client being unable to find the path uv is installed. To resolve this issue, you can create a symlink to one of the paths the client already checks.
To first find where uv is installed, in your terminal run:
which uvwhich will return something like:
/Users/<user-name>/.local/bin/uv
Then, to create a symlink, in your terminal run:
sudo ln -s ~/.local/bin/uv /usr/local/bin/uvwhere ~/.local/bin/uv is where uv is installed and /usr/local/bin/uv is part of the path your client checks. The error logs from the client should contain the paths it checks for uv.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.