MCP協(xié)議實戰(zhàn)指南:Open Notebook MCP Server開箱即用,支持Cursor/VS Code/Continue多IDE接入
摘要:想用AI Agent賺錢,卻被協(xié)議碎片化卡死?MCP不是又一個抽象標準——它是你Agent能同時跑在Cursor、VS Code、Continue和自研IDE里的通行證。 Open Notebook的MCP Server實現(xiàn)(GitHub: `open-notebook/mcp-server`)就是開箱即用的合規(guī)底座。它嚴格遵循MCP v0.3核心設計: - **單HTTP端點 + J...
想用AI Agent賺錢,卻被協(xié)議碎片化卡死?MCP不是又一個抽象標準——它是你Agent能同時跑在Cursor、VS Code、Continue和自研IDE里的通行證。
Open Notebook的MCP Server實現(xiàn)(GitHub: `open-notebook/mcp-server`)就是開箱即用的合規(guī)底座。它嚴格遵循MCP v0.3核心設計:
- **單HTTP端點 + JSON-RPC 2.0**:所有能力統(tǒng)一走`/mcp` POST,無WebSocket、無長連接,Nginx直轉即可上線;
- **能力聲明即契約**:`listTools`返回的每個tool必須含`name`、`description`、`input_schema`(JSON Schema),客戶端靠這個自動生成UI和參數(shù)校驗——少寫一個字段,Cursor就報“tool not found”;
- **跨客戶端兼容性不靠玄學**:Server只管按規(guī)范響應,Client負責適配渲染。實測同一Server,VS Code插件調用`git_diff`返回結構化patch,Continue直接把它塞進system prompt生成PR描述,零代碼修改。
真實開發(fā)場景:我們給某SaaS客戶做代碼審計Agent,用Open Notebook Server封裝了3個能力:`scan_codebase`(調用Semgrep)、`explain_vuln`(調用本地Llama3-70B)、`generate_fix`(調用Ollama+RAG)。部署命令僅3行:git clone https://github.com/open-notebook/mcp-server
cd mcp-server && pip install -e .
python server.py --host 0.0.0.0 --port 8080
關鍵配置只有兩處:
1. `server.py`里注冊端點:`app.add_mcp_tool(ScanCodebaseTool())`;
2. `tools/`目錄下每個tool類必須實現(xiàn)`input_schema`——比如`explain_vuln`的schema強制要求`cve_id: str, line_number: int`,否則Continue傳`{"cve": "CVE-2024-1234"}`會直接500。
避坑提示:
- ? 不要自己重寫`listTools`響應體結構——MCP Client硬編碼解析`tools[].input_schema`字段,漏掉`required: ["cve_id"]`會導致參數(shù)丟失;
- ? 不要用`/mcp/tools`這種自定義路徑——所有Client只認`/mcp`;
- ? 端口暴露后,立刻用`curl -X POST http://localhost:8080/mcp -d '{"jsonrpc":"2.0","method":"listTools","id":1}'`驗證,看到完整tool列表才算通。
工程收益直接算賬:原來為VS Code寫一套API、為Continue再寫一套WebSocket適配層,現(xiàn)在Server一次開發(fā),3個客戶終端復用,交付周期從2周壓到3天。上個月上線的審計Agent已接入6家客戶,按單終端年費$1200計,MCP Server省下的24人日開發(fā)量=多簽2個客戶。
下一步:
1. `git clone https://github.com/open-notebook/mcp-server`;
2. 替換`tools/example_tool.py`為你自己的Python函數(shù)(比如調用你的付費API);
3. 運行`python server.py`,用curl驗證`listTools`;
4. 把`http://localhost:8080/mcp`填進Cursor設置 → 立刻在右鍵菜單看到你的tool。
今天下午就能讓Agent在真實IDE里跑起來。