TypeScript定义查找工具

一个帮助AI代码编辑器在代码库中查找TypeScript符号定义的MCP服务器,适用于需要定位导入符号、类、接口或函数原始定义的TypeScript项目。

  • by runninghare
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 runninghare/ts-def-mcp

使用说明

TypeScript定义查找器MCP服务器

一个模型上下文协议(MCP)服务器,帮助AI代码编辑器在代码库中找到TypeScript符号定义。当您需要在TypeScript项目中定位导入的符号、类、接口或函数的原始定义时,此工具特别有用。

特性

  • 查找TypeScript符号的原始定义
  • 使用从外部包导入的符号
  • 返回定义位置和代码段
  • 支持stdio接口,可与AI代码编辑器无缝集成

先决条件

  • 包子 v1.2.2或更高版本
  • Node.js用于运行编译后的服务器

安装

通过Smithery安装

通过以下方式自动安装克劳德桌面的TypeScript定义查找器 史密瑟里:

npx -y @smithery/cli install @runninghare/ts-def-mcp --client claude

手动安装

  1. 安装依赖项:
bun install
  1. 构建项目:
bun run build

用法

启动stdio服务器:

node dist/run.js

工具说明

服务器提供 find_typescript_definition 具有以下功能的工具:

  • 工具名称: find_typescript_definition
  • 触发命令: /ts-def (有用 Cursor 如果你想强制AI编辑器找到引用的符号定义)
  • 目的:在代码库中查找TypeScript符号的原始定义

输入参数

该工具需要三个参数:

  1. file_path (字符串):

    • 当前TypeScript文件的绝对路径
    • 例子: /path/to/your/project/src/index.ts
  2. line_content (字符串):

    • 包含要查找的符号定义的整行
    • 用于在文件中定位正确的行
    • 必须与文件中显示的行完全匹配
  3. column_number (编号):

    • 符号开始处的从1开始的列号
    • 必须是符号第一个字符的确切列位置

例子

  1. 查找导入的符号定义

鉴于此进口声明:

import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

找到以下定义 StdioServerTransport,从第10列开始,您将使用:

{
  "file_path": "~/my-mcp-project/src/index.ts",
  "line_content": "import { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";",
  "column_number": 10
}

此工具的输出将是:

[
  {
    "file": "~/my-mcp-project/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.d.ts",
    "type": "Definition",
    "location": "Line 9, Column 22",
    "codeSnippet": "   8    */\n   9 > export declare class StdioServerTransport implements Transport {\n  10 +     private _stdin;\n  11 +     private _stdout;\n  12 +     private _readBuffer;\n  13 +     private _started;\n  14 +     constructor(_stdin?: Readable, _stdout?: Writable);\n  15 +     onclose?: () => void;\n  16 +     onerror?: (error: Error) => void;\n  17 +     onmessage?: (message: JSONRPCMessage) => void;\n  18 +     _ondata: (chunk: Buffer) => void;\n  19 +     _onerror: (error: Error) => void;\n  20 +     /**\n  21 +      * Starts listening for messages on stdin.\n  22 +      */\n  23 +     start(): Promise<void>;\n  24 +     private processReadBuffer;\n  25 +     close(): Promise<void>;\n  26 +     send(message: JSONRPCMessage): Promise<void>;\n  27   }\n"
  }
]
  1. 查找本地符号定义

对于本地类用法:

class MyService {
  private transport: StdioServerTransport;
}

找到以下定义 StdioServerTransport,从第20列开始,使用:

{
  "file_path": "/path/to/project/src/service.ts",
  "line_content": "  private transport: StdioServerTransport;",
  "column_number": 20
}

响应格式

该工具返回一个JSON响应,其中包含:

  • 找到定义的文件路径
  • 定义的行号
  • 定义的实际代码片段

Claude桌面示例

发展

此项目是使用创建的 bun init 在bun v1.2.2中。 包子 是一个快速的一体化JavaScript运行时。

以开发模式运行

对于开发,您可以直接使用Bun运行服务器:

bun run index.ts

许可证

[在此处添加您的许可证信息]

贡献

[在此处添加贡献指南]