TypeScript 诊断 MCP
实时 TypeScript 类型检查,无需频繁重新编译 - 一个模型上下文协议(MCP)服务器,提供带智能缓存的实时TypeScript诊断,非常适合在TypeScript代码库中工作的AI代理。
问题
当多个AI代理同时在一个TypeScript代码库中工作时,它们通常会运行 tsc 或者反复输入类型检查命令,导致:
- 性能大幅下降 - 每个代理都会触发全面重新编译
- 系统变慢 - 多个并发的TypeScript进程消耗CPU/内存
- 冗余工作 - 相同的文件被反复进行类型检查
- 客服响应不及时 - 代理等待缓慢编译完成后再继续执行
解决方案
ts-diagnostics-mcp 运行TypeScript编译器 观看模式 一旦(系统)建立起来,就能维护一个实时更新的诊断缓存,所有代理都可以即时查询:
- 快80%-95% 比跑步(更……)
tsc反复地 - 单一后台进程 服务于所有代理
- 即时查询 - 毫秒而不是秒
- 单仓库支持 - 无缝处理多个软件包
- 智能缓存 - 具有文件级粒度的LRU缓存
特点/特性
- 通过MCP实现TypeScript实时诊断
- 单仓库支持 - 自动检测 pnpm、yarn、npm 工作区、Rush、Lerna
- 智能缓存 - 可配置大小限制的LRU缓存
- 数据包过滤 - 按工作区包查询诊断信息
- 快速查询 -
has_errors()在微秒之内 - 手表模式 TypeScript 编译器 API 支持增量构建
- 零配置 - 自动检测项目结构
- 灵活的 - 支持单个项目和单体仓库(monorepos)
安装
无需安装!只需通过 npx 进行配置和运行。
Claude Desktop(克劳德桌面版)
- 编辑您的Claude桌面配置文件:
- macOS(发音为 /ˈmækɒs/): ~/Library/Application Support/Claude/claude_desktop_config.json - Windows: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 添加此配置:
{
"mcpServers": {
"ts-diagnostics": {
"command": "npx",
"args": [
"-y",
"ts-diagnostics-mcp@latest",
"/absolute/path/to/your/typescript/project"
]
}
}
}- 重启Claude桌面版
克劳德·科德(CLI)
添加到你的 .mcp.json:
{
"mcpServers": {
"ts-diagnostics": {
"command": "npx",
"args": [
"-y",
"ts-diagnostics-mcp@latest",
"/absolute/path/to/your/typescript/project"
]
}
}
}备选方案:全局安装
如果您更倾向于全局安装:
npm install -g ts-diagnostics-mcp然后进行配置:
{
"mcpServers": {
"ts-diagnostics": {
"command": "ts-diagnostics-mcp",
"args": ["/absolute/path/to/your/project"]
}
}
}快速入门
1. 配置(见上文安装部分)
2. 开始在Claude中使用
Hey Claude, check if there are any TypeScript errors in the project.克劳德将使用 has_errors 无需运行 tsc,即可即时检查的工具!
使用示例
对于人工智能代理
# Quick error check (microseconds)
Tool: has_errors
Result: { "hasErrors": true }
# Get all errors across project
Tool: get_all_diagnostics
Result: { errors: 12, warnings: 3, diagnostics: [...] }
# Check specific file
Tool: get_file_diagnostics
Args: { "filePath": "src/server/auth.ts" }
# Get diagnostics for specific package (monorepo)
Tool: get_package_diagnostics
Args: { "packageName": "@degentalk/server" }
# Get summary counts
Tool: get_diagnostic_count
Result: { errors: 12, warnings: 3, suggestions: 0 }
# List available packages
Tool: list_packages
Result: { packages: ["@degentalk/app", "@degentalk/server", ...] }可用的MCP工具
| 工具 | 描述 | 速度 |
|---|---|---|
has_errors | 检查错误的布尔值 | 实时(微秒) |
get_diagnostic_count | 获取错误/警告计数 | 瞬时(微秒) |
get_all_diagnostics | 获取所有诊断信息 | 快速(毫秒) |
get_file_diagnostics | 获取特定文件的诊断信息 | 快速(毫秒) |
get_package_diagnostics | 获取包的诊断信息 | 速度(毫秒) |
get_watch_status | 检查手表进程状态 | 即时 |
get_cache_stats | 查看缓存性能 | 立即 |
list_packages | 列出单体仓库包 | 即时 |
clear_cache | 清除诊断缓存 | 立即 |
配置
自动检测(默认)
无需配置!服务器自动检测:
- 单一仓库类型(pnpm、yarn、npm、Rush、Lerna)
- 工作区包
- TypeScript 配置
自定义配置
创建 .ts-diagnostics.json 在你的项目根目录中:
{
"maxCacheSize": 100,
"debounceMs": 500,
"enableIncrementalMode": true,
"autoDetectWorkspaces": true,
"ignorePatterns": [
"**/*.test.ts",
"**/*.spec.ts",
"**/test/**",
"**/migrations/**"
]
}默认忽略模式 (始终适用):
**/node_modules/****/dist/****/build/****/.git/****/coverage/****/.next/****/.turbo/****/.cache/****/out/****/*.min.js**/*.bundle.js**/.tsbuildinfo
添加您自己的模式以排除诊断中的额外文件。
环境变量
TS_DIAG_MAX_CACHE_SIZE=200 # Cache size in MB
TS_DIAG_DEBOUNCE_MS=300 # Debounce delay
TS_DIAG_INCREMENTAL=true # Enable incremental builds
TS_DIAG_AUTO_DETECT=true # Auto-detect workspaces手动配置
对于复杂的设置,请手动指定配置:
{
"projectRoot": "/path/to/project",
"tsConfigs": [
{
"configPath": "/path/to/packages/app/tsconfig.json",
"name": "@myapp/app",
"rootDir": "/path/to/packages/app"
},
{
"configPath": "/path/to/packages/server/tsconfig.json",
"name": "@myapp/server",
"rootDir": "/path/to/packages/server"
}
]
}单体仓库支持
支持的单体仓库工具
- ✅ pnpm 工作区(或项目空间) (通过
pnpm-workspace.yaml) - ✅ Yarn 工作区(或项目空间) (通过
package.json(工作区) - ✅ npm 工作区 (通过
package.json(工作区) - ✅ Rush 翻译成中文是“匆忙”或“冲刺” (通过
rush.json) - ✅ Lerna (通过
lerna.json)
示例:单体仓库结构
# Project structure
my-monorepo/
├── packages/
│ ├── app/tsconfig.json
│ ├── server/tsconfig.json
│ ├── db/tsconfig.json
│ └── shared/tsconfig.json
├── pnpm-workspace.yaml
└── tsconfig.base.json
# Auto-detected configs:
# - @myapp/app
# - @myapp/server
# - @myapp/db
# - @myapp/shared代理可以查询特定的软件包:
Tool: get_package_diagnostics
Args: { "packageName": "@myapp/server" }性能基准
场景4个AI代理在一个TypeScript单体仓库中协作
| 方法 | 时间 | CPU 使用率 | 结果 |
|---|---|---|---|
跑步 tsc 直接(4倍) | 总时长约45秒 | 100%峰值 | 系统延迟 |
| 使用 ts-diagnostics-mcp | 首次约2.3秒,缓存后\<50毫秒 | 稳定在\<15% | 运行流畅 |
性能提升:
- 类型检查时间(缓存查询)减少95%以上
- CPU使用率降低80%以上
- 为客服人员提供近乎即时的反馈
建筑
┌─────────────────────────────────────────────────┐
│ AI Agents (Claude, GPT, etc.) │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Agent1│ │Agent2│ │Agent3│ │Agent4│ │
│ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ │
└─────┼────────┼────────┼────────┼──────────────┘
│ │ │ │
└────────┴────────┴────────┘
│ MCP Protocol
┌────────▼──────────────────┐
│ ts-diagnostics-mcp │
│ ┌─────────────────────┐ │
│ │ Query Router │ │
│ │ (Package Filter) │ │
│ └─────────┬───────────┘ │
│ ┌─────────▼───────────┐ │
│ │ LRU Cache Layer │ │
│ │ (100MB default) │ │
│ └─────────┬───────────┘ │
│ ┌─────────▼───────────┐ │
│ │ TypeScript Watch │ │
│ │ (Compiler API) │ │
│ └─────────┬───────────┘ │
└────────────┼───────────────┘
│
┌────────────▼───────────────┐
│ TypeScript Source Files │
│ (Auto-recompiles) │
└────────────────────────────┘发展
# Install dependencies
pnpm install
# Build
pnpm build
# Development mode (watch)
pnpm dev
# Type check
pnpm typecheck本地测试
# Build the MCP server
cd ts-diagnostics-mcp
npm install
npm run build
# Run directly with your project
node dist/index.js /path/to/your/typescript/project故障排除
MCP服务器无响应
检查手表进程是否处于活动状态:
Tool: get_watch_status内存使用率高
减少缓存大小:
export TS_DIAG_MAX_CACHE_SIZE=50诊断方法已过时
清除缓存以强制刷新:
Tool: clear_cache贡献
欢迎贡献!这是一个开源项目。
- 为仓库创建分支
- 创建一个特性分支
- 进行你的更改
- 提交一个拉取请求
许可证
MIT 许可证 - 详见 LICENSE 文件
致谢/鸣谢
构建于:
支持
- 问题:
- 讨论:
______________________________________________________________________
专为使用TypeScript的AI代理打造,倾注爱心
