Trailmark MCP Server
Provides a standalone MCP interface for analyzing and querying code repositories using Trailmark, supporting multiple graphs and snapshot management.
README
Trailmark MCP Server
Trailmark MCP Server is a standalone MCP wrapper around railofbits/trailmark.
While I do understand the ToB's usage with Claude skills, my usecase requires an MCP server that can analyze and server multiple graphs. The server can scan multiple repositories and the LLM can request information from each separately.
Mostly created with OpenAI GPT-5.5 via Github Copilot in VS Code. Point your LLM to the ai-docs directory for documentation and development support.
Requirements
- Python 3.12+
uv
Project metadata:
- package name:
trailmark-mcp - CLI command:
trailmark-mcp
Install
Install runtime and development dependencies:
uv sync --group dev
Quick Start
Start server over stdio:
uv run trailmark-mcp serve --transport stdio
Smoke-test direct scan path without an MCP client:
uv run trailmark-mcp scan /path/to/repo
Skip preanalysis during scan when needed:
uv run trailmark-mcp scan /path/to/repo --skip-preanalysis
How The Server Works
Primary lifecycle entrypoint is open_repository(...).
Behavior summary:
- if no snapshot exists, the server scans source, optionally runs preanalysis, and saves the first snapshot
- if a snapshot exists and
rescan=False, the server reloads the latest snapshot into a live session - if
rescan=True, the server rebuilds from source and saves a fresh snapshot
This means the common flow is:
- call
open_repository - use graph tools against returned session
- call
save_snapshotafter meaningful in-memory mutations when you want persistence
Session Model
session_id is MCP wrapper state, not Trailmark core state.
Current semantics:
- each
open_repository(...)call creates a new session id - multiple live sessions can coexist
- tools accept
session_idto target a specific graph - omitted
session_iduses the most recently opened still-open session - closing the default session promotes the most recently opened remaining session
Use current_repository(session_id=...) to verify which repository a session points to.
Public MCP Tools
Lifecycle:
open_repositorycurrent_repositoryclose_repositorysave_snapshot
Navigation:
graph_summarydiff_graphssearch_nodescallers_ofcallees_ofancestors_ofreachable_frompaths_betweenentrypoint_paths_toattack_surfacecomplexity_hotspotsfunctions_that_raise
Context and mutation:
subgraphannotations_offindingsnodes_with_annotationrun_preanalysisannotate_nodeclear_annotationsaugment_findings
Notes:
diff_graphs(before_session_id, after_session_id)treatsafteras the new statesearch_nodessupportscontains,exact, andsuffix- removed helper surfaces like
scan_repositoryandtool_manifestare intentionally not part of the public runtime anymore
Snapshot Behavior
Snapshots are written under the analyzed repository, not under this server repository:
<target-repo>/.trailmark/snapshots/<timestamp>/
Current snapshot artifacts include:
graph.jsonsummary.jsonentrypoints.jsonhotspots.jsonsubgraphs.jsonscan-metadata.json
Snapshots support reload into a live session. Use rescan=True when you explicitly need a fresh rebuild from source.
Repository Layout
Key files:
src/trailmark_mcp/cli.py: CLI entrypoint forscanandservesrc/trailmark_mcp/mcp_app.py: MCP tool registrationsrc/trailmark_mcp/tool_catalog.py: declarative metadata for exposed toolssrc/trailmark_mcp/services/registry.py: session trackingsrc/trailmark_mcp/services/runtime.py: main Trailmark-backed runtime behavior
Development
Run focused test suite:
uv run --group dev pytest tests/test_tool_catalog.py tests/test_registry.py tests/test_stdio_server.py
Current CI runs that same focused suite on Python 3.12.
Extension rule:
- add or change runtime behavior
- register tool in
mcp_app.py - update metadata in
tool_catalog.py - update tests
- update docs if public behavior changed
Use In VS Code
VS Code can launch this server directly through MCP using a workspace-level mcp.json file.
Typical setup:
- open this repository in VS Code
- make sure dependencies are installed with
uv sync --group dev - keep the server definition in
.vscode/mcp.json - let the MCP client start the server over
stdio
This repository already includes .vscode/mcp.json for local use.
Example mcp.json:
{
"servers": {
"trailmark-mcp": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"trailmark-mcp",
"serve",
"--transport",
"stdio"
]
}
}
}
If you use this server from a larger multi-project workspace, copy the same definition into that workspace root's .vscode/mcp.json and make sure the command runs in an environment where uv and this project are available.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.