关于 tsconfig-inheritance-flattener-mcp
tsconfig-inheritance-flattener-mcp 是用于检查 TypeScript 项目配置的 MCP 服务。它解析继承的 tsconfig 文件,展示实际生效的编译器选项、别名目标及项目引用问题。
主要功能
- 01解析继承后的编译器选项
- 02将路径别名定位到文件
- 03验证项目引用
- 04显示继承链及匹配模式
适用场景
- 01了解 monorepo 中生效的编译设置
- 02查找路径别名指向的文件
- 03检查引用包的配置问题
MCP 相关
它向 MCP 客户端提供工具,用于解析 TypeScript 配置继承、定位路径别名并分析项目引用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| configPath | string | 是 | 要解析的 tsconfig.json 文件的绝对路径,例如 /project/tsconfig.json |
| includeRaw | boolean | 否 | 如果为 true,还返回合并前的原始逐文件选项。默认为 false。 |
详细介绍
🔍 tsconfig-inheritance-flattener-mcp
你的 AI Agent 会读取 tsconfig.json,却完全不知道它实际意味着什么。
MCP 服务会解析完整的 TypeScript 配置继承链,并返回实际生效的编译器选项,包括从扩展的基础配置、monorepo 包和 node_modules 预设中继承的所有内容。
🤔 问题所在
你的 Agent 读取 tsconfig.json,看到:
{ "extends": "@tsconfig/strictest", "compilerOptions": { "paths": { "@/*": ["./src/*"] } } }
它完全不知道 @tsconfig/strictest 设置了 strict: true、noUncheckedIndexedAccess: true、exactOptionalPropertyTypes: true。它也不知道 baseUrl 是在 monorepo 基础配置的上两层中定义的。因此,它会:
- 建议会因
noUncheckedIndexedAccess而无法通过的代码 - 搞不清
@/会解析到哪里 - 不知道你的
target是ES2022,而不是ES5 - 对模块解析给出错误答案
TypeScript 编译器 API 已经能解析所有这些内容。这个 MCP 只是将其暴露出来。
🛠️ 工具
get_effective_compiler_options
解析完整的 extends 链,并返回适用于指定 tsconfig.json 的合并编译器选项。显示继承链、所有合并后的选项(枚举以易读字符串显示,而非难以理解的数字)以及 include/exclude 模式。
Effective TypeScript Configuration
Config: /project/apps/web/tsconfig.json
Inheritance chain: /project/apps/web/tsconfig.json
→ /project/tsconfig.base.json
→ node_modules/@tsconfig/strictest/tsconfig.json
Compiler Options (merged):
target: "ES2022"
module: "NodeNext"
moduleResolution: "NodeNext"
strict: true
noUncheckedIndexedAccess: true
exactOptionalPropertyTypes: true
baseUrl: "/project"
paths: { "@/*": ["apps/web/src/*"] }
resolve_module_alias
使用 tsconfig 中解析出的 paths 和 baseUrl,将 TypeScript 路径别名(例如 @/hooks/useAuth)映射到磁盘上的实际文件位置。通过探测扩展名,返回所有存在的候选项。
Alias Resolution: @/hooks/useAuth
Config: /project/apps/web/tsconfig.json
Base URL: /project
Resolved physical paths:
/project/apps/web/src/hooks/useAuth.ts ✓ exists
analyze_project_references
检查根 tsconfig.json 中的 references 数组,并验证每个被引用的包是否设置了 composite: true。在 TypeScript monorepo 中,这可以在跨包依赖导致静默构建失败之前发现问题。
Project References Analysis
Config: /project/tsconfig.json
References found: 2
[✓] packages/shared → /project/packages/shared/tsconfig.json
[✗ NOT FOUND] packages/deprecated → /project/packages/deprecated/tsconfig.json
Violations:
✗ packages/shared is referenced but does not have composite: true
Fix: add "composite": true to packages/shared/tsconfig.json
🧪 实际效果
Agent 正在帮助调试 TypeScript 错误,并询问:
“这个项目实际启用了哪些编译器选项?”
没有这个 MCP,Agent 只能根据 tsconfig.json 中看到的内容猜测。有了它:
get_effective_compiler_options("/project/apps/web/tsconfig.json")
→ strict: true, noUncheckedIndexedAccess: true, target: "ES2022", module: "NodeNext"
现在 Agent 确切知道为什么 arr[0] 的类型是 string | undefined,而不只是 string。再也不会给出错误建议。
⚡ 设置
{
"mcpServers": {
"tsconfig-flattener": {
"command": "npx",
"args": ["-y", "tsconfig-inheritance-flattener-mcp"]
}
}
}
🚀 使用方法
“
/project/apps/web/tsconfig.json实际应用了哪些编译器选项?它扩展了一个 monorepo 基础配置和 @tsconfig/strictest。”
“
@/components/Button会解析到磁盘上的哪个位置?”
“根 tsconfig 中的项目引用有效吗?所有被引用的包都设置了 composite: true 吗?”
也非常适合与以下工具搭配使用:
- ast-impact-mapper-mcp — 用于代码→测试关联
- release-readiness-triage-mcp — 用于 CI 分诊
📦 链接
- npm: npmjs.com/package/tsconfig-inheritance-flattener-mcp
- GitHub: github.com/vola-trebla/tsconfig-inheritance-flattener-mcp
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。