TypeScript Definition Finder
Locates original definitions of TypeScript symbols in codebases, including imported symbols from external packages, returning both definition locations and code snippets
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TypeScript Definition Finderfind the definition of useState in my React component at line 15, column 25"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TypeScript Definition Finder MCP Server
A Model Context Protocol (MCP) server that helps AI code editors find TypeScript symbol definitions in your codebase. This tool is particularly useful when you need to locate the original definition of imported symbols, classes, interfaces, or functions in a TypeScript project.
Features
Finds original definitions of TypeScript symbols
Works with imported symbols from external packages
Returns both the definition location and code snippet
Supports stdio interface for seamless integration with AI code editors
Related MCP server: agent-workspace-mcp
Prerequisites
Bun v1.2.2 or later
Node.js for running the compiled server
Installation
Installing via Smithery
To install TypeScript Definition Finder for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @runninghare/ts-def-mcp --client claudeManual Installation
Install dependencies:
bun installBuild the project:
bun run buildUsage
Start the stdio server:
node dist/run.jsTool Description
The server provides a find_typescript_definition tool with the following capabilities:
Tool Name:
find_typescript_definitionTrigger Command:
/ts-def(Useful inCursorif you want to force AI editor to find the referenced symbol definition)Purpose: Locates the original definition of TypeScript symbols in your codebase
Input Parameters
The tool requires three parameters:
file_path(string):The absolute path to the current TypeScript file
Example:
/path/to/your/project/src/index.ts
line_content(string):The entire line containing the symbol you want to find the definition of
Used to locate the correct line in the file
Must match the line exactly as it appears in the file
column_number(number):The 1-based column number where the symbol starts
Must be the exact column position of the symbol's first character
Examples
Finding an Imported Symbol Definition
Given this import statement:
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";To find the definition of StdioServerTransport, which starts at column 10, you would use:
{
"file_path": "~/my-mcp-project/src/index.ts",
"line_content": "import { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";",
"column_number": 10
}The output of this tool will be:
[
{
"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"
}
]Finding a Local Symbol Definition
For a local class usage:
class MyService {
private transport: StdioServerTransport;
}To find the definition of StdioServerTransport, which starts at column 20, use:
{
"file_path": "/path/to/project/src/service.ts",
"line_content": " private transport: StdioServerTransport;",
"column_number": 20
}Response Format
The tool returns a JSON response containing:
The file path where the definition was found
The line number of the definition
The actual code snippet of the definition
Claude Desktop Example
Development
This project was created using bun init in bun v1.2.2. Bun is a fast all-in-one JavaScript runtime.
Running in Development Mode
For development, you can run the server directly using Bun:
bun run index.tsLicense
[Add your license information here]
Contributing
[Add contribution guidelines here]
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.
TDQS
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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
An MCP server that gives your AI access to the source code and docs of all public github repos
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
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.88MIT- 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.7121MIT
- AlicenseNot gradedqualityDmaintenanceA 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.749AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceA 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.18MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/runninghare/ts-def-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server