mcpField
G
glyph

glyph

ローカル
github.com/benmyles開発ツール2774 週間前に更新

glyph について

glyph は、Tree-sitter の宣言的なクエリ言語を使ってコードベースからシンボルのアウトラインを抽出する MCP サーバーです。コンパクトな構造情報を必要とする LLM コーディングエージェント向けで、単独のコマンドラインツールとしても利用できます。

主な機能

  1. 01Tree-sitter クエリによる宣言的なシンボル抽出
  2. 02glob パターンによる再帰的なファイル検出
  3. 03minimal・standard・full の詳細度設定
  4. 04Go、Java、JavaScript/TypeScript、Python に対応
  5. 05複数ファイルを横断する統合されたシンボルビュー

活用シーン

  1. 01コーディングエージェントへのプロジェクト構造のコンテキスト提供
  2. 02コマンドラインでの複数ファイルのシンボル一覧表示
  3. 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 設定に追加します:

  1. Cursor の設定を開きます(Cmd/Ctrl + ,)
  2. 「MCP」を検索するか、「拡張機能」→「MCP」に移動します
  3. 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

言語の追加

クエリベースのアーキテクチャにより、新しい言語のサポートを簡単に追加できます:

  1. file_utils.go で言語検出を追加します(約2行)
  2. queries.go でクエリパターンを追加します(約10~20行)
  3. 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 のインクリメンタル解析による高速な解析
  • 効率的なシンボル抽出を実現する最適化されたクエリ
  • ファイルをストリーミング処理することでメモリ使用量を最小限に抑制
  • 複数ファイルにわたるパフォーマンスを向上させるパーサーの再利用

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。