Trailmark MCP Server
Trailmark MCP Server
Trailmark MCP Serverは、のスタンドアロンMCPラッパーです。
ToBによるでの使用法は理解していますが、私のユースケースでは、複数のグラフを分析および提供できるMCPサーバーが必要です。このサーバーは複数のリポジトリをスキャンでき、LLMはそれぞれから個別に情報を要求できます。
主にVS CodeのGithub Copilot経由でOpenAI GPT-5.5を使用して作成されました。ドキュメントおよび開発サポートについては、LLMをai-docsディレクトリに向けてください。
要件
Python 3.12+
uv
プロジェクトメタデータ:
パッケージ名:
trailmark-mcpCLIコマンド:
trailmark-mcp
インストール
ランタイムおよび開発依存関係をインストールします:
uv sync --group devクイックスタート
stdio経由でサーバーを起動します:
uv run trailmark-mcp serve --transport stdioMCPクライアントなしで直接スキャンパスをスモークテストします:
uv run trailmark-mcp scan /path/to/repo必要な場合にスキャン中の事前分析をスキップします:
uv run trailmark-mcp scan /path/to/repo --skip-preanalysisサーバーの仕組み
プライマリライフサイクルエントリーポイントは open_repository(...) です。
動作の概要:
スナップショットが存在しない場合、サーバーはソースをスキャンし、オプションで事前分析を実行し、最初のスナップショットを保存します
スナップショットが存在し
rescan=Falseの場合、サーバーは最新のスナップショットをライブセッションに再読み込みしますrescan=Trueの場合、サーバーはソースから再構築し、新しいスナップショットを保存します
つまり、一般的なフローは以下の通りです:
open_repositoryを呼び出す返されたセッションに対してグラフツールを使用する
永続化が必要なメモリ内での重要な変更後に
save_snapshotを呼び出す
セッションモデル
session_id はMCPラッパーの状態であり、Trailmarkコアの状態ではありません。
現在のセマンティクス:
各
open_repository(...)呼び出しは新しいセッションIDを作成します複数のライブセッションが共存可能です
ツールは特定のグラフをターゲットにするために
session_idを受け入れますsession_idが省略された場合、最後に開かれた、まだ開いているセッションが使用されますデフォルトセッションを閉じると、最後に開かれた残りのセッションが昇格されます
セッションがどのリポジトリを指しているかを確認するには current_repository(session_id=...) を使用してください。
公開MCPツール
ライフサイクル:
open_repositorycurrent_repositoryclose_repositorysave_snapshot
ナビゲーション:
graph_summarydiff_graphssearch_nodescallers_ofcallees_ofancestors_ofreachable_frompaths_betweenentrypoint_paths_toattack_surfacecomplexity_hotspotsfunctions_that_raise
コンテキストと変更:
subgraphannotations_offindingsnodes_with_annotationrun_preanalysisannotate_nodeclear_annotationsaugment_findings
注意:
diff_graphs(before_session_id, after_session_id)はafterを新しい状態として扱いますsearch_nodesはcontains、exact、suffixをサポートしていますscan_repositoryやtool_manifestのような削除されたヘルパーサーフェスは、意図的に公開ランタイムの一部ではなくなりました
スナップショットの動作
スナップショットはこのサーバーリポジトリの下ではなく、分析されたリポジトリの下に書き込まれます:
<target-repo>/.trailmark/snapshots/<timestamp>/現在のスナップショットアーティファクトには以下が含まれます:
graph.jsonsummary.jsonentrypoints.jsonhotspots.jsonsubgraphs.jsonscan-metadata.json
スナップショットはライブセッションへの再読み込みをサポートしています。ソースからの新しい再構築が明示的に必要な場合は rescan=True を使用してください。
リポジトリレイアウト
主要ファイル:
src/trailmark_mcp/cli.py:scanおよびserve用のCLIエントリーポイントsrc/trailmark_mcp/mcp_app.py: MCPツール登録src/trailmark_mcp/tool_catalog.py: 公開ツール用の宣言的メタデータsrc/trailmark_mcp/services/registry.py: セッション追跡src/trailmark_mcp/services/runtime.py: Trailmarkベースのメインランタイム動作
開発
フォーカスされたテストスイートを実行します:
uv run --group dev pytest tests/test_tool_catalog.py tests/test_registry.py tests/test_stdio_server.py現在のCIは、Python 3.12で同じフォーカスされたスイートを実行します。
拡張ルール:
ランタイム動作を追加または変更する
mcp_app.pyにツールを登録するtool_catalog.pyのメタデータを更新するテストを更新する
公開動作が変更された場合はドキュメントを更新する
VS Codeでの使用
VS Codeは、ワークスペースレベルの mcp.json ファイルを使用して、MCP経由でこのサーバーを直接起動できます。
一般的なセットアップ:
このリポジトリをVS Codeで開く
uv sync --group devで依存関係がインストールされていることを確認するサーバー定義を
.vscode/mcp.jsonに保持するMCPクライアントに
stdio経由でサーバーを起動させる
このリポジトリには、ローカル使用のための .vscode/mcp.json が既に含まれています。
mcp.json の例:
{
"servers": {
"trailmark-mcp": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"trailmark-mcp",
"serve",
"--transport",
"stdio"
]
}
}
}より大きなマルチプロジェクトワークスペースからこのサーバーを使用する場合は、同じ定義をそのワークスペースルートの .vscode/mcp.json にコピーし、コマンドが uv とこのプロジェクトが利用可能な環境で実行されることを確認してください。
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/parsiya/trailmark-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server