TypeScript Definition Finder
TypeScript 定义查找器 MCP 服务器
模型上下文协议 (MCP) 服务器可帮助 AI 代码编辑器在您的代码库中查找 TypeScript 符号定义。当您需要在 TypeScript 项目中查找导入的符号、类、接口或函数的原始定义时,此工具尤其有用。
特征
查找 TypeScript 符号的原始定义
使用从外部包导入的符号
返回定义位置和代码片段
支持 stdio 接口,可与 AI 代码编辑器无缝集成
Related MCP server: agent-workspace-mcp
先决条件
Bun v1.2.2 或更高版本
用于运行已编译服务器的 Node.js
安装
通过 Smithery 安装
要通过Smithery自动为 Claude Desktop 安装 TypeScript Definition Finder:
npx -y @smithery/cli install @runninghare/ts-def-mcp --client claude手动安装
安装依赖项:
bun install构建项目:
bun run build用法
启动 stdio 服务器:
node dist/run.js工具描述
服务器提供了find_typescript_definition工具,具有以下功能:
工具名称:
find_typescript_definition触发命令:
/ts-def(如果您想强制 AI 编辑器找到引用的符号定义,则在Cursor中很有用)目的:在代码库中定位 TypeScript 符号的原始定义
输入参数
该工具需要三个参数:
file_path(字符串):当前 TypeScript 文件的绝对路径
例如:
/path/to/your/project/src/index.ts
line_content(字符串):包含要查找其定义的符号的整行
用于定位文件中的正确行
必须与文件中出现的行完全匹配
column_number(数字):符号起始的列号(以 1 为基数)
必须是符号第一个字符的准确列位置
示例
查找导入的符号定义
鉴于此导入声明:
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";要找到从第 10 列开始的StdioServerTransport的定义,您可以使用:
{
"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"
}
]查找本地符号定义
对于本地类用法:
class MyService {
private transport: StdioServerTransport;
}要查找从第 20 列开始的StdioServerTransport的定义,请使用:
{
"file_path": "/path/to/project/src/service.ts",
"line_content": " private transport: StdioServerTransport;",
"column_number": 20
}响应格式
该工具返回一个 JSON 响应,其中包含:
找到定义的文件路径
定义的行号
定义的实际代码片段
Claude 桌面示例
发展
该项目是使用 bun v1.2.2 中的bun init创建的。Bun 是一个快速的一体化 JavaScript 运行时。
以开发模式运行
对于开发,您可以直接使用 Bun 运行服务器:
bun run index.ts执照
[在此添加您的许可证信息]
贡献
[在此处添加贡献指南]
Available Tools
1 toolfind_typescript_definitionB
Use /ts-def to trigger this tool. This tool can find the definition of a TypeScript symbol in your codebase. When you encounter an imported symbol (e.g., 'import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"'), this tool will locate its original definition file and code. Simply provide the current file path, the symbol you want to find (e.g., 'StdioServerTransport'), and the line content containing that symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | The absolute path to the current typescript file (e.g., '/remote/.../src/index.ts') | |
| symbol | Yes | The TypeScript symbol (variable, class name, interface, type, etc.) you want to find the definition of. This symbol must be present in the line_content. | |
| line_content | Yes | The entire line containing the symbol you want to find the definition of. The line content will be used to find both the line number in the file and the exact position of the symbol. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it explains what the tool does (finds definitions) and provides usage examples, it doesn't disclose important behavioral traits like error conditions, performance characteristics, rate limits, authentication needs, or what happens when symbols aren't found. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the triggering mechanism and core purpose. Each sentence adds value: the first explains triggering, the second states the purpose, the third provides usage context, and the fourth explains parameter usage. There's minimal redundancy, though the final sentence could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there's no output schema and no annotations, the description provides adequate basic information about what the tool does and how to use it. However, for a tool that performs code analysis (potentially complex), it lacks information about return format, error handling, and limitations. The description is complete enough for basic understanding but leaves important contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already fully documents all three parameters. The description adds some context about how parameters relate ('symbol must be present in the line_content') and provides examples, but doesn't add significant semantic meaning beyond what's already in the schema descriptions. This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'find the definition of a TypeScript symbol in your codebase' with specific examples. It uses the verb 'find' and identifies the resource 'TypeScript symbol definition'. However, since there are no sibling tools mentioned, it cannot demonstrate differentiation from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'When you encounter an imported symbol... this tool will locate its original definition file and code.' It gives specific examples and explains the triggering mechanism ('/ts-def'). However, it doesn't explicitly state when NOT to use it or mention any alternatives since no siblings exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- First observed
find_typescript_definition
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined and distinct.
The single tool name 'find_typescript_definition' follows a clear verb_noun pattern, and with only one tool, consistency is inherently perfect.
A single tool is too few for a server named 'TypeScript Definition Finder', as it suggests a limited scope that might not cover related operations like searching multiple symbols or handling different import types. Typically, such a domain would benefit from additional tools for broader functionality.
The tool surface is severely incomplete for the domain. While it can find definitions, there are obvious gaps such as listing available symbols, handling bulk searches, or providing context about dependencies, which limits agent effectiveness in TypeScript code exploration.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Coding agents in multi-service codebases routinely rebuild existing helpers, trust stale type definitions, and modify API contracts without knowing who consumes them. Carrick solves this by indexing your entire TypeScript ecosystem across service and repository boundaries. By integrating deeply with the TypeScript compiler, Carrick traces every route, type, and cross-service call while recording function behaviour so agents search by intent rather than name. Delivered via MCP for AI agents and LSP for IDEs, Carrick ensures models see existing endpoints and utilities before generating new code. The scanner is source-available and runs from your CLI or CI pipeline.
An MCP server that gives your AI access to the source code and docs of all public github repos
Related MCP Servers
AlicenseNot gradedqualityAmaintenanceA Model Context Protocol server that enhances AI agents by providing deep semantic understanding of codebases, enabling more intelligent interactions through advanced code search and contextual awareness.91MIT- AlicenseAqualityDmaintenanceA TypeScript-aware MCP server that provides coding agents with repository discovery, code intelligence, and web project context for local codebases. It enables deep symbol navigation, diagnostic reporting, and structural analysis of monorepos without requiring full IDE integration.715 npm1MIT
- AlicenseNot gradedqualityAmaintenanceA self-hosted MCP and HTTP server for TypeScript code intelligence, providing AI agents with fast semantic code navigation tools like finding definitions, references, implementations, file outlines, dependency graphs, and search.344 npmAGPL 3.0
- AlicenseNot gradedqualityCmaintenanceA local MCP server that gives AI coding agents symbol definitions, dependency graphs, and a live architecture vocabulary for TypeScript/JavaScript repos, with no network or embeddings.16 npmMIT