A powerful Model Context Protocol (MCP) server that provides TypeScript compilation, type checking, and project management capabilities to AI assistants like Claude.
π― Zero Configuration β’ β‘ Lightning Fast β’ π‘οΈ Production Ready β’ π§ͺ Battle Tested
- Single File Compilation: Compile individual TypeScript files to JavaScript
- Project Compilation: Full project compilation with
tsconfig.jsonsupport - Watch Mode: Continuous compilation on file changes
- Source Maps: Generate source maps for debugging
- Multiple Targets: Support for ES5, ES6, ES2020, and more
- Comprehensive Type Analysis: Full TypeScript type checking
- Diagnostic Reports: Detailed error and warning information
- Strict Mode Support: Configurable strict type checking
- Declaration Files: Support for
.d.tsfiles - Syntax Validation: Quick syntax validation without full compilation
- Dynamic Config Updates: Modify
tsconfig.jsonprogrammatically - Config Creation: Generate new TypeScript configurations
- Option Validation: Validate compiler options before applying
- Smart Defaults: Sensible default configurations for new projects
- Colored Diagnostics: Beautiful, readable error formatting
- Progress Indicators: Real-time compilation progress
- Summary Reports: Comprehensive compilation summaries
- JSON Export: Machine-readable diagnostic output
# Install globally via npm (recommended)
npm install -g mcp-typescript-server
# Or install locally in your project
npm install mcp-typescript-serverAdd to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"typescript": {
"command": "npx",
"args": ["mcp-typescript-server"]
}
}
}git clone https://github.com/umutc/mcp-typescript.git
cd mcp-typescript
npm install
npm run build
npm link// Compile a single TypeScript file
compile_typescript({
filePath: "./src/utils.ts",
outputDir: "./dist",
sourceMap: true
})// Compile entire project using tsconfig.json
compile_typescript({
projectPath: "./my-project",
outputDir: "./build"
})// Enable continuous compilation
compile_typescript({
filePath: "./src/app.ts",
watch: true,
sourceMap: true
})// Check types for a single file
check_types({
filePath: "./src/models.ts"
})// Enable strict mode type checking
check_types({
filePath: "./src/services/",
strict: true,
includeDeclarations: true
})// Get formatted diagnostic output
get_diagnostics({
filePath: "./src/components/Button.tsx",
formatOutput: "formatted" // or "json" or "text"
})// Update compiler options
update_tsconfig({
configPath: "./tsconfig.json",
options: {
target: "ES2022",
strict: true,
sourceMap: true,
declaration: true
}
})// Create new tsconfig.json with defaults
create_tsconfig({
projectPath: "./new-project",
options: {
target: "ES2020",
module: "commonjs",
outDir: "./dist"
}
})// Quick syntax check without full compilation
validate_syntax({
filePath: "./src/suspicious-file.ts"
})| Tool | Description | Parameters |
|---|---|---|
compile_typescript |
Compile TypeScript files or projects | filePath, projectPath, outputDir, sourceMap, watch |
check_types |
Perform type checking | filePath, strict, includeDeclarations |
get_diagnostics |
Get detailed error information | filePath, formatOutput |
update_tsconfig |
Update TypeScript configuration | configPath, options |
create_tsconfig |
Create new TypeScript configuration | projectPath, options |
validate_syntax |
Quick syntax validation | filePath |
Perfect for developing React components with full type safety:
# Check types for React components
check_types({ filePath: "./src/components/", strict: true })
# Compile with JSX support
compile_typescript({
projectPath: "./react-app",
outputDir: "./build"
})Ideal for backend TypeScript projects:
# Watch mode for development
compile_typescript({
filePath: "./src/server.ts",
watch: true,
outputDir: "./dist"
})
# Strict type checking for production
check_types({
filePath: "./src/",
strict: true,
includeDeclarations: false
})Perfect for TypeScript library development:
# Generate declaration files
update_tsconfig({
configPath: "./tsconfig.json",
options: {
declaration: true,
declarationMap: true,
outDir: "./lib"
}
})
# Compile library
compile_typescript({
projectPath: "./",
sourceMap: true
})All standard TypeScript compiler options are supported:
- Target:
ES3,ES5,ES6,ES2015,ES2016,ES2017,ES2018,ES2019,ES2020,ES2021,ES2022,ESNext - Module:
None,CommonJS,AMD,System,UMD,ES6,ES2015,ES2020,ES2022,ESNext - Module Resolution:
node,classic - And many more...
When creating new tsconfig.json files, sensible defaults are applied:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node",
"lib": ["ES2020"],
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"sourceMap": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}β
Compilation successful! (245ms)
Files generated:
- /project/dist/utils.js
- /project/dist/utils.js.map
- /project/dist/models.js
- /project/dist/models.js.map
β Compilation failed!
3 error(s):
1. src/utils.ts:15:23 - Type 'string' is not assignable to type 'number' (TS2322)
2. src/models.ts:8:12 - Property 'id' does not exist on type 'User' (TS2339)
3. src/app.ts:45:8 - Cannot find module './missing-file' (TS2307)
β
Type checking passed!
Summary:
- Errors: 0
- Warnings: 2
- Info: 1
Diagnostics:
1. src/components/Button.tsx:12:5 - warning: Unused variable 'theme'
2. src/utils/helpers.ts:34:12 - warning: Parameter 'callback' implicitly has an 'any' type
We welcome contributions! Please see our Contributing Guide for details.
git clone https://github.com/umutc/mcp-typescript.git
cd mcp-typescript
npm install
npm run build
npm test# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watch- Node.js: 16.0.0 or higher
- TypeScript: 4.5.0 or higher (automatically included)
- Operating System: macOS, Linux, Windows
Solution: Ensure you're running the command from the project root or specify the correct projectPath.
Solution: Check your tsconfig.json baseUrl and paths configuration.
Solution: Increase Node.js memory limit: node --max-old-space-size=4096
This project is licensed under the MIT License - see the LICENSE file for details.
- TypeScript Team for the incredible TypeScript compiler
- Anthropic for the Model Context Protocol
- Node.js community for the excellent ecosystem
β Star us on GitHub β’ π Report Bug β’ β¨ Request Feature
Made with β€οΈ by the MCP community