An MCP server that finds the definition of TypeScript symbols in a codebase. It locates the original definition file and code snippet for imported symbols by analyzing TypeScript source files.
Single tool with adequate schema but significant description and naming issues. Tool name 'find_typescript_definition' is verb-noun compliant, but description is verbose (280+ chars, exceeds 200-char LLM-optimized baseline) and includes implementation details ('Use /ts-def to trigger') rather than user intent. Schema is present with proper JSON structure and all required fields typed, but parameter descriptions lack actionable constraints (e.g., no guidance on absolute vs relative paths, no examples of valid column ranges). Output schema is completely undocumented, LLMs cannot predict response structure. Error handling is generic ('Error: ...') with no recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite being a read-only operation.
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 line content and the symbol's column number, and it will return the source definition location and code snippet.
Description is verbose (280+ chars) and includes UI/implementation details ('Use /ts-def to trigger') instead of focusing on user intent and when to call the tool. LLM-optimized descriptions should be 50 - 200 chars.
Output schema is completely undocumented. LLMs cannot predict what fields the response contains (e.g., file path, line number, code snippet structure). This forces LLMs to guess and risks parsing errors.
Parameter descriptions lack actionable constraints. 'file_path' does not specify absolute vs relative, or whether symlinks are resolved. 'column_number' lacks range guidance (e.g., '1-based, typically 1 - 200'). 'line_content' does not explain how partial matches are handled.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Error handling is generic ('Error: ...') with no recovery guidance. If a file is not found or column is out of bounds, the LLM receives no actionable next step (e.g., 'Try with a different file path' or 'Column must be within line length').
Tool is read-only but lacks idempotentHint annotation. This is a current-spec pattern (2026-07-28) that helps agents understand retry safety and composition.