AutoDev × MCP 雙向賦能:AutoDev 即 MCP 服務(wù),MCP 服務(wù)即 AutoDev 指令
在 Agentic Coding 這一話題下,工具使用(Tool Use/Function calling)是一個非常有意思的話題。完成一個軟件開發(fā)任務(wù),需要使用到大量的工具, 除去在 IDE 及其插件生態(tài)本身提供的功能外,還會使用到大量的外部工具,如 Git、Docker、Kubernetes、Jenkins 等等。如何讓 AI 知道更多工具的存在以及如何使用這些工具,是一個非常有意思的話題。
圖片
所以,我花了一天的時間在 AutoDev 中實現(xiàn)了相關(guān)的功能,即 AutoDev 作為一個 MCP 服務(wù),可以被任何 Agent Tool 調(diào)用;AutoDev 作為一個 MCP 客戶端,可以調(diào)用任何 MCP 服務(wù)。
引子 1:從漸進(jìn)性 AI Agent 方案,到 AutoDev 即 MCP 服務(wù)
Anthropic Computer Use: Automate Your Desktop With Claude 3.5 | DataCamp
在更龐大的 AI Agent 話題之下,比如自動化的 Computer Use 場景下,IDE 也只是一個可調(diào)用的 Agent 工具。從當(dāng)前的 AI Agent 進(jìn)度來看,現(xiàn)在的 Agent Tool 使用是一種漸進(jìn)式的 AI Agent 方案 —— 畢竟寫過 E2E 測試的同學(xué)都知道:操作 UI 的效率是非常之低的;以至于我們在編寫 AutoDev 時,并沒有寫多少 UI 自動化測試。
我們現(xiàn)在考慮的 AI Coding 是以 IDE 為中心的,但是還存在一個場景是以 Agent Tool 為中心的。即:
- Agent 通過操縱 Browser 去獲取需求信息;
- Agent 打開 IDE 去編寫代碼;
- Agent 打開 DevOps 工具去發(fā)布代碼;
- ……
既然借助 Agent Tool 來調(diào)用工具是 2025 年的一個趨勢,那么我們?yōu)槭裁床粚?AutoDev 作為一個 MCP 服務(wù)呢?即 AutoDev 作為一個 MCP 服務(wù),讓任何 Agent Tool 都可以調(diào)用 AutoDev 的服務(wù)。哪怕是 Cursor、Cline、GitHub Copilot 等等,都可以調(diào)用 AutoDev 的服務(wù),以獲取 IDE 中的高質(zhì)量上下文。
引子 2:從 MCP 即 Agent Tool 生態(tài),到 MCP 服務(wù)即 AutoDev 指令
在過去,我們在 AutoDev 中優(yōu)先考慮的是借助 IDE 的生態(tài),以及自身的插件體系,以實現(xiàn) AI 更好的支持端到端的開發(fā)流程。但是,隨著我們在 AutoDev 集成了更豐富的插件能力之后,我們依然需要大量的 Agent Tool。
Agent Tool 決定 AI IDE 的基線能力
圖片
不可否認(rèn),在我們研究了大量的 AI Coding 工具之后,我們會發(fā)現(xiàn),大量的 AI Editor 基于 VSCode 時在 tool 上提供的能力非常之相似,以至于我們 可以用一張圖來描述它們的能力。但是,在 IDE 上的 AI Coding 插件則提供了更加豐富的能力,如 AST、Debug、FQN 查找等等。
典型的基于 VSCode 的 AI Coding 工具,提供了十個左右的工具,而基于 JetBrains 的 AI Coding 插件(如 AutoDev、JetBrains Junie)則提供了 20 個左右的工具,而這些只是基礎(chǔ)的 IDE 上的能力。
而隨著 AI Coding 進(jìn)一步向需求、部署、運維等方向發(fā)展,相關(guān)的工具生態(tài)勢必會更加豐富。
MCP 開源生態(tài)已經(jīng)形成
MCP(Model Context Protocol)是由 Anthropic 公司(Claude 模型) 推出的一個協(xié)議,它通過提供一種標(biāo)準(zhǔn)化的接口,LLM 應(yīng)用可以訪問外部信息、工具和資源。盡管我們在 AutoDev 提供了強(qiáng)大的自定義能力,諸如于 Custom Agent 等能力,但是:
- 有些工具是我們無法預(yù)知的,如某些公司內(nèi)部的工具;
- MCP 等工具的生態(tài)是非常豐富的,并且正在成為一個標(biāo)準(zhǔn)。(盡管國內(nèi)可能有一些不同)
但是,自打 Cursor、Cline 等編程工具引入了 MCP 之后,大量的 MCP 服務(wù)已經(jīng)在國外形成了一個生態(tài),特別是已經(jīng)有了非常多的開源實現(xiàn)。
AutoDev x MCP:雙向賦能
基于上述的思考,我們基于 MCP 相關(guān)的插件(MCP Plugin)和生態(tài)(io.modelcontextprotocol),構(gòu)建了 AutoDev x MCP 的雙向賦能方案。即:
- AutoDev 作為一個 MCP 服務(wù),可以被任何 Agent Tool 調(diào)用;
- AutoDev 作為一個 MCP 客戶端,可以調(diào)用任何 MCP 服務(wù)。
通過這兩種方式來沉淀我們在 MCP 方面的能力。
AutoDev 作為 MCP 服務(wù)端
我們基于 JetBrains 的 MCP 方案,提供構(gòu)建了 AutoDev 作為一個 MCP 服務(wù)的能力(注:需要在配置中開啟 MCP 能力)。你只需要通過 JSON 來配置即可 ,如下是 Cline 插件中的配置示例:
{
"mcpServers": {
"AutoDev": {
"command": "npx",
"args": [
"-y",
"@jetbrains/mcp-proxy"
],
"disabled": false,
"autoApprove": []
}
}
}
在當(dāng)前的版本里,我們只基于官方提供的能力,加了一些數(shù)據(jù)庫相關(guān)的能力,其它能力需要等有合適的國產(chǎn) MCP 服務(wù)后再進(jìn)行擴(kuò)展。
AutoDev 作為 MCP 客戶端
相似的,你需要在 AutoDev 的 Custom Agent 頁面配置相關(guān)的 MCP 服務(wù),如下是 MCP 官方提供的示例
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Volumes/source/ai/auto-dev"
]
}
}
}
隨后,這個 MCP 服務(wù)提供的工具,就可以在 AutoDev 中被調(diào)用了。如下是轉(zhuǎn)換為 DevIns 后的示例:
/list_directory
```json
{
"path": "/Volumes/source/ai/autocrud/docs/mcp"
}
```
現(xiàn)在,借助于強(qiáng)大的 AutoDev DevIns Command,你可以在 AutoDev 中調(diào)用任何 MCP 服務(wù),當(dāng)然 Agent 也是可以的。