Token导航 LogoToken导航

MCP Server · 安全风控

Tech Debt MCP

一个用于分析多编程语言技术债务的模型上下文协议(MCP)服务器,支持代码质量、安全漏洞和可维护性问题检测,并提供SQALE指标和可操作建议。

stdio官方级别未说明来源级核验工具 16@modelcontextprotocol/inspector
TypeScriptClaude安全CursorWindsurfVS Code

快速开始

作者 / 组织
PierreJanineh
提供方
PierreJanineh
运行时
Node.js

工具数量

16

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

7

仓库热度

收录来源

1 个

MCP World

选型结论

Tech Debt MCP 属于安全风控类 MCP Server,公开资料标注 16 个工具,通过stdio 本地进程接入,适配 Claude、Cursor、Windsurf,有可以直接复制的安装命令;接入前先确认权限范围。

分类

安全风控

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

npx @modelcontextprotocol/inspector node dist/index.js

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Node.js,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 16 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

技术债务MCP服务器

-brightgreen>)

16工具 · 2资源 · 14种语言 · 10依赖生态系统

一种模型上下文协议(MCP)服务器,用于分析多种编程语言的技术债务。旨在与GitHub Copilot、Claude、Cursor和其他MCP兼容工具集成。

特性

  • 多语言支持:JavaScript、TypeScript、Python、Java、Swift、Kotlin、Objective-C、C++、C、C#、Go、Rust、Ruby、PHP
  • 综合分析:检测各种类型的技术债务,包括代码质量问题、安全漏洞和可维护性问题
  • SQALE指标:使用SQALE评级系统(A-E等级)计算技术债务
  • SwiftUI分析:对SwiftUI模式、状态管理、内存泄漏、视图嵌套和并发问题进行专门检查
  • 自定义规则:使用正则表达式支持定义自己的基于模式的检查
  • 相关性分析:跨10个生态系统(npm、pip、Maven/Gradle、Cargo、Go模块、Composer、Bundler、NuGet、C/C++、Swift)的解析包清单
  • 内联抑制:通过以下方式抑制误报 // techdebt-ignore-next-line 或屏蔽评论
  • 配置验证:验证 .techdebtrc.json 用于模式正确性的配置文件
  • 可采取行动的建议:为解决技术债务问题提供优先建议
  • 灵活的过滤:按严重性、类别或语言筛选结果
  • 增强安全性(v2.0.2):所有工具和资源路径输入的路径遍历预防、ReDoS安全自定义规则正则表达式验证、SwiftUI检查中的正则表达式注入转义、所有错误消息中的绝对路径净化,以及每次推送/PR时的CodeQL SAST扫描

支持的语言

语言扩展名密钥检查
JavaScript.js、.mjs、.cjs、.jsxconsole.log、调试器、eslint禁用、动态代码执行的使用、var的使用
TypeScript.ts,.tsx,.mts,.cts任何类型,@ts忽略,非空断言,类型断言
Python.py、.pyw、.pyibare-except、打印语句、全局使用、动态代码执行
Java.JavaSystem.out、printStackTrace、空catch、@SuppressWarnings
Swift.Swift强制打开包装(!),强制铸造(as!),强迫尝试,保留循环, SwiftUI模式
Kotlin.kt,.kts!!,lateinit滥用,@抑制,未经检查的强制转换
Objective-C.m、.mm、.hNSLog、保留周期、弃用方法、海量视图控制器
C++.cpp、.cc、.hpp、.h原始指针、C风格转换、goto,使用命名空间std
C.C,.hmalloc没有自由、goto、不安全函数、空检查
C#.cs控制台。WriteLine、异步void、空catch、处置模式
Go.Go忽略错误、空白导入、fmt。打印、恐慌、全局变量
Rust.rs解包、期望、不安全、允许属性、panic、println
Ruby.rbputs、binding.pry、rubocop禁用、动态代码执行、全局变量
PHP.PHPvar_dump、print_r、die/exit、动态代码执行、错误抑制

安装

一键安装

VS Code (通过终端):

code --add-mcp '{"name":"tech-debt-mcp","command":"npx","args":["-y","tech-debt-mcp@latest"]}'

一键安装

光标 (通过终端):

cursor --add-mcp '{"name":"tech-debt-mcp","command":"npx -y tech-debt-mcp@latest"}'

克劳德代码 (通过终端):

claude mcp add tech-debt-mcp -- npx -y tech-debt-mcp@latest

克劳德桌面版 --添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "tech-debt-mcp": {
      "command": "npx",
      "args": ["-y", "tech-debt-mcp@latest"]
    }
  }
}

添加到您的Windsurf MCP配置(~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "tech-debt-mcp": {
      "command": "npx",
      "args": ["-y", "tech-debt-mcp@latest"]
    }
  }
}

经由 AI助手 --打开 设置>工具>AI助手>模型上下文协议(MCP),单击 +,选择 JSON格式,然后粘贴:

{
  "mcpServers": {
    "tech-debt-mcp": {
      "command": "npx",
      "args": ["-y", "tech-debt-mcp@latest"]
    }
  }
}

经由 Xcode的GitHub副本 --打开“设置”>“MCP”选项卡>“编辑配置”(mcp.json):

{
  "servers": {
    "tech-debt-mcp": {
      "command": "npx",
      "args": ["-y", "tech-debt-mcp@latest"]
    }
  }
}

手动设置

添加到MCP客户端配置中:

{
  "mcpServers": {
    "tech-debt-mcp": {
      "command": "npx",
      "args": ["-y", "tech-debt-mcp@latest"]
    }
  }
}

发展: npm run dev

工具

类别工具描述
分析analyze_project分析整个项目——按语言、类别、严重性、最大文件数过滤
analyze_file分析单个文件
get_debt_summary快速总结健康评分和问题计数
get_sqale_metricsSQALE评级、补救时间、债务比率、故障
过滤get_recommendations优先修复建议(可配置限制)
get_issues_by_severity按严重程度筛选的问题
get_issues_by_category按债务类别筛选的问题
list_supported_languages所有语言及其检查
自定义规则add_custom_rule添加基于正则表达式的技术债务规则
remove_custom_rule按ID删除自定义规则
list_custom_rules列出带有统计信息的活动规则
execute_custom_rules对代码或文件运行自定义规则
validate_custom_pattern在添加模式之前测试它
依赖项check_dependencies扫描10个生态系统中的包清单
get_vulnerability_reportCVE审查的离线依赖清单
validate_config验证 .techdebtrc.json 模式

贯穿始终的债务类别: dependency · code-quality · architecture · documentation · testing · security · performance · maintainability

Analysis — parameter reference

工具参数类型必填约束/默认说明
analyze_projectpathstring✓绝对文件系统路径项目根目录
languagesstring\[\]筛选到特定语言
categoriesstring\[\]见上面的类别按债务类别筛选
severity枚举low / medium / high / critical最低严重级别
maxFilesintegermin:1分析文件的上限
analyze_filepathstring✓绝对文件系统路径要分析的文件
get_debt_summarypathstring✓绝对文件系统路径项目根目录
get_sqale_metricspathstring✓绝对文件系统路径项目根目录
developmentTimenumber小时数债务比率计算的估计开发时间

get_sqale_metrics 返回SQALE评级(a-E),包括星级可视化、总补救时间、债务比率以及按严重程度和类别划分的细分。

Filtering — parameter reference

工具参数类型必填约束/默认说明
get_recommendationspathstring✓绝对文件系统路径项目根目录
limitinteger默认值:5,最小值:1要返回的最大建议值
get_issues_by_severitypathstring✓绝对文件系统路径项目根目录
severity枚举✓low / medium / high / critical按严重性进行筛选
get_issues_by_categorypathstring✓绝对文件系统路径项目根目录
category枚举✓请参阅上面的类别要筛选的债务类别
list_supported_languages------无参数

Custom Rules — parameter reference

工具参数类型必填约束/默认说明
add_custom_ruleidstring✓唯一规则标识符
patternstring✓最多1000个字符要匹配的正则表达式模式
messagestring✓问题标题/消息
severity枚举✓low / medium / high / critical严重性级别
category枚举✓见上面的类别债务类别
suggestionstring如何解决此问题
languagesstring\[\]仅限于特定语言
flagsstring允许: d g i m s u v y; u / v 互斥正则表达式标志
remove_custom_ruleidstring✓要删除的规则ID
list_custom_rules------无参数
execute_custom_rulespathstring◐绝对路径,最大500000字节要分析的文件
codestring◐1-500,000个字符直接分析的源代码
languagestring按语言筛选规则
validate_custom_patternidstring✓唯一规则标识符
patternstring✓最多1000个字符要验证的正则表达式
messagestring✓问题标题/消息
severity枚举✓low / medium / high / critical严重性级别
category枚举✓见上面的类别债务类别

◐ execute_custom_rules 需要 要么 path 或 code,两者都不需要。空字符串 "" 为了 path 被视为省略该字段。

Dependencies — parameter reference

工具参数类型必填约束/默认说明
check_dependenciespathstring✓绝对文件系统路径项目根目录
includeDevboolean默认值: true包括开发/测试依赖关系
get_vulnerability_reportpathstring✓绝对文件系统路径项目根目录
includeDevboolean默认值: false包括开发依赖关系
validate_configpathstring✓绝对文件系统路径项目根目录 或 直接路径 .techdebtrc.json

check_dependencies 检测npm、pip、Maven/Gradle、Cargo、Go模块、Composer、Bundler、NuGet、C/C++(CMakeLists.txt、connfile.txt/py、vcpkg.json)和Swift包管理器的清单。 get_vulnerability_report 生成离线依赖关系清单——请参见 ROADMAP.md 用于计划的在线CVE查找。

资源

两个MCP资源以JSON格式公开只读技术债务数据。两者都使用 RFC 6570 URI寺庙:the {+projectPath} 语法是 *预留扩展*,这允许变量包含 / 没有百分比编码的绝对文件系统路径的字符。

URI模板描述
debt://summary/{+projectPath}健康评分、债务评分、问题计数和SQALE指标
debt://issues/{+projectPath}所有科技债务问题的可过滤列表;支持 severity, category,以及 limit 查询参数

具体实例 --替代品 {+projectPath} 一条绝对的路径。注意双斜线:模板的尾部 / 再加上道路的引导 / 生产 //,这是有效的URI语法。

debt://summary//Users/you/projects/myapp
debt://issues//Users/you/projects/myapp
debt://issues//Users/you/projects/myapp?severity=high&limit=50
debt://issues//Users/you/projects/myapp?category=security

交互式测试 --使用工具和资源的最简单方法是 MCP检查员:

npm run build
npx @modelcontextprotocol/inspector node dist/index.js

打开它打印的URL,切换到 资源 选项卡,并使用您的绝对项目路径读取模板URI。

配置

创建一个 .techdebtrc.json 项目根目录中的文件:

{
  "ignore": ["vendor/**", "generated/**"],
  "rules": {
    "maxFileLines": 500,
    "maxFunctionLines": 50,
    "maxComplexity": 10,
    "maxNestingDepth": 4
  },
  "severity": {
    "todo-comment": "low",
    "console-log": "medium"
  },
  "ruleExclusions": {
    "debugger": ["**/src/analyzers/**"],
    "ts-ignore": ["**/src/analyzers/**"]
  },
  "customPatterns": [
    {
      "id": "no-console-log",
      "pattern": "console\\.log",
      "severity": "low",
      "category": "code-quality",
      "message": "Remove console.log() statements",
      "suggestion": "Use proper logging library instead",
      "languages": ["javascript", "typescript"]
    }
  ]
}

规则排除

使用 ruleExclusions 以抑制与glob模式匹配的文件的特定规则。图案使用正斜杠(/)在所有平台上。使用 **/ 前缀模式(例如。, **/src/analyzers/**)无论路径格式如何,都能可靠匹配。

内联抑制

直接在源代码中抑制特定问题。两者 // 和 # 所有语言都支持注释前缀。

单行 --抑制下一行:

// techdebt-ignore-next-line debugger
debugger; // only the 'debugger' rule is suppressed
# techdebt-ignore-next-line print-statement
print("debug output")  # will not be reported

块 --抑制开始和结束之间的所有行:

// techdebt-ignore-start ts-ignore
issues.push(...this.checkPattern(filePath, content, /@ts-ignore/g, { ... }));
// techdebt-ignore-end ts-ignore

如果没有规则名称,所有规则都将被抑制。块可以嵌套。压制性评论必须出现在自己的行中。

自定义规则示例

在中定义模式 .techdebtrc.json 在...之下 customPatterns,或在运行时通过 add_custom_rule MCP工具:

{
  "customPatterns": [
    {
      "id": "no-magic-numbers",
      "pattern": "=\\s*\\d{3,}",
      "severity": "medium",
      "category": "maintainability",
      "message": "Magic number detected",
      "suggestion": "Extract to named constant"
    },
    {
      "id": "forbidden-library",
      "pattern": "import.*moment.*from",
      "severity": "medium",
      "category": "dependency",
      "message": "moment.js is deprecated",
      "suggestion": "Use native Date or date-fns instead",
      "languages": ["javascript", "typescript"]
    }
  ]
}

SQALE指标

MCP使用的技术债务 SQALE 量化技术债务的方法:

评级债务比率质量
A.≤5%优秀
B6-10%良好
C11-20%一般
D21-50%差
E>50%严重

时间映射的努力: 琐碎(≤5m)·小(5-30m)·中(30m-2h)·大(2-4h)·大的(4h+)

SwiftUI分析

SwiftUI应用程序的14项专门检查,涵盖 状态管理 (过度@状态、@观察对象误用、环境值安全), 内存与生命周期 (结合保留周期、计时器清理、任务取消、关闭保留周期), 演出 (缺少.id()修饰符、昂贵的体计算、深度嵌套、GeometricReader误用),以及 最佳实践 (AnyView类型擦除,已弃用NavigationLink,主线程安全)。

View all SwiftUI checks with examples

状态管理问题

  • @状态变量过多 -检测应使用ViewModel的>5@State变量的视图
  • @观察到的对象滥用 -初始化时标记@ObservedObject(应使用@StateObject)
  • 环境价值安全 -检测@Environment值的强制展开

内存和生命周期

  • 合并循环引用 -在Combine水槽中发现缺失的\[弱自我\]
  • 缺少计时器清理 -在onDisappear中检测计时器而不进行清理
  • 缺少任务取消 -标记异步任务,不进行取消处理
  • 在封闭状态下保持循环 -在onChange/onReceive中检测没有\[weak self\]的自我捕获

性能和视图层次结构

  • 缺少.id()修饰符 -检测没有稳定标识符的ForEach
  • 昂贵的视图体计算 -视图体中的标记减少/排序/过滤
  • 深度视图嵌套 -嵌套深度超过6级时发出警告
  • GeometricReader误用 -在视图根检测GeometricReader

SwiftUI最佳实践

  • AnyView类型擦除 -建议改用泛型或@ViewBuilder
  • 已弃用的导航链接 -标记旧式NavigationLink模式
  • 主线安全 -确保UI更新发生在主线程上

检测到的问题示例

// Excessive @State - should use ViewModel
struct UserView: View {
  @State private var firstName = ""
  @State private var lastName = ""
  @State private var email = ""
  @State private var phone = ""
  @State private var address = ""
  @State private var city = ""  // 6+ @State variables!
}

// @ObservedObject with initialization
struct ContentView: View {
  @ObservedObject var viewModel = UserViewModel()  // Should be @StateObject!
}

// Missing Timer cleanup
struct TimerView: View {
  var body: some View {
    Text("Hello")
      .onAppear {
        Timer.scheduledTimer(...)  // Missing .onDisappear cleanup!
      }
  }
}

// Retain cycle in Combine
publisher
  .sink { value in
    self.updateUI(value)  // Missing [weak self]!
  }

输出示例

# Tech Debt Analysis Report

## Health Score: 72/100

### Issues by Severity
| Severity | Count |
|----------|-------|
| Critical | 2 |
| High | 15 |
| Medium | 45 |
| Low | 120 |

## Top Recommendations

1. **Address Critical Issues Immediately**
   Fix 2 critical security issues.

2. **Clean Up TODO/FIXME Comments**
   Found 45 TODO comments - consider creating tracked issues.

代码质量

Tech Debt MCP实践了它所宣扬的——用人工智能辅助的氛围编码构建,通过定期扫描自己来保持A级。内部重构(例如,嵌套减少 customRulesEngine.validatePattern 通过提取的助手--#146)由自扫描结果驱动。

自我扫描结果(v2.0.22026年4月)

  • SQALE评级: A(优秀)
  • 债务评分: 5/100(目标:≤5/100)
  • 问题总数: 13(0临界,0高,6中等,7低)
  • 补救时间: 14小时
  • 健康评分: 95/100
在v2.0.2安全强化后,v2.0.1基线中的118个问题/42.4个健康状况有所下降, ruleExclusions 配置、嵌套重构(#113、#118、#131、#146)和自定义规则处理程序提取(#145)。剩余债务:5个嵌套热点(4个服务器/核心模块+1个 eslint.config.mjs),在系统边界使用7种类型断言,1种非空断言。看 TECH_DEBT_SCAN.md 关于每期的详细信息。

发展

npm install --include=dev --ignore-scripts  # Install dependencies (incl. devDependencies)
npm run typecheck  # Type-check without emitting output
npm run lint       # Lint source files
npm run build      # Compile TypeScript
npm run dev        # Run with ts-node
npm run watch      # Watch mode
npm test           # Run tests

文档

贡献

欢迎投稿!请参阅 贡献.md 指南和 代码_OF_CONDUCT.md 我们的社区标准。

发布

  • 最新的: ](https://www.npmjs.com/package/tech-debt-mcp)
  • 发布:
  • 路线图: 看 ROADMAP.md 对于计划中的功能
  • 安全: escapeRegExp() (src/utils/regexUtils.ts)在将捕获的字符串插值到 new RegExp() --见第128期;处理程序输出使用 basename() / getRelativePath() 为了防止故意消息和原始消息中的绝对文件系统路径泄漏 err.message 文件系统操作中的字符串在返回给客户端之前会被净化——请参阅问题#129

许可证

麻省理工学院

工具与能力

工具数量

16

资源数量

0

提示词数量

0

能力标签

技术债务分析TypeScript本地部署代码质量检测多语言支持安全漏洞扫描SQALE指标

支持客户端

ClaudeCursorWindsurfVS Code

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

资产与漏洞排查

批量查询资产和漏洞信息,输出待修清单。

日志审计

从日志里筛出异常访问和高风险操作。

合规检查

按规则核对配置项,记录不符合项。

选择建议

值得选的地方

  • 工具数量 16 个,一次接入能覆盖的操作比单点工具更全。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude、Cursor、Windsurf,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Node.js,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在安全风控场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Tech Debt MCP

MCP World · 本页

16stdio有1 个2026-05-17
Modelcontextprotocol C22988b0

MCP World

0stdio有1 个2026-05-17
Hexstrike AI

MCP World

0stdio有1 个2026-05-17
Cyber Strike AI

MCP World

75未说明未标注1 个2026-05-17
MCP Scan

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Tech Debt MCP 怎么安装?

公开资料给出的安装命令是 npx @modelcontextprotocol/inspector node dist/index.js,运行环境为 Node.js。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Tech Debt MCP 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Node.js;保存后完全退出客户端再打开,配置才会生效。

Tech Debt MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Tech Debt MCP 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Tech Debt MCP 支持哪些客户端?

公开资料标注支持 Claude、Cursor、Windsurf、VS Code;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP