mcpField
S
squiggles

squiggles

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

squiggles について

squigglesは、コーディングエージェントと設定済みのLanguage Server ProtocolサーバーをつなぐMCPサーバーです。標準的なコード解析に加え、言語サーバー固有の機能も提供し、必要になった時点でサーバーを起動します。

主な機能

  1. 01LSP診断とコードナビゲーション
  2. 02リファクタリングとフォーマット
  3. 03言語サーバー固有のツール
  4. 04必要時のサーバー起動
  5. 05複数言語の設定

活用シーン

  1. 01編集中のコードの診断確認
  2. 02定義への移動や参照検索
  3. 03名前変更やフォーマットの適用
  4. 04Rust、Ruby、Goなどの拡張機能の利用

MCP 対応

設定したLSPの機能をMCPツールとしてコーディングエージェントに公開します。診断、ナビゲーション、リファクタリング、言語サーバー固有の拡張機能を利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"carldaws-squiggles": {
"command": "npx",
"args": [
"-y",
"squiggles"
]
}
}
}
起動コマンドnpx -y squiggles

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmsquiggles1.0.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

squiggles

エージェントに、IDE で表示される波線を見せましょう。

squiggles は、コーディングエージェントと Language Server Protocol(LSP)サーバーをつなぐ MCP サーバーです。1 つ以上の LSP サーバーを設定すると、squiggles は診断、定義へ移動、参照の検索、名前の変更、フォーマットなどの機能を MCP ツールとして公開します。サーバーは最初のツール使用時に遅延起動するため、使わない言語のために起動コストがかかることはありません。

標準プロトコルに加えて、squiggles は各言語サーバーが備える独自の強力な機能も利用可能にします。こうした機能はエディターではめったに表示されず、エージェントが目にすることもありません。たとえば、Rust マクロの展開、Ruby テストの検出、C++ のソースファイルとヘッダーファイルの切り替え、TypeScript ファイルの移動後にすべてのインポートを修正する機能、gopls 経由での govulncheck の実行などです。

クイックスタート

claude mcp add squiggles -- npx -y squiggles

次に、プロジェクトのルートで以下を実行します。

npx squiggles init

見つかった言語に応じて squiggles.yaml が作成されます(tsconfig.json があれば TypeScript、Cargo.toml があれば Rust など)。サーバー名を指定して、使用するサーバーを自分で選ぶこともできます。例:npx squiggles init typescript ruby。typescript、rust、ruby、go、python、cpp、lua のプリセットがあり、各言語サーバーが PATH 上に必要です。init は書き込むサーバーごとにインストールコマンドを表示します。

TypeScript プロジェクトの場合、次のようになります。

servers:
  typescript:
    command: ["typescript-language-server", "--stdio"]
    filePatterns: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]

設定

squiggles はプロジェクトのルートにある squiggles.yaml、squiggles.yml、.squiggles.yaml、.squiggles.yml を探します(以前の mclsp.yaml という名前も引き続き使用できます)。各サーバーエントリでは、次の項目を設定できます。

項目必須説明
commandはいLSP サーバーを起動するコマンド(文字列配列)
filePatternsはいこのサーバーが処理するファイルの glob パターン
initializationOptionsいいえ初期化時に LSP サーバーへ渡すオプション
rootUriいいえワークスペースのルート URI を上書きします
envいいえLSP サーバープロセスに設定する環境変数

異なる言語用に、複数のサーバーを設定できます。

servers:
  typescript:
    command: ["typescript-language-server", "--stdio"]
    filePatterns: ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]
  rust:
    command: ["rust-analyzer"]
    filePatterns: ["**/*.rs"]
  ruby:
    command: ["ruby-lsp"]
    filePatterns: ["**/*.rb"]
  go:
    command: ["gopls"]
    filePatterns: ["**/*.go", "go.mod", "go.sum"]
  cpp:
    command: ["clangd"]
    filePatterns: ["**/*.c", "**/*.h", "**/*.cpp", "**/*.hpp"]

ツール

対応するサーバーが設定されている場合、すべての標準 LSP ツールが登録され、使用できます。

ナビゲーション: goto_definition、goto_type_definition、goto_implementation、goto_declaration、find_references

コードの確認: hover、signature_help、document_symbols、workspace_symbols

リファクタリング: code_actions、rename_prepare、rename、format

階層: call_hierarchy_incoming、call_hierarchy_outgoing、type_hierarchy

常に使用可能: open_file、diagnostics

位置を指定するツールには、file(相対パス)、line(1 始まり)、col(1 始まり)を指定します。rename では apply: true を指定すると、編集内容を返す代わりにディスクへ書き込みます。format は常にディスクへ書き込みます。code_actions は要求された範囲と重なる診断を自動的に渡すため、クイックフィックスが表示されます。

サーバー拡張機能

優れた言語サーバーは標準プロトコルの範囲を大きく超えています。そこで squiggles が役立ちます。IDE プラグインが使用する一方で、エージェントのハーネスが無視するカスタムメソッドやコマンドを購読します。一致するサーバーが設定されると、拡張機能のツールが自動的に登録されます。

Ruby(ruby-lsp)

ツール説明
ruby_discover_testsファイル内のテストケース(Minitest、RSpec)を検出します
ruby_go_to_relevant_file実装ファイルとテストファイルを行き来します
ruby_show_syntax_treeファイルの Prism AST を表示します
ruby_dependenciesプロジェクトの gem 依存関係を一覧表示します

TypeScript(typescript-language-server)

ツール説明
ts_go_to_source_definition.d.ts の宣言ではなく、実装に移動します
ts_organize_importsimport を並べ替えて不要なものを削除し、ディスクに書き込みます
ts_rename_fileファイル移動後、すべての import を修正します。ファイルを移動してから呼び出してください

typescript-language-server が認識できる typescript のインストールが必要です(通常はワークスペース独自のものです)。TypeScript 7 には tsserver.js が含まれないため、現時点ではワークスペースに typescript@5 を保持してください。

Rust(rust-analyzer)

ツール説明
rust_expand_macroマクロ呼び出しによって生成されるコードを表示します
rust_parent_module親モジュールに移動します
rust_open_cargo_toml所有するクレートの Cargo.toml を検索します
rust_external_docsシンボルの docs.rs / rustdoc URL を取得します
rust_related_tests指定位置を対象とするテストを検索します
rust_view_syntax_treeファイルの構文木を表示します
rust_runnables実行可能なターゲット(テスト、バイナリ、ドキュメントテスト)を一覧表示します
rust_reload_workspaceCargo.toml の編集後に Cargo メタデータを再読み込みします
rust_dependencies依存関係グラフ内のすべてのクレートを一覧表示します

Go(gopls)

ツール説明
go_list_known_packagesファイルからインポート可能なパッケージを一覧表示します
go_list_importsファイルの import とそのパッケージを一覧表示します
go_add_importimport を追加し、ディスクに書き込みます
go_mod_tidygo mod tidy を実行します
go_vulncheckモジュールに対して govulncheck を実行します
go_modulesディレクトリ配下のモジュールを一覧表示します

C/C++(clangd)

ツール説明
clangd_switch_source_headerソースファイルとヘッダーファイルを行き来します
clangd_symbol_infoUSR とシンボルの詳細を取得します
clangd_ast範囲内の Clang AST を表示します

サーバーが変更を自ら適用する場合(import の整理、import の追加、ファイル名の変更)、squiggles はワークスペース編集を受け取り、ディスクに書き込むことで、ファイルに対するサーバーの認識を同期した状態に保ちます。

拡張機能への貢献

新しい言語サーバーの拡張機能を追加するには、src/extensions/ にファイルを作成します(例:src/extensions/zig.ts)。

import { executeCommand, type ServerExtension } from "./index.js";

const extensions: ServerExtension[] = [
  {
    name: "zls_something",
    description: "What this does",
    input: "position", // "none" | "file" | "position" | "custom"
    request: ({ uri, position }) => ({
      method: "zls/customMethod",
      params: { textDocument: { uri }, position },
    }),
  },
];

export default extensions;

request は、開いたファイルの URI、絶対パス、0 始まりの位置を受け取り、送信する LSP リクエストを返します。機能を workspace/executeCommand コマンドとして公開するサーバーでは、executeCommand ヘルパーを使用してください。src/extensions/index.ts で、サーバーのバイナリ名に対応するモジュールを登録します。

mclsp からの移行

squiggles は、以前 mclsp として公開されていたプロジェクトです。MCP 設定の参照先を npx -y squiggles に変更し、mclsp.yaml の名前を squiggles.yaml に変更してください。以前の設定名も引き続き使用でき、ツール名に変更はありません。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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