statica-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ARACHNE_INSTALL_PATH | No | Path to the STATIC installation. The bundle reads the STATIC installation from this variable. | |
| STATICA_INSTALL_PATH | No | Bundle configuration that supplies the STATIC installation path when ARACHNE_INSTALL_PATH is not already set on the machine; an empty value leaves the machine's own setting untouched. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
STATICA runs Suresoft STATIC static analysis on the local machine. STATIC produces the findings; these tools prepare, run and report that analysis and never fix defects in source code.
Connecting a new project: read statica_get_guide topic=bootstrap first and follow it step by step. Explain what the connection does and get the user's approval before statica_bootstrap_begin. Resume an unfinished connection instead of starting over.
statica_upload creates a team-visible server revision: call it only when the user explicitly asks to upload. statica_bootstrap_finish uploads the first analysis as part of an approved connection.
Defect counts describe the analyzed scope, not the project total; say so, and do not list defects file by file.
Ruleset, metric and report-generator changes apply to everyone using the server project. Read the current state first and confirm with the user.
Never ask for, print or store the AccessKey.
On setup errors run statica_doctor.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| statica_doctorA | Check that the local STATIC installation, analyzers, server URL and AccessKey are usable, and report which Python this MCP server runs on. Needs no project. Run this first when other STATICA tools fail with setup errors. |
| statica_statusA | Show how this project relates to STATIC in one call: link state, bootstrap status, automatic-analysis switch (per project and global), scope exclusions, and the server's ruleset, metric, report-generator and last-analysis state. Changes nothing. project.linked=false is a valid answer (not connected), not a failure. Server sections carry their own 'error'; one failing does not invalidate the rest. |
| statica_pre_analyzeA | Run STATIC on the files that changed since the last analysis and summarize defects by rule. Never uploads. For C/C++ only changed translation units run; Java, Kotlin, Python and C# are analyzed in full and the summary is narrowed to changed files. Counts cover this run's scope, not the project total - say so when reporting, and do not list defects file by file. reason=NO_CHANGES usually means the Stop hook already analyzed the edit; do not suggest a rebuild or upload for it. code=NEEDS_BOOTSTRAP means the project is not connected: offer to connect it (statica_get_guide topic=bootstrap) and start only after the user agrees. reason=BOOTSTRAP_IN_PROGRESS means a connection was started earlier: resume it per the guide, never start over. |
| statica_set_auto_analysisA | Turn the Stop-hook analysis after each response on or off, for this project or globally. Commands such as statica_pre_analyze keep working either way. Local setting only. |
| statica_scope_showA | List the files and directories excluded from analysis, the exceptions re-included inside excluded directories, and (C/C++ only) the build modules with their skip state. Changes nothing. Read this before changing the scope. |
| statica_scope_excludeA | Exclude files or directories from analysis. Adds to the current list. Real paths only (no globs); if any path is missing nothing is written (NO_SUCH_PATH). Headers cannot be excluded (NOT_ANALYZABLE). Defects already on the server stay until the next full analysis; when reporting later counts, say they changed because the scope changed, not the code. Confirm the exact paths with the user first. |
| statica_scope_includeA | Return files or directories to analysis, or re-include an exception inside an excluded directory. Real paths only; if any path is missing nothing is written. |
| statica_scope_skip_moduleA | C/C++ only: skip whole build modules. Pass modules[].output from statica_scope_show. Unknown values are rejected (NO_SUCH_MODULE) with knownModules listed. Which modules are noise is the user's call; show the list and confirm first. |
| statica_scope_unskip_moduleA | C/C++ only: return skipped build modules to analysis. |
| statica_ruleset_showB | Show which rulesets the server project enables and the rule display language. Changes nothing. |
| statica_ruleset_setA | Replace the server project's ruleset selection. FULL REPLACEMENT: every ruleset not listed is turned off, so call statica_ruleset_show first and build on its current selection. At least one id is required. Applies to everyone using the server project; confirm the final list with the user before calling. |
| statica_metric_showA | Show which code metrics the server project enables. Changes nothing. |
| statica_metric_setA | Turn individual code metrics on or off by key (for example FUCYC). Metrics not named keep their state. Applies to everyone using the server project; confirm with the user first. |
| statica_report_generator_showA | Show whether the server generates a report after each analysis, and in which format and kinds. Changes nothing. |
| statica_report_generator_setA | Turn automatic report generation after each analysis on or off. Turning it on needs a format and at least one kind (1-12). Applies to everyone using the server project; confirm with the user first. |
| statica_reportA | Ask the server to generate a report from the latest revision, wait for it, and download it (default /.static/reports/). Can take minutes. Kinds: 1 project summary, 2 remaining defects, 3 suppressed defects, 4 by rule, 5 by ruleset, 6 by severity, 7 by file, 8 module metrics, 9 file metrics, 10 class metrics, 11 function metrics, 12 suppressed metrics. On failure 'stage' tells how far it got. |
| statica_uploadA | Analyze the whole project and upload the result to the STATIC server as a new revision the whole team sees. Holds a licence slot and takes time. Call ONLY when the user explicitly asks to upload or publish results to the server; never as a follow-up to pre-analyze, a scope change or NO_CHANGES. returncode 113: the project is already being analyzed; 114: licence limit reached - ask the user to retry later. If ok is false, do not say the upload happened. |
| statica_bootstrap_detectA | Step 1 of connecting a project to STATIC: collect build-system clues (artifacts: C/C++; languageArtifacts: Java, Kotlin, Python, C#) and the existing toolchain detector's view. Changes nothing. Choosing the language, environment and compiler from it is your judgement; follow statica_get_guide topic=bootstrap, and ask the user when clues point to more than one environment. |
| statica_bootstrap_beginA | Start connecting a project: verify the compiler by running it, then create the STATIC workspace and (C/C++) the compiler wrapper whose wrapperDir the build must be pointed at. Java and Kotlin also create the server project here. Does not edit project files. BEFORE CALLING: read statica_get_guide topic=bootstrap and get the user's approval for the whole connection - it later edits project build settings, runs a full build and creates a project on the shared server. C/C++ needs ide, compiler and compilerPath; other languages pass language and none of those. stage=existing-workspace means a workspace already exists: resume it (bootstrapping) or stop (ready), never start a second one. |
| statica_bootstrap_guardA | C/C++ only, and only when the substitution edits project files (guide type B: a hard-coded Makefile, Vitis CMakeLists.txt): keep the originals so statica_bootstrap_abort can restore them. Call right before editing. Do NOT call for command-line (A) or IDE/GUI (C) substitution, and never invent a file to satisfy the argument: a guarded file that did not exist is deleted on abort. |
| statica_bootstrap_verifyA | After substituting the compiler and building (C/C++), or preparing the build descriptor (Java/Kotlin), check that STATIC has something to analyze. A successful build is not proof it went through the wrapper; ok=false means it did not. What to do next depends on the substitution type - see the guide (do not abort a GUI substitution). Also returns the workspace when resuming. Can be called any number of times. |
| statica_bootstrap_finishA | Last step of connecting a project: re-check the capture, create the server project, mark the workspace ready, then run the full analysis and UPLOAD it (fullAnalysis). Deletes the backups taken by statica_bootstrap_guard once it succeeds. Covered by the user's approval of the connection; no separate upload question. stage=project means only server registration failed: fix the cause and call again, do not abort. Do not run pre-analyze afterwards. Pass on buildCommandWarning verbatim. |
| statica_bootstrap_abortA | Undo an unfinished connection: restore files kept by statica_bootstrap_guard, then delete the wrapper and workspace. Refuses ready workspaces. For IDE/GUI substitution it cannot undo the IDE settings - walk the user through the guide's revert steps too. If ok is false the project is still modified: relay restore.failed and snapshotDir verbatim. Confirm with the user first. |
| statica_get_guideA | Return the procedure STATICA's own skills follow, adapted for MCP: which tool runs each step, what to ask the user and where to stop. Read topic=bootstrap before connecting a project and follow it; it points to bootstrap-environments (C/C++ environments, compiler paths, substitution and revert steps) and bootstrap-other-languages (Java, Kotlin, Python, C#). upload explains when to upload; overview explains the plugin's scope. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| connect-project | Connect a project to STATIC for the first time, following STATICA's bootstrap procedure. |
| upload-analysis | Analyze the whole project and upload it to the STATIC server as a new revision. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Most tools target a clearly distinct resource+action (scope include/exclude vs skip_module/unskip_module, pre_analyze vs upload), and descriptions explicitly fence off risky confusions such as 'never uploads' or 'call ONLY when the user asks'. The main overlap is statica_status, which already reports ruleset, metric, report-generator and last-analysis state that statica_ruleset_show, statica_metric_show and statica_report_generator_show expose individually; statica_bootstrap_detect vs statica_doctor vs statica_status also require reading descriptions to choose correctly.
All 24 tools share the statica_ prefix and snake_case, with coherent families (ruleset_show/set, metric_show/set, scope_show/exclude/include/skip_module, bootstrap_detect/begin/guard/verify/finish/abort). There is a minor ordering inconsistency: most follow noun_verb (ruleset_show, report_generator_set) while a few follow verb_noun (set_auto_analysis, get_guide, pre_analyze), though each pair is internally consistent.
24 tools is on the heavy side of the range, spread across eight areas (bootstrap, scope, rulesets, metrics, reports, analysis, status, guide). Each tool does map to a distinct operation and the show/set and skip/unskip pairs are justified, but the surface is large enough that an agent must plan across multiple families before acting.
Core lifecycle is well covered: detection, bootstrap with guard/verify/finish/abort, scope management, configuration, analysis, upload and reporting. Notable gaps remain around defect handling — reports can list suppressed defects (kinds 3, 12) but there is no tool to suppress or annotate an individual defect — and there is no way to unlink/disconnect an already-linked project or inspect historical revisions, both of which agents will likely need.