使用说明
TypeScript定义查找器MCP服务器
一个模型上下文协议(MCP)服务器,帮助AI代码编辑器在代码库中找到TypeScript符号定义。当您需要在TypeScript项目中定位导入的符号、类、接口或函数的原始定义时,此工具特别有用。
特性
- 查找TypeScript符号的原始定义
- 使用从外部包导入的符号
- 返回定义位置和代码段
- 支持stdio接口,可与AI代码编辑器无缝集成
先决条件
- TypeScript项目
typescript已安装依赖项 - Node.js用于运行服务器
安装与使用
这是一个模型上下文协议(MCP)stdio服务器,需要访问本地文件系统才能找到TypeScript定义。
运行MCP服务器
要使用MCP服务器,请执行以下操作:
- 确保你的项目安装了TypeScript作为依赖项
- 在项目目录中运行以下命令:
npx -y ts-def-mcp@latest
您可以将此命令与支持MCP的各种AI代码编辑器集成:
- 克劳德桌面版
- 克劳德代码
- 法典
- 光标
- 帆板运动
- Roo Cline编辑
重要提示:由于本地文件系统访问要求,Docker+WebSocket解决方案将无法工作。
在Claude代码中安装
使用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编辑器找到引用的符号定义,在“光标”中很有用) - 目的:在代码库中查找TypeScript符号的原始定义
输入参数
该工具需要三个参数:
-
file_path(字符串):- 当前TypeScript文件的绝对路径
- 例子:
/path/to/your/project/src/index.ts
-
symbol(字符串):- 您要查找的TypeScript符号(变量、类名、接口、类型等)的定义
- 必须存在于line_content中
- 例子:
StdioServerTransport,MyClass,interface1
-
line_content(字符串):- 包含要查找的符号定义的整行
- 用于定位文件中的行号和符号的确切位置
- 必须包含与指定完全一致的符号
例子
- 查找导入的符号定义
鉴于此进口声明:
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响应,其中包含:
- 找到定义的文件路径
- 定义的行号
- 定义的实际代码片段
游标调用示例
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 init 在bun v1.2.2中。 包子 是一个快速的一体化JavaScript运行时。
以开发模式运行
对于开发,您可以直接使用Bun运行服务器:
bun run src/index.ts
许可证
[在此处添加您的许可证信息]
贡献
[在此处添加贡献指南]