swatplus-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 |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| find_procedureA | Locate a SWAT+ procedure: source file, line range, module, module imports and only lists, every argument and local declaration with source line/type/initial/inline units and meaning, and select-case vocabularies. All stored fields are returned, never sampled or truncated. Returns advisory scanner warnings in a second content block when this procedure has any; these are not compiler errors. |
| callersA | Routines that call this procedure. Exhaustive over the whole tree, never sampled or truncated -- one result means exactly one caller, not a partial list. |
| calleesA | Routines this procedure calls. Exhaustive, not truncated. |
| file_ioA | Which routines open/read/write a file, with unit numbers and lines. Resolves output files opened via open_output_file. Exhaustive over the whole tree, not truncated. |
| unit_usersA | Routines using a Fortran unit number, and the file each use targets. Optionally filter by operation. Exhaustive, not truncated. |
| writersA | Routines that assign a variable, with line numbers and the complete logical assignment statement for derived-type paths when the RHS sidecar is installed. Exhaustive over the whole tree, never sampled or truncated. Relevant scanner warnings are returned separately when present. |
| loopsA | Loop headers in a procedure with their index variables and start/end lines, for setting a conditional breakpoint. Exhaustive -- every loop in the procedure, not a sample. Relevant scanner warnings are returned separately when present. |
| provenanceA | Which SWAT+ checkout and commit this index describes, its compile-check status, and scanner-warning count. |
| search_fieldsA | Find a variable from ordinary words. Searches what the source says each field means, e.g. 'recharge' or 'lateral flow', and returns identifiers with units. |
| describe_typeB | Every field of a derived type, with units and meaning -- what a state object like aqu_d actually contains. |
| call_pathC | How execution reaches a procedure, from an entry point down. |
| read_outputA | Summarise a column of a run's output file: count, first, last, min and max with where they occurred, and how many values went negative. |
| breakpointB | Where to stop to watch a variable, and on what condition: the routines that assign it, the loops enclosing each assignment, and their index variables. Relevant scanner warnings are returned separately when present. |
| scope_atA | Which loops enclose a given line of a procedure, outermost first -- the variables live at that point. Relevant scanner warnings are returned separately when present. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools target clearly distinct analysis questions: callers/callees, file_io/unit_users, loops/scope_at, and breakpoint all have separate purposes. The only real overlaps are file_io versus unit_users (both map routines to Fortran unit numbers/files) and writers versus breakpoint (both identify assignment sites), but the descriptions clarify these from different angles.
All names use lowercase snake_case and are readable, but the convention is mixed: some are imperative verb phrases like find_procedure and read_output, while others are bare nouns like callers, callees, writers, loops, and provenance, plus compounds like file_io, unit_users, and scope_at. This is not chaotic, but it lacks the uniform verb_noun pattern of a highly coherent toolset.
Fourteen tools is a well-scoped size for a complex SWAT+ source-code analysis server. Each tool addresses a distinct code-navigation or debugging concern, and none feel redundant enough to remove.
The server covers procedure discovery, call graphs, file/unit I/O, variable definitions, derived-type structure, loop context, breakpoint guidance, provenance, and output-file summarization, which is strong for its domain. Minor gaps exist, such as no direct source-text listing or a module/procedure inventory, but agents can still complete core analysis workflows.