glyph について
glyph は、Tree-sitter の宣言的なクエリ言語を使ってコードベースからシンボルのアウトラインを抽出する MCP サーバーです。コンパクトな構造情報を必要とする LLM コーディングエージェント向けで、単独のコマンドラインツールとしても利用できます。
主な機能
- 01Tree-sitter クエリによる宣言的なシンボル抽出
- 02glob パターンによる再帰的なファイル検出
- 03minimal・standard・full の詳細度設定
- 04Go、Java、JavaScript/TypeScript、Python に対応
- 05複数ファイルを横断する統合されたシンボルビュー
活用シーン
- 01コーディングエージェントへのプロジェクト構造のコンテキスト提供
- 02コマンドラインでの複数ファイルのシンボル一覧表示
- 03クエリパターンの追加による他言語への対応
MCP 対応
glyph は MCP サーバー(glyph mcp)として動作し、Claude Code や Cursor などのクライアントからシンボルアウトラインの抽出に利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
glyph
Tree-sitter の宣言型クエリ言語を使用して、コードベースからシンボルのアウトラインを抽出する Model Context Protocol(MCP)サーバーです。LLM コーディングエージェントに、クリーンで効率的なシンボル抽出によって必要なコンテキストを提供します。単体の CLI ツールとしても使用できます。
インストール
macOS
Go をインストールします:
$ brew install go
glyph の最新バージョンをインストールします:
$ GOBIN=/usr/local/bin go install "github.com/benmyles/glyph@latest"
機能
glyph はファイルパスの glob を受け取り、一致するコードファイルを再帰的に検出し、Tree-sitter の強力なクエリ言語を使用して解析することで、正確なシンボルのアウトラインを生成します。概要レベルの構造から、可視性修飾子を含む完全な関数シグネチャまで、詳細度を制御できます。
glyph を選ぶ理由
LLM コーディングエージェントは、コードの構造を理解すると最も効果的に動作します。glyph は、トークン数の上限を圧迫せず、効率的なコンテキストとして機能する、クリーンな複数ファイルのシンボルマップを提供して、その隔たりを埋めます。
主な機能
- 宣言型クエリベースの抽出 - Tree-sitter のクエリ言語を使用して、正確で保守しやすいシンボル抽出を実現します
- glob ベースのファイル検出 - おなじみのパターンを使ってコードを指定できます
- 言語に依存しないアーキテクチャ - クエリパターンだけで新しい言語を簡単に追加できます
- 詳細度の設定 - 必要なコンテキスト量を選択できます
- 複数ファイルのサポート - プロジェクト全体を統一的に把握できます
- MCP ネイティブ - AI コーディングワークフローにシームレスに統合できるよう設計されています
- 高パフォーマンス - 高速な抽出を実現するために Tree-sitter クエリを最適化しています
対応言語
- Go - 関数、メソッド、型、構造体、インターフェース、定数、変数
- Java - クラス、インターフェース、メソッド、コンストラクター、フィールド、列挙型、レコード、アノテーション
- JavaScript/TypeScript - 関数、クラス、メソッド、アロー関数、変数、インターフェース、型エイリアス
- Python - 関数、クラス、デコレーター付き定義、代入
- 拡張が簡単 - 新しい言語の追加に必要なのは、約20行のクエリパターンだけです
アーキテクチャ
glyph は、最新の宣言型アプローチを採用しています:
- Tree-sitter クエリで複雑な AST トラバーサルロジックを置き換えます
- 言語固有のクエリパターンで抽出対象のシンボルを定義します
- 統一された抽出エンジンがすべての言語で動作します
- モジュール設計により、クエリ、抽出、フォーマット、ファイル処理を分離しています
シンボルの種類
glyph は、トークン使用量を最小限に抑えるため、簡潔なシンボルの種類名を使用します:
func- 関数および関数に類する宣言method- クラス/構造体のメソッドclass- クラスinterface- インターフェースstruct- 構造体(Go)type- 型宣言(Go)const- 定数var- 変数field- クラス/構造体のフィールドconstructor- コンストラクターenum- 列挙型record- レコード(Java)annotation- アノテーション(Java)property- プロパティ(TypeScript)
使用方法
AI コーディングアシスタントとの統合
Claude Code
MCP コマンドを使って glyph を Claude Code に追加します:
# Add glyph as a local MCP server (for your current project)
claude mcp add glyph /usr/local/bin/glyph mcp
インストールを確認するには:
# List all configured servers
claude mcp list
# Check glyph server details
claude mcp get glyph
Claude Code 内で /mcp コマンドを使うと、いつでもサーバーのステータスを確認できます。
Cursor
glyph を Cursor の MCP 設定に追加します:
- Cursor の設定を開きます(Cmd/Ctrl + ,)
- 「MCP」を検索するか、「拡張機能」→「MCP」に移動します
- glyph を MCP サーバーに追加します:
{
"mcpServers": {
"glyph": {
"command": "/usr/local/bin/glyph",
"args": ["mcp"]
}
}
}
設定後、MCP インターフェースを通じて glyph を使用し、コードベースからシンボルのアウトラインを抽出できます。これにより、AI がコード構造をよりよく理解できるようになります。
MCP サーバーモード(デフォルト)
LLM コーディングエージェントと統合するため、glyph を MCP サーバーとして実行します:
$ glyph mcp
CLI モード
コマンドラインから glyph を直接使って、シンボルを抽出します:
$ glyph cli '/path/to/project/*.go'
$ glyph cli -detail=minimal '/path/to/project/**/*.js'
オプション:
-detail:詳細度(minimal、standard、またはfull)。デフォルトはstandardです。
注:すべてのファイルパターンには絶対パスを指定する必要があります。
詳細度
Minimal
シンボル名と種類、および行番号のみを表示します:
- func: main (line 15)
- struct: Server (line 5)
- method: Start (line 10)
Standard(デフォルト)
シグネチャと宣言を表示します:
- func: func main()
- struct: type Server struct
- method: func (s *Server) Start() error
完全表示
コードブロックを含む、シンボルの定義全体を表示します:
- func (lines 15-20):
func main() { server := &Server{} server.Start() }
開発
$ git clone https://github.com/benmyles/glyph
$ cd glyph
$ make clean
$ make test
$ make build
$ make install DESTDIR=/usr/local/bin
言語の追加
クエリベースのアーキテクチャにより、新しい言語のサポートを簡単に追加できます:
file_utils.goで言語検出を追加します(約2行)queries.goでクエリパターンを追加します(約10~20行)queries.goでクエリディスパッチャーに追加します(約5行)
Rust のサポートを追加する例:
// In file_utils.go
case ".rs":
return rust.GetLanguage(), nil
// In queries.go
var rustQueries = map[string]string{
"functions": `
(function_item
name: (identifier) @name
) @function
`,
"structs": `
(struct_item
name: (type_identifier) @name
) @struct
`,
// ... more patterns
}
パフォーマンス
- Tree-sitter のインクリメンタル解析による高速な解析
- 効率的なシンボル抽出を実現する最適化されたクエリ
- ファイルをストリーミング処理することでメモリ使用量を最小限に抑制
- 複数ファイルにわたるパフォーマンスを向上させるパーサーの再利用
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。