Provides modernization analysis to identify opportunities to replace Axios with native fetch API in simple use cases, potentially reducing bundle size by ~15KB.
Recommends date-fns as a modern alternative to Moment.js during code modernization analysis, helping reduce bundle size by ~65KB.
Analyzes jQuery usage in projects and provides migration recommendations to native DOM APIs, with potential bundle size reduction of ~85KB and side-by-side code examples.
Detects Lodash functions that can be replaced with native JavaScript methods, offering modernization suggestions with ~50KB bundle size reduction potential.
Enables real-time search and retrieval of MDN Web Docs documentation, including API syntax, browser compatibility, deprecation status, and experimental features across multiple languages (en-US, zh-TW, zh-CN).
Suggests the Temporal API as a modern replacement for date parsing and manipulation operations currently using legacy Date methods or Moment.js.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Dev Advisor MCP Servercheck if fetch API is widely supported in modern browsers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
開發決策顧問 MCP Server
智慧開發決策顧問工具,提供程式碼現代化分析、瀏覽器相容性檢查、MDN 文件查詢、Baseline 狀態查詢等功能。透過 MCP (Model Context Protocol) 與 AI 工具深度整合。
✨ 新功能:整合 Baseline 狀態查詢 - 基於 web.dev/baseline 判斷 Web API 是否可在所有核心瀏覽器中安全使用。
✨ 功能特色
🔄 程式碼現代化分析器
掃描 JavaScript/TypeScript 專案,找出可被原生 API 替代的函式庫
檢測過時的程式碼模式(var、callback、IIFE、傳統 for 迴圈)
提供重構建議和預估效能提升
生成對比程式碼範例
支援 ES Module 和 CommonJS
🔍 MDN 文件即時查詢
搜尋 MDN Web Docs 取得最新 API 資訊
顯示 API 棄用狀態和實驗性標記
取得語法說明和瀏覽器相容性
支援多語言(en-US, zh-TW, zh-CN)
🌐 Can I Use 瀏覽器相容性檢查
即時查詢 Web API 的瀏覽器支援狀態
顯示各瀏覽器的支援版本
提供 Polyfill 建議和 CDN 連結
支援自訂目標瀏覽器版本
📊 Baseline 狀態查詢(新增)
整合 web.dev/baseline 資料
查詢 Web API 的 Baseline 狀態(Limited/Newly/Widely available)
判斷功能是否可在所有核心瀏覽器中安全使用
提供基於 Baseline 的使用建議
自動整合到相容性檢查和 API 推薦功能中
📚 豐富的規則資料庫
18 個函式庫規則:jQuery、Moment.js、Lodash、Axios、Bluebird 等
16 個 API 規則:XMLHttpRequest、eval、document.write、var 等
可透過設定檔自訂規則
🚀 安裝
從 npm 安裝
npm install -g @muki/dev-advisor-mcp從原始碼安裝
git clone https://github.com/mukiwu/dev-advisor-mcp.git
cd dev-advisor-mcp
npm install
npm run build🔧 GitHub Actions 整合
快速開始
在您的專案中創建 .github/workflows/dev-advisor.yml:
規則式分析(預設)
name: Dev Advisor Check
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
analyze:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- uses: mukiwu/dev-advisor-mcp@v1
with:
project-path: '.'
enable-modernization: true
enable-compatibility: true
comment-on-pr: trueAI 分析模式(推薦)
使用 AI 分析 PR 變更的程式碼,提供更智慧的現代化建議:
name: Dev Advisor AI Check
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
analyze:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: mukiwu/dev-advisor-mcp@v1
with:
ai-enabled: true
ai-provider: 'openai' # 或 anthropic、gemini
ai-api-key: ${{ secrets.OPENAI_API_KEY }}
comment-on-pr: true輸入參數
參數 | 說明 | 預設值 | 必填 |
| 專案目錄路徑 |
| ❌ |
| 包含的檔案模式(JSON 陣列) |
| ❌ |
| 排除的檔案模式(JSON 陣列) |
| ❌ |
| browserslist 配置字串 |
| ❌ |
| 啟用現代化分析 |
| ❌ |
| 啟用相容性分析 |
| ❌ |
| 啟用瀏覽器支援檢查 |
| ❌ |
| GitHub Token |
| ❌ |
| 是否在 PR 中留言 |
| ❌ |
| 啟用 AI 分析模式 |
| ❌ |
| AI 提供者: |
| ❌ |
| AI 模型名稱(留空使用預設) |
| ❌ |
| AI API 金鑰(建議使用 Secrets) | - | AI 模式必填 |
進階使用
- uses: mukiwu/dev-advisor-mcp@v1
with:
project-path: './src'
include-patterns: '["src/**/*.js", "src/**/*.ts"]'
exclude-patterns: '["**/*.test.ts", "**/*.spec.ts"]'
browserslist-config: 'last 2 versions, > 1%, not dead'
enable-modernization: true
enable-compatibility: true
enable-browser-check: false
comment-on-pr: true🤖 AI 分析模式
使用 AI 分析 PR 變更的程式碼,提供更智慧的現代化建議:
- uses: mukiwu/dev-advisor-mcp@v1
with:
ai-enabled: true
ai-provider: 'openai' # 或 anthropic、gemini
ai-model: 'gpt-4o' # 可選,留空使用預設模型
ai-api-key: ${{ secrets.OPENAI_API_KEY }}
comment-on-pr: true支援的 AI 提供者:
提供者 | 預設模型 | API Key 設定 |
|
|
|
|
|
|
|
|
|
注意:AI 分析模式會直接分析 PR 的 diff 內容,而非整個專案。建議將 API Key 存放在 GitHub Secrets 中。
輸出
Action 會產生以下輸出:
modernization-report: 現代化分析報告(Markdown)compatibility-report: 相容性分析報告(Markdown)summary: 分析摘要(JSON)
完整範例
查看 examples/pr-check.yml 取得完整範例。
⚙️ MCP 配置
方式一:使用 npm 全局安裝(推薦)
首先全局安裝:
npm install -g @mukiwu/dev-advisor-mcp然後在 Claude Desktop 或 Cursor IDE 中配置:
Claude Desktop 配置 (~/.claude/config.json):
{
"mcpServers": {
"dev-advisor": {
"command": "dev-advisor"
}
}
}Cursor IDE 配置:
{
"mcpServers": {
"dev-advisor": {
"command": "dev-advisor"
}
}
}方式二:使用 npx(無需全局安裝)
Claude Desktop 配置 (~/.claude/config.json):
{
"mcpServers": {
"dev-advisor": {
"command": "npx",
"args": ["-y", "@mukiwu/dev-advisor-mcp"]
}
}
}Cursor IDE 配置:
{
"mcpServers": {
"dev-advisor": {
"command": "npx",
"args": ["-y", "@mukiwu/dev-advisor-mcp"]
}
}
}注意:現在已經修復了 npx 的路徑問題,應該可以正常使用了。如果仍有問題,建議使用方式一(全局安裝)。
方式三:使用本地安裝路徑
如果從原始碼安裝或使用本地路徑:
{
"mcpServers": {
"dev-advisor": {
"command": "node",
"args": ["/path/to/dev-advisor-mcp/dist/src/server.js"]
}
}
}🛠️ 可用工具 (Tools)
1. analyze_modernization
分析專案程式碼的現代化機會。
參數:
參數 | 類型 | 必填 | 說明 |
| string | ✅ | 專案目錄路徑 |
| string[] | ❌ | 掃描檔案模式,預設 |
| string[] | ❌ | 排除檔案模式,預設 |
| string | ❌ | 報告格式: |
使用範例:
分析 ./src 目錄的程式碼,找出可以用原生 Web API 替代的函式庫輸出內容:
執行摘要(檔案數、建議數、效能提升預估)
API 類別分析:自動從 Can I Use 資料庫取得所有類別,分析專案中使用的現代 API 所屬類別
風險評估(破壞性變更、預估工時)
函式庫替換建議(jQuery → 原生 DOM API)
API 現代化建議(XMLHttpRequest → fetch)
語法現代化建議(var → let/const)
模式現代化建議(callback → Promise/async-await)
分析流程:
🔍 自動從 Can I Use 資料庫取得所有可用的 API 類別
📋 分析專案中建議使用的現代 API
🎯 為每個現代 API 找出對應的類別
📊 統計並顯示專案使用的 API 類別分布
✅ 生成完整的現代化分析報告
2. search_mdn
搜尋 MDN Web Docs 文件,取得最新的 API 資訊。
參數:
參數 | 類型 | 必填 | 說明 |
| string | ✅ | 搜尋關鍵字,如 |
| number | ❌ | 返回結果數量,預設 |
| string | ❌ | 語言: |
使用範例:
查詢 Promise.allSettled 的 MDN 文件
幫我找 IntersectionObserver 的用法輸出內容:
搜尋結果列表
API 詳細說明和語法
棄用/實驗性狀態標記
瀏覽器相容性資訊
MDN 文件連結
3. check_compatibility
檢查 Web API 的瀏覽器相容性,整合 Can I Use 支援資料和 Baseline 狀態。
參數:
參數 | 類型 | 必填 | 說明 |
| string | ✅ | Web API 功能名稱,如 |
| object | ❌ | 目標瀏覽器版本,預設 |
使用範例:
檢查 CSS Grid 的瀏覽器相容性
fetch API 是否可安全使用?
IntersectionObserver 是否已達到 Baseline?輸出內容:
功能概覽和全球支援率
目標瀏覽器相容性報告
各瀏覽器支援版本詳情
Baseline 狀態(Limited/Newly/Widely available)
Polyfill 建議和 CDN 連結
Can I Use 和 MDN 連結
Baseline 狀態說明:
Limited availability ⚠️:尚未在所有核心瀏覽器中支援,建議謹慎使用
Newly available ✅:所有核心瀏覽器都支援,可安全使用
Widely available 🟢:已廣泛支援至少 30 個月,非常穩定可靠
4. recommend_api_combination
根據自然語言描述的需求,推薦最佳的 Web API 技術組合。
參數:
參數 | 類型 | 必填 | 說明 |
| string | ✅ | 功能需求描述,如 |
| string[] | ❌ | 目標瀏覽器,如 |
| string | ❌ | 效能需求: |
使用範例:
我想實作懶加載圖片功能,推薦用什麼 API?
幫我找適合做即時通訊的 Web API輸出內容:
推薦 API 列表(按類別分組)
每個 API 的說明和程式碼範例
Baseline 狀態(Limited/Newly/Widely available)
瀏覽器相容性報告
可取代的第三方函式庫
Polyfill 建議
實作建議(可直接使用 / 需要 Polyfill / 需要替代方案)
類別分析資訊:顯示從 Can I Use 資料庫匹配的相關類別
推薦流程:
🔍 自動從 Can I Use 資料庫取得所有可用的 API 類別
🎯 根據需求描述匹配相關的類別
📋 從匹配類別中找出相關的 API
🔗 結合預定義知識庫的推薦結果
✅ 查詢瀏覽器相容性並生成最終推薦
支援的 API 類別(預定義知識庫 + Can I Use 動態類別):
HTTP 請求:Fetch API、AbortController
DOM 操作:querySelector、classList、MutationObserver
觀察者:IntersectionObserver、ResizeObserver
儲存:localStorage、sessionStorage、IndexedDB
媒體:getUserMedia、MediaRecorder、Web Audio API
圖形:Canvas API、WebGL
非同步:Promise、async/await、Web Workers
通訊:WebSocket、Server-Sent Events、BroadcastChannel
動畫:requestAnimationFrame、Web Animations API
其他:Clipboard API、Geolocation、Notification API
注意: recommend_api_combination 工具現在會自動使用 list_api_categories 取得完整的類別列表,然後根據需求匹配相關類別,提供更準確和完整的推薦結果。您也可以單獨使用 list_api_categories 工具查看所有可用的 API 類別。
5. list_api_categories
列出所有可用的 Web API 類別,從 Can I Use 資料庫中取得完整的類別列表。
參數: 無參數
使用範例:
列出所有可用的 Web API 類別
取得完整的 API 類別清單輸出內容:
所有可用的 Web API 類別列表
每個類別的功能數量
類別說明
使用建議
說明:
此工具從 Can I Use 資料庫動態提取所有類別,提供比 recommend_api_combination 更完整的類別資訊。這些類別反映了 Can I Use 資料庫中的實際分類,可用於了解 Web API 的完整生態系統。
6. analyze_compatibility
分析專案中使用的 API 與目標瀏覽器的相容性,自動偵測 browserslist 配置。
參數:
參數 | 類型 | 必填 | 說明 |
| string | ✅ | 專案目錄路徑 |
| string | ❌ | browserslist 查詢字串,如 |
| string | ❌ | 報告格式: |
使用範例:
分析這個專案的瀏覽器相容性風險
檢查專案是否支援 IE11
幫我找出需要 polyfill 的 API輸出內容:
執行摘要(API 數量、相容性百分比)
目標瀏覽器列表(從 browserslist 自動偵測)
相容性問題(按嚴重程度分類)
🔴 嚴重:多數瀏覽器不支援
🟠 高風險:部分瀏覽器不支援
🟡 中風險:需要 polyfill
🟢 低風險:少量瀏覽器需要 polyfill
Polyfill 建議(CDN 連結、npm 套件)
統一 Polyfill 方案(polyfill.io 整合)
支援的 Browserslist 配置:
自動讀取
package.json的browserslist欄位自動讀取
.browserslistrc檔案或直接傳入查詢字串,如
"> 1%, last 2 versions, not dead"
📦 可用資源 (Resources)
MCP Resources 讓 AI 可以直接讀取規則資料:
URI | 說明 |
| 所有函式庫現代化規則 |
| 所有 API 現代化規則 |
| 完整規則資料庫 |
| 規則統計資訊 |
💡 可用提示模板 (Prompts)
預定義的分析提示模板:
名稱 | 說明 | 參數 |
| 分析專案的程式碼現代化機會 |
|
| 取得特定函式庫的遷移指南 |
|
| 取得程式碼模式的現代化建議 |
|
| 取得低風險、高效益的快速改善建議 |
|
| 分析 Git PR 的程式碼變更,整合規則式分析和 AI 分析 |
|
analyze-pr 模板詳細說明
這個模板整合了規則式分析和 AI 分析,專門用於分析 Git PR 的程式碼變更。
功能特色:
✅ 只分析 PR 變更的檔案:不會掃描整個專案,專注於 PR 中的變更
✅ 整合規則式分析:使用
analyze_modernization工具進行規則式檢查✅ 整合完整 Web API 列表:使用
list_api_categories取得所有可用的 Web API✅ AI 評估:結合 PR diff 內容進行智慧評估
✅ 綜合報告:提供包含現代化建議、API 優化、相容性檢查的完整報告
參數說明:
projectPath(必填):專案目錄路徑prDiff(選填):PR 的 diff 內容。如果提供,AI 會直接分析 diff 內容changedFiles(選填):PR 變更的檔案列表,JSON 陣列格式,例如:["src/file1.js", "src/file2.ts"]。如果提供,analyze_modernization工具只會分析這些檔案
使用範例:
請使用 analyze-pr 提示模板分析我的 PR或者提供具體參數:
請使用 analyze-pr 提示模板,projectPath 設為 ".",changedFiles 設為 ["src/components/Button.tsx", "src/utils/helpers.ts"]分析流程:
取得完整的 Web API 類別列表(
list_api_categories)對 PR 變更的檔案進行規則式分析(
analyze_modernization)結合 PR diff 內容進行 AI 評估
提供整合的分析報告,包含現代化建議、API 優化建議、相容性檢查等
📋 支援的現代化規則
函式庫替換 (18 個規則)
函式庫 | 現代替代方案 | Bundle 減少 |
jQuery | 原生 DOM API | ~85KB |
Moment.js | Date-fns / Dayjs / Temporal | ~65KB |
Lodash | 原生 JavaScript 方法 | ~50KB |
Axios | 原生 fetch (簡單場景) | ~15KB |
Bluebird | 原生 Promise | ~45KB |
Async.js | async/await | ~20KB |
uuid | crypto.randomUUID() | ~8KB |
node-fetch | 原生 fetch (Node.js 18+) | ~15KB |
querystring | URLSearchParams | ~5KB |
object-assign | Object.assign / 展開運算子 | ~2KB |
array-flatten | Array.prototype.flat() | ~2KB |
is-number | typeof + Number.isFinite() | ~1KB |
is-array | Array.isArray() | ~1KB |
left-pad | String.prototype.padStart() | ~1KB |
API 現代化 (16 個規則)
舊 API | 現代替代方案 | 類型 |
XMLHttpRequest | fetch API | 網路請求 |
document.write | DOM API | DOM 操作 |
eval | Function / JSON.parse | 安全性 |
with | 解構賦值 | 語法 |
var | let / const | 變數宣告 |
arguments | Rest parameters | 函式參數 |
innerHTML | textContent / DOM API | 安全性 |
attachEvent | addEventListener | 事件處理 |
substr | substring / slice | 字串處理 |
for 迴圈 | map / filter / forEach | 迭代 |
for...in (陣列) | for...of / 陣列方法 | 迭代 |
new Array() | 陣列字面量 [] | 建構 |
new Object() | 物件字面量 {} | 建構 |
Date 字串解析 | 明確日期格式 / Temporal | 日期處理 |
🔧 設定檔
在專案根目錄建立 .devadvisorrc.json:
{
"extends": "recommended",
"include": ["src/**/*.{js,ts,jsx,tsx}"],
"exclude": ["node_modules/**", "dist/**", "**/*.test.ts"],
"rules": {
"builtin": {
"jquery": { "enabled": true, "severity": "high" },
"var": { "enabled": true, "severity": "low" }
},
"customLibraries": {
"my-old-lib": {
"name": "my-old-lib",
"modernAlternative": "my-new-lib",
"reason": "內部函式庫升級"
}
}
},
"report": {
"format": "markdown",
"maxSuggestionsPerFile": 10
},
"performance": {
"useCache": true,
"parallel": true
}
}🧪 開發
# 安裝依賴
npm install
# 開發模式
npm run dev
# 建置
npm run build
# 執行測試
npm test
# 測試分析功能
node test-analysis.js📁 專案結構
dev-advisor-mcp/
├── src/
│ ├── server.ts # MCP Server 主程式
│ ├── analyzers/
│ │ ├── modernization.ts # 程式碼現代化分析器
│ │ └── compatibility.ts # API 相容性分析器
│ ├── parsers/
│ │ └── index.ts # AST 解析器 (ES Module + CommonJS)
│ ├── services/
│ │ ├── mdn-service.ts # MDN API 服務
│ │ └── caniuse-service.ts # Can I Use API 服務
│ ├── data/
│ │ ├── modernization-rules.ts # 現代化規則資料庫
│ │ └── api-recommendations.ts # API 推薦知識庫
│ ├── config/
│ │ └── index.ts # 設定檔載入
│ ├── utils/
│ │ ├── report-formatter.ts # 報告格式化器
│ │ ├── cache.ts # 快取機制
│ │ └── ast-utils.ts # AST 工具函式
│ └── __tests__/ # 單元測試
├── test-code/ # 測試用程式碼
├── cli/ # CLI 工具 (規劃中)
└── web/ # Web 介面 (規劃中)🎯 使用情境
情境 1:分析舊專案的現代化機會
請分析 ./legacy-project 專案,找出可以用現代 Web API 替代的函式庫,
幫我減少 bundle 大小情境 2:查詢某個 API 是否安全使用
document.write 還能用嗎?有什麼替代方案?情境 3:檢查新 API 的瀏覽器支援
我想用 IntersectionObserver,但需要支援 Safari 13,可以嗎?
需要 polyfill 嗎?情境 4:遷移特定函式庫
我想把專案中的 Moment.js 換掉,有什麼建議?情境 5:分析專案相容性
幫我分析這個專案的瀏覽器相容性,我們需要支援 Chrome 80+、Firefox 78+、Safari 13+情境 6:尋找適合的 Web API
我需要實作:使用者在背景時仍能接收通知,有什麼原生 API 可以用?📊 輸出範例
Markdown 報告範例
# 程式碼現代化分析報告
## 📊 執行摘要
- **掃描檔案數量**: 42 個檔案
- **發現建議數量**: 15 項
- **潛在效能提升**: 25%
- **檔案大小減少**: 150KB
## ⚠️ 風險評估
- **整體風險等級**: 🟡 MEDIUM
- **預估工時**: 16 小時
## 🚀 主要現代化建議
### 📚 函式庫替換
#### 升級 moment 到 Date-fns/Dayjs
Moment.js 體積過大且不支援 tree-shaking...🔮 未來規劃
智慧 API 組合查詢引擎✅ 已完成 (recommend_api_combination)基於 browserslist 的深度相容性分析✅ 已完成 (analyze_compatibility)GitHub Actions 整合✅ 已完成CLI 獨立工具
Web 視覺化介面
自動重構程式碼轉換
VS Code / Cursor 擴充套件
更多 API 規則覆蓋
自訂規則設定介面
📄 License
MIT
🤝 貢獻
歡迎提交 Issue 和 Pull Request!
開發決策顧問 - 讓程式碼現代化變得更智慧、更安全! 🚀