analyze-codebase-for-mcp
关于
This skill analyzes any codebase to identify functions, APIs, and data sources that can be exposed as MCP (Model Context Protocol) tools, generating a structured specification document. Use it when planning an MCP server for an existing project, auditing a codebase before wrapping it for AI access, or comparing existing capabilities with what's already exposed. It helps developers systematically discover tool candidates and create specs for implementation.
快速安装
Claude Code
推荐npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/analyze-codebase-for-mcp在 Claude Code 中复制并粘贴此命令以安装该技能
技能文档
為 MCP 析碼庫
掃描碼庫以發現適合作為 MCP 工具暴露之函式、REST 端點、CLI 命令與資料存取模式,並產出結構化工具規格文件。
適用時機
- 為既有專案規劃 MCP 伺服器,須知何者可暴露
- 將碼庫包為 AI 可達之工具面前作審計
- 比對碼庫所能與已透過 MCP 暴露者
- 產出工具規格文件以交付
scaffold-mcp-server - 評估第三方函式庫是否值包為 MCP 工具
輸入
- 必要:碼庫根目錄之路徑
- 必要:碼庫之目標語言(如 TypeScript、Python、R、Go)
- 選擇性:既有 MCP 伺服器碼以資比對(差距分析)
- 選擇性:領域焦點(如「資料分析」、「檔案操作」、「API 整合」)
- 選擇性:建議工具之最大數(預設:20)
步驟
步驟一:掃碼庫結構
1.1. 用 Glob 圖目錄樹,重於源目錄:
src/**/*.{ts,js,py,R,go,rs}為源檔**/routes/**、**/api/**、**/controllers/**為端點定義**/cli/**、**/commands/**為 CLI 入口**/package.json、**/setup.py、**/DESCRIPTION為依賴元資料
1.2. 依角色將檔案分類:
- 入口:主檔、路由處理器、CLI 命令
- 核心邏輯:業務邏輯函式、演算法、資料轉換
- 資料存取:資料庫查詢、檔案 I/O、API 客戶端
- 工具:輔助、格式化、驗證
1.3. 計總檔數、行數與輸出符號以估專案規模。
預期: 含角色註記之分類檔案清單。
失敗時: 若碼庫過大(>10,000 檔),以領域焦點輸入縮掃至特定目錄或模組。若無源檔現,驗證根路徑與語言參數。
步驟二:辨已暴露之函式與端點
2.1. 用 Grep 尋輸出函式與公共 API:
- TypeScript/JavaScript:
export (async )?function、export default、module.exports - Python:未以
_為首之函式、@app.route、@router - R:列於 NAMESPACE 或
#' @exportroxygen 標籤之函式 - Go:首字大寫之函式名(按慣例輸出)
2.2. 每候選函式,提取:
- 名:函式或端點名
- 簽名:參數連同型別與預設
- 回傳型別:函式所產
- 文件:docstring、JSDoc、roxygen、godoc
- 位置:檔案路徑與行號
2.3. 對 REST API 另提取:
- HTTP 方法與路由模式
- 請求體 schema
- 回應形
- 認證需求
2.4. 建候選清單,依潛效用排序(公共、有文件、型別良好之函式為先)。
預期: 20-100 候選函式/端點之清單,附提取之元資料。
失敗時: 若候選甚少,擴搜以含可化公之內函式。若文件稀薄,於輸出中標為風險。
步驟三:評 MCP 適性
3.1. 對每候選,依 MCP 工具準則評:
- 輸入契約之清晰:參數型別與文件良好否?可以 JSON Schema 描述否?
- 輸出可預測:函式回結構化資料(可 JSON 序列化)否?回傳形一致否?
- 副作用:函式改狀態(檔案、資料庫、外部服務)否?副作用須明標
- 冪等性:操作可安全重試否?非冪等工具須明示警告
- 執行時:可於合理逾時內完成(< 30 秒)否?長執行操作需非同步模式
- 錯誤處理:擲結構化錯誤或默默失?
3.2. 每候選按 1-5 評分:
- 5:純函式、型別化 I/O、有文件、快、無副作用
- 4:型別良好、有文件、輕微副作用(如記錄)
- 3:合理 I/O 契約然需包裝(如回原始物件)
- 2:顯著副作用或不清契約,需大幅適配
- 1:未經大改不適
3.3. 過濾候選至評 3 以上者。將評 2 標為「將來候選」,需重構。
預期: 已評分過濾之候選清單,每項附適性理由。
失敗時: 若多數候選低於 3,碼庫於 MCP 暴露前恐需重構。記差距並建議特定改進(加型別、提取純函式、包副作用)。
步驟四:設計工具規格
4.1. 對每選定候選(評 >= 3),擬工具規格:
- name: tool_name
description: >
One-line description of what the tool does.
source_function: module.function_name
source_file: src/path/to/file.ts:42
parameters:
param_name:
type: string | number | boolean | object | array
description: What this parameter controls
required: true | false
default: value_if_optional
returns:
type: string | object | array
description: What the tool returns
side_effects:
- description of any side effect
estimated_latency: fast | medium | slow
suitability_score: 5
4.2. 將工具按邏輯類別分組(如「資料查詢」、「檔案操作」、「分析」、「配置」)。
4.3. 辨工具間之依賴(如「list_datasets」應於「query_dataset」前呼叫)。
4.4. 判定何工具需包裝以:
- 將複雜參數物件化為扁平輸入
- 將原始回值化為結構化文字或 JSON
- 加安全護欄(如資料庫函式之唯讀包裝)
預期: 含類別、依賴與包裝註記之完整 YAML 工具規格。
失敗時: 若工具規格曖昧,回步驟二自源碼提更詳。若參數型別無法推斷,標供人工複查。
步驟五:生工具規格文件
5.1. 撰最終規格文件,含以下節:
- 摘要:碼庫概覽、語言、規模、分析日期
- 建議工具:步驟四之完整規格,按類別分組
- 將來候選:評 2 項目附重構建議
- 排除項目:評 1 項目附排除理由
- 依賴:工具依賴圖
- 實作註記:包裝需求、認證需求、傳輸建議
5.2. 存為 mcp-tool-spec.yml(機讀)並可選 mcp-tool-spec.md(人讀摘要)。
5.3. 若提供既有 MCP 伺服器,加差距分析節:
- 規格中有但尚未實作之工具
- 已實作但不在規格中之工具(恐已陳舊)
- 規格漂移之工具(實作偏離規格)
預期: 完整工具規格文件,可供 scaffold-mcp-server 消用。
失敗時: 若文件超合理規模(>200 工具),拆為模組並交叉引用。若碼庫無合適候選,改產「就緒評估」文件附重構建議。
驗證
- 目標碼庫一切源檔皆已掃
- 候選函式皆有提取之名、簽名、回傳型別
- 各候選皆有適性評分附書面理由
- 工具規格含完整參數 schema 與型別
- 每工具之副作用皆明文記
- 輸出文件為有效 YAML(任一 YAML 函式庫可解析)
- 工具名遵 MCP 慣例(snake_case、描述性、唯一)
- 類別與依賴形成連貫之工具面
- 提供既有 MCP 伺服器時,差距分析在內
- 將來候選節列評 2 項目所需之重構步驟
常見陷阱
- 暴露過多工具:AI 助手以 10-30 焦點工具最佳。寧廣能而勿深。抗暴露每一公共函式之誘
- 忽視副作用:「僅讀」之函式若亦寫日誌或快取,仍有副作用。以
Grep詳審檔案寫、網路呼叫、資料庫變動 - 假設型別安全:動態語言(Python、R、JavaScript)之函式或無型別註記。自用例與測試推型別,然於規格中標不確定
- 遺認證情境:於認證 web 請求中可工之函式,經 MCP 無 session 情境呼叫時或失。查隱含認證依賴如 session cookie、JWT token、環境注入之憑證
- 過工程包裝:若函式需 50 行包裝方相容 MCP,恐非佳候選。寧函式自然映入工具介面
- 疏錯誤路徑:MCP 工具須回結構化錯誤。擲未型別異常之函式需錯誤處理包裝
- 混內外 API:受其他內部碼呼叫之內部輔助函式為差 MCP 候選。重於為外部消用設計之函式或清晰邊界 API
- 跳差距分析:若提供既有 MCP 伺服器,恆比對規格與當前實作。無差距分析則風險於重複勞或漏陳舊工具
相關技能
scaffold-mcp-server— 用輸出規格生成可工之 MCP 伺服器build-custom-mcp-server— 手動伺服器實作參考configure-mcp-server— 將所成之伺服器接至 Claude Code/Desktoptroubleshoot-mcp-connection— 部署伺服器後除錯連線review-software-architecture— 工具面設計之架構複查security-audit-codebase— 對外暴露函式前之安全審計
GitHub 仓库
相关推荐技能
content-collections
元Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。
polymarket
元这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。
creating-opencode-plugins
元该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。
sglang
元SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。
