Trailmark MCP Server
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| open_repositoryC | Open a repository, loading latest snapshot or scanning source as needed. |
| current_repositoryC | Return metadata for the active repository session. |
| close_repositoryB | Close an active repository session. |
| graph_summaryC | Return graph counts and dependency summary. |
| diff_graphsC | Return a structured diff of the after graph relative to the before graph. |
| search_nodesC | Search graph nodes using contains, exact, or suffix matching. |
| callers_ofC | Return direct callers of a node. |
| callees_ofC | Return direct callees of a node. |
| ancestors_ofC | Return transitive callers that can reach the node. |
| reachable_fromC | Return nodes transitively reachable from the source node. |
| paths_betweenC | Return call paths between two nodes. |
| entrypoint_paths_toC | Return paths from detected entrypoints to the target node. |
| attack_surfaceC | Return detected entrypoints and trust metadata. |
| complexity_hotspotsC | Return nodes whose cyclomatic complexity meets the threshold. |
| subgraphC | Return available subgraph names or the nodes in a named subgraph. |
| annotations_ofB | Return annotations for a node, optionally filtered by kind. |
| findingsC | Return nodes carrying finding-style annotations. |
| nodes_with_annotationC | Return nodes carrying a specific annotation kind. |
| functions_that_raiseC | Return functions whose parser-detected exception list includes the named exception. |
| run_preanalysisD | Run Trailmark preanalysis on the active engine. |
| annotate_nodeC | Attach an annotation to a graph node. |
| clear_annotationsC | Remove annotations from a node. |
| augment_findingsB | Import findings into the current graph from SARIF or weAudit. |
| save_snapshotC | Persist the current graph state under .trailmark/snapshots. |
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 24 tools
Each tool targets a distinct operation: graph traversal (ancestors_of, callees_of, callers_of, reachable_from), annotation management (annotate_node, annotations_of, clear_annotations, nodes_with_annotation), repository lifecycle (open_repository, close_repository, current_repository, save_snapshot), and analysis (attack_surface, complexity_hotspots, findings, etc.). No two tools have overlapping purposes.
Tool names follow two predictable patterns: query-like operations use noun_of (e.g., ancestors_of, callees_of, callers_of) and action operations use verb_noun (e.g., annotate_node, open_repository, save_snapshot). This pattern is consistent throughout the set, with no mixing of casing styles or ambiguous verbs.
With 24 tools, the count is slightly above the typical well-scoped range (3-15) but still appropriate for a comprehensive code analysis server covering graph traversal, annotations, repository management, and analysis features. The tools are logically grouped and each serves a distinct purpose, so the number does not feel excessive.
The tool surface covers core workflows: opening/closing repositories, scanning, traversing the call graph, managing annotations, and querying findings. Minor gaps exist, such as no tool to list all repositories (only current_repository) or to delete nodes/annotations, but these do not critically hinder typical use cases for a static analysis tool.