TypeScript Analyzer MCP Server - Enterprise Edition
by davidleathers113
A high-performance MCP server for analyzing and fixing TypeScript `any` types in your codebase. It offers advanced error handling, caching, and intelligent type inference.
Last updated: N/A
TypeScript Analyzer MCP Server - Enterprise Edition
A high-performance MCP (Model Context Protocol) server for analyzing and fixing TypeScript any
types in your codebase, with advanced error handling, caching, and intelligent type inference.
Features
- 🔍 Analyze TypeScript Files: Scan files for
any
types and get suggested replacements - 🛠️ Fix TypeScript Files: Automatically replace
any
types with more specific types - 📊 Batch Processing: Process multiple files at once
- 🧩 Component Interface Generation: Generate TypeScript interfaces for React components
- ⚙️ Server Configuration: Dynamically update server config (log level, caching, etc.)
- 🔧 Cache Management: Clear and manage analysis caches
Installation
- Clone this repository
- Install dependencies:
npm install
- Build the project:
npm run build
- Start the server:
ornpm run start
node dist/index.js
Using with Claude Desktop
To use this MCP server with Claude Desktop, add it to your .claude-app.json
configuration file:
{
"mcpServers": {
"typescript-analyzer": {
"command": "node",
"args": ["/path/to/typescript-analyzer-mcp/dist/index.js"],
"env": {}
}
}
}
Tools
getServerInfo
Retrieves basic information about the analyzer server (name, version, description, features, configuration).
Example:
Please provide server info
configureServer
Updates server configuration (log levels, caching, etc.) at runtime.
Parameters:
config
: A partial configuration object to merge with the current config
Example:
Please update the logLevel to 'debug' for the server
analyzeTypeScriptFile
Analyzes a TypeScript file for any
types.
Parameters:
filePath
: Path to the TypeScript file to analyzeskipCache
: (optional) If true, forces a fresh analysis
Example:
Please analyze the TypeScript file src/components/Button.tsx for any types
fixTypeScriptFile
Fixes any
types in a single TypeScript file.
Parameters:
filePath
: Path to the TypeScript file to fixfixType
: Default type to use for replacement (default: "unknown")dryRun
: If true, show changes without applying themskipBackup
: If true, do not create a backup file before modifying
Example:
Please fix the TypeScript file src/components/Button.tsx, using Record<string, unknown> as the default replacement
batchFixTypeScriptFiles
Batch fixes any
types in multiple TypeScript files.
Parameters:
directory
: Directory containing TypeScript filespattern
: Glob pattern for files to process (e.g. "**/*.ts")fixType
: Default type to use for replacementdryRun
: If true, show changes without applying themconcurrency
: (optional) How many files to process in parallel
Example:
Please fix all TypeScript files in the src/components directory
generateComponentInterface
Generates a proper TypeScript interface for React component props.
Parameters:
filePath
: Path to the React component filecomponentName
: Name of the component to analyzeoutputPath
: (optional) Path where to save the generated interface
Example:
Please generate an interface for the Button component in src/components/Button.tsx
clearCache
Clears the analysis cache to force fresh analysis on subsequent operations.
Example:
Please clear the analysis cache
Type Mapping Strategy
The server uses a set of predefined mappings for common patterns:
| Pattern | Replacement |
|-----------------|------------------------------------------------------|
| e: any
| e: React.SyntheticEvent
|
| event: any
| event: React.SyntheticEvent
|
| onChange: any
| onChange: (value: unknown) => void
|
| onClick: any
| onClick: (event: React.MouseEvent<HTMLElement>) => void
|
| ref: any
| ref: React.RefObject<HTMLElement>
|
| data: any
| data: Record<string, unknown>
|
| options: any
| options: Record<string, unknown>
|
| config: any
| config: Record<string, unknown>
|
| props: any
| props: Record<string, unknown>
|
| items: any[]
| items: unknown[]
|
| results: any[]
| results: unknown[]
|
| callback: any
| callback: (...args: unknown[]) => unknown
|
For patterns not covered by the mappings, it defaults to using unknown
.
License
MIT