TypeScript Definition Finder MCP Server について
TypeScript Definition Finder MCP Serverは、AIコードエディター向けにTypeScriptプロジェクト内のシンボル定義を検索し、外部パッケージからのインポートにも対応します。ローカルのstdioサーバーを通じて、定義のパス、行番号、コードスニペットを返します。
主な機能
- 01TypeScriptシンボル定義の検索
- 02外部パッケージのインポート解決
- 03位置とコードスニペットの返却
- 04stdioインターフェース
活用シーン
- 01インポートしたシンボルの定義元を追跡
- 02ローカルのクラスやインターフェースを確認
MCP 対応
stdioのMCPサーバーとして`find_typescript_definition`ツールを公開し、ローカルプロジェクトを検索して定義情報を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
TypeScript Definition Finder MCP サーバー
AI コードエディターがコードベース内の TypeScript シンボル定義を見つけるのを支援する、Model Context Protocol(MCP)サーバーです。このツールは、TypeScript プロジェクトでインポートされたシンボル、クラス、インターフェース、関数の元の定義を探す必要がある場合に特に役立ちます。
機能
- TypeScript シンボルの元の定義を検索します
- 外部パッケージからインポートされたシンボルにも対応します
- 定義の場所とコードスニペットの両方を返します
- AI コードエディターとシームレスに連携できる stdio インターフェースに対応します
前提条件
typescript依存関係がインストールされた TypeScript プロジェクト- サーバーの実行に必要な Node.js
インストールと使用方法
これは、TypeScript の定義を検索するためにローカルファイルシステムへのアクセスを必要とする、Model Context Protocol(MCP)の stdio サーバーです。
MCP サーバーの実行
MCP サーバーを使用するには、次の手順に従います。
- プロジェクトに TypeScript が依存関係としてインストールされていることを確認します
- プロジェクトディレクトリで次のコマンドを実行します:
npx -y ts-def-mcp@latest
このコマンドは、MCP に対応するさまざまな AI コードエディターと連携できます:
- Claude Desktop
- Claude Code
- Codex
- Cursor
- Windsurf
- Roo Cline Editor
重要な注意:ローカルファイルシステムへのアクセスが必要なため、Docker + WebSocket ソリューションは動作しません。
Claude Code へのインストール
Claude Code CLI を使ってサーバーを追加します:
claude mcp add ts-def -- npx -y ts-def-mcp@latest
または、すべてのプロジェクトに追加するには(ユーザースコープ):
claude mcp add --scope user ts-def -- npx -y ts-def-mcp@latest
Codex へのインストール
サーバーを Codex MCP 設定(~/.codex/config.toml)に追加します:
[mcp_servers.ts-def]
command = "npx"
args = ["-y", "ts-def-mcp@latest"]
ツールの説明
このサーバーは、次の機能を備えた find_typescript_definition ツールを提供します:
- ツール名:
find_typescript_definition - トリガーコマンド:
/ts-def(AI エディターに参照先シンボルの定義を検索させたい場合、特に「Cursor」で便利です) - 目的:コードベース内の TypeScript シンボルの元の定義を特定します
入力パラメーター
このツールには、次の3つのパラメーターが必要です:
-
file_path(string):- 現在の TypeScript ファイルの絶対パス
- 例:
/path/to/your/project/src/index.ts
-
symbol(string):- 定義を検索する TypeScript シンボル(変数、クラス名、インターフェース、型など)
line_contentに含まれている必要があります- 例:
StdioServerTransport、MyClass、interface1
-
line_content(string):- 定義を検索するシンボルを含む行全体
- ファイル内の行番号とシンボルの正確な位置の両方を特定するために使用します
- 指定されたシンボルが正確に含まれている必要があります
例
- インポートされたシンボル定義の検索
次のインポート文がある場合:
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
StdioServerTransport の定義を検索するには、次のようにします:
{
"file_path": "~/my-mcp-project/src/index.ts",
"symbol": "StdioServerTransport",
"line_content": "import { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";"
}
- ローカルシンボル定義の検索
ローカルクラスを使用する場合:
class MyService {
private transport: StdioServerTransport;
}
StdioServerTransport の定義を検索するには、次のようにします:
{
"file_path": "/path/to/project/src/service.ts",
"symbol": "StdioServerTransport",
"line_content": " private transport: StdioServerTransport;"
}
応答形式
このツールは、次の内容を含む JSON 応答を返します:
- 定義が見つかったファイルパス
- 定義の行番号
- 定義の実際のコードスニペット
Cursor の呼び出し例
MCP 入力:
{
"file_path": "/Users/rossz/workspace/ai-tools/mcp/ts-def-mcp/src/index.ts",
"symbol": "SSEServerTransport",
"line_content": "import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';"
}
MCP 出力:
[
{
"file": "/Users/rossz/workspace/ai-tools/mcp/ts-def-mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/server/sse.d.ts",
"type": "Definition",
"location": "Line 9, Column 22",
"codeSnippet": " 8 */\n 9 > export declare class SSEServerTransport implements Transport {\n 10 + private _endpoint;\n 11 + private res;\n 12 + private _sseResponse?;\n 13 + private _sessionId;\n 14 + onclose?: () => void;\n 15 + onerror?: (error: Error) => void;\n 16 + onmessage?: (message: JSONRPCMessage) => void;\n 17 + /**\n 18 + * Creates a new SSE server transport, which will direct the client to POST messages to the relative or absolute URL identified by `_endpoint`.\n 19 + */\n 20 + constructor(_endpoint: string, res: ServerResponse);\n 21 + /**\n 22 + * Handles the initial SSE connection request.\n 23 + *\n 24 + * This should be called when a GET request is made to establish the SSE stream.\n 25 + */\n 26 + start(): Promise<void>;\n 27 + /**\n 28 + * Handles incoming POST messages.\n 29 + *\n 30 + * This should be called when a POST request is made to send a message to the server.\n 31 + */\n 32 + handlePostMessage(req: IncomingMessage, res: ServerResponse, parsedBody?: unknown): Promise<void>;\n 33 + /**\n 34 + * Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST.\n 35 + */\n 36 + handleMessage(message: unknown): Promise<void>;\n 37 + close(): Promise<void>;\n 38 + send(message: JSONRPCMessage): Promise<void>;\n 39 + /**\n 40 + * Returns the session ID for this transport.\n 41 + *\n 42 + * This can be used to route incoming POST requests.\n 43 + */\n 44 + get sessionId(): string;\n 45 }\n"
}
]
開発
このプロジェクトは、bun v1.2.2 で bun init を使って作成されました。Bun は、高速なオールインワン JavaScript ランタイムです。
開発モードでの実行
開発時は、Bun を使ってサーバーを直接実行できます:
bun run src/index.ts
ライセンス
[ライセンス情報をここに追加してください]
コントリビューション
[コントリビューションガイドラインをここに追加してください]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
