mcpField
T
tsconfig-inheritance-flattener-mcp

tsconfig-inheritance-flattener-mcp

本地服务
github.com/vola-trebla开发工具023 周前更新

关于 tsconfig-inheritance-flattener-mcp

tsconfig-inheritance-flattener-mcp 是用于检查 TypeScript 项目配置的 MCP 服务。它解析继承的 tsconfig 文件,展示实际生效的编译器选项、别名目标及项目引用问题。

主要功能

  1. 01解析继承后的编译器选项
  2. 02将路径别名定位到文件
  3. 03验证项目引用
  4. 04显示继承链及匹配模式

适用场景

  1. 01了解 monorepo 中生效的编译设置
  2. 02查找路径别名指向的文件
  3. 03检查引用包的配置问题

MCP 相关

它向 MCP 客户端提供工具,用于解析 TypeScript 配置继承、定位路径别名并分析项目引用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vola-trebla-tsconfig-inheritance-flattener": {
"command": "npx",
"args": [
"-y",
"tsconfig-inheritance-flattener-mcp"
]
}
}
}
启动命令npx -y tsconfig-inheritance-flattener-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtsconfig-inheritance-flattener-mcp0.2.0

工具

6

收录的工具列表 · 更新于 3 周前

参数类型必填说明
configPathstring是要解析的 tsconfig.json 文件的绝对路径,例如 /project/tsconfig.json
includeRawboolean否如果为 true,还返回合并前的原始逐文件选项。默认为 false。

详细介绍

🔍 tsconfig-inheritance-flattener-mcp

npm CI License: MIT

你的 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 吗?”

也非常适合与以下工具搭配使用:


📦 链接

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。