MCP協(xié)議是什么?JSON-RPC統(tǒng)一AI工具集成標準詳解

MCP:一個“意外”統(tǒng)一AI工具的協(xié)議
零侵入式集成
AI Agent 開發(fā)者常被平臺兼容性卡住:VS Code 擴展要學 LSP 和 Extension API,Chrome 插件得寫 manifest.json 和 content script,本地工具又要搞 CLI 或 IPC。每個平臺都像一道墻。
MCP(Machina Communication Protocol)沒打算當救世主。它只是定義了一組極簡的 JSON-RPC 調用約定——list-tools、call-tool、notify,加上一個 HTTP 或 stdio 傳輸層。結果 VS Code 的 mcp-server 擴展、Chrome 的 mcp-client 插件、還有 curl 命令行工具,都直接認它。沒人牽頭制定標準,但大家不約而同地往同一個接口上靠。
這不是“設計出來的統(tǒng)一”,是開發(fā)者用腳投票投出來的事實協(xié)議。
技術價值
零侵入,真零侵入
你不需要改 VS Code 源碼,也不用給 Chrome 提 PR。只要啟動一個進程監(jiān)聽 /mcp 端點(或通過 stdin/stdout),返回符合 MCP 規(guī)范的 JSON 響應,VS Code 就能發(fā)現(xiàn)你的工具、調用它、接收它的結果。
比如在 VS Code 里想讓 AI Agent 讀取當前文件內容,不用碰任何編輯器內部 API。你只管在 MCP Server 里實現(xiàn)一個 read-file 工具:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/mcp', methods=['POST'])
def mcp_endpoint():
req = request.json
if req['method'] == 'list-tools':
return jsonify({
'tools': [{
'name': 'read-file',
'description': 'Read contents of a file by path',
'input_schema': {'type': 'object', 'properties': {'path': {'type': 'string'}}}
}]
})
elif req['method'] == 'call-tool' and req['params']['name'] == 'read-file':
path = req['params']['input']['path']
try:
with open(path) as f:
content = f.read()
return jsonify({'result': content})
except Exception as e:
return jsonify({'error': str(e)})
if __name__ == '__main__':
app.run(port=5000)VS Code 自動把“當前文件路徑”塞進 input,你只負責讀文件、返回內容。編輯器邏輯、UI、權限模型——全由 VS Code 自己處理。
跨平臺不是口號,是默認行為
MCP 不綁定操作系統(tǒng)、不綁定 GUI 工具包、不依賴 Node.js 或 Python 運行時。它只規(guī)定消息格式和傳輸方式。
所以:
- 你在 macOS 上用 Rust 寫的 MCP Server,Chrome 插件能調;
- 你在 Linux 上跑的 Python Server,VS Code for Windows 能連;
- 你在 CI 里用 Bash 腳本模擬 MCP Server,
curl就能測試交互。
Firefox、Neovim、Obsidian、甚至本地 CLI 工具,只要愿意發(fā) HTTP POST 或讀寫管道,就能接入。沒有“適配層”,只有“照做”。
Server 端輕到可以扔進任意進程
MCP Server 不是框架,不是 SDK,不是中間件。它就是一個能收 JSON、能回 JSON 的端點。你可以用 Go 的 net/http、Rust 的 axum、Node 的 express,甚至用 socat 搭個管道代理。
輕量意味著:
- 啟動快(毫秒級);
- 內存占用低(幾十 KB);
- 可嵌入已有服務(比如你的 LangChain 應用進程里直接起一個
/mcp路由); - 出問題好排查(日志就一行
Received call-tool: read-file)。
對開發(fā)者的實際意義
快速驗證想法,不寫膠水代碼
你想試試“AI 自動重構函數(shù)”?不用先啃 VS Code 文檔三個月。寫一個 MCP Server,暴露 refactor-function 工具,輸入 AST 節(jié)點范圍,輸出新代碼字符串。VS Code 自動把光標位置、當前文件內容傳給你。核心邏輯寫完,集成就完成了。
創(chuàng)業(yè)者不用從零建生態(tài)
Chrome Web Store 有 3 億月活用戶,VS Code Marketplace 有 6 萬擴展。MCP 讓你能直接站在這些用戶基礎上起步。
比如做“網(wǎng)頁數(shù)據(jù)提取 Agent”:
- 用戶裝 Chrome MCP 插件(官方維護,一次安裝,永久可用);
- 你只發(fā)布自己的 MCP Server(Docker 鏡像 or 一鍵安裝腳本);
- 用戶打開插件設置,填入
http://localhost:5000/mcp; - 之后所有網(wǎng)頁操作請求,都走你的 Server。
沒有應用商店審核,不依賴平臺分成,用戶數(shù)據(jù)不出瀏覽器,你只管優(yōu)化提取邏輯。
真實場景
代碼編輯器里的“隱形協(xié)作者”
- AI 實時掃描整個 workspace,發(fā)現(xiàn)未使用的 import,觸發(fā)
remove-import工具; - 你選中一段代碼按快捷鍵,Agent 調用
explain-code工具,結果直接渲染在編輯器注釋里; - 提交前自動運行
lint-diff工具,只檢查本次修改的行。
所有動作都通過 MCP 調用,編輯器負責 UI、光標、文件系統(tǒng)權限;你只提供語義能力。
瀏覽器里的“確定性自動化”
不是 Selenium 那種靠 selector 硬拖的自動化。MCP 允許 Agent 直接操作瀏覽器上下文:
get-page-dom返回結構化 DOM 樹(不是 HTML 字符串);fill-form接收字段名和值,由瀏覽器插件精準填充;download-attachment返回二進制流,Agent 可直接保存或解析。
銀行登錄、發(fā)票下載、競品價格爬取——規(guī)則明確的操作,成功率接近 100%。
一條 Server,多端復用
你寫一個基于 Llama 3 的本地知識庫 Agent,暴露 query-knowledge-base 工具。
- VS Code 插件調它,查項目文檔;
- Chrome 插件調它,查公司內部 Wiki;
- 終端里
curl -X POST http://localhost:5000/mcp -d '{"method":"query-knowledge-base","params":{"query":"如何配置 SSO?"}}'也能查。
Server 邏輯一份,部署一次,所有前端共享。
下一步,現(xiàn)在就能做
- 看懂協(xié)議:讀 MCP Spec 的
protocol.md,重點看list-tools和call-tool的 JSON 結構; - 跑通最小閉環(huán):用上面那段 Flask 代碼,加一個
echo工具,用curl調通; - 連上 VS Code:裝 MCP for VS Code 擴展,指向你的 Server;
- 換語言重寫一次:用 Rust(
axum)或 Go(net/http)實現(xiàn)同樣功能,體會無依賴的輕量; - 加一個真實工具:比如
git-diff-summary,用git diff --staged解析出變更點,返回自然語言摘要。