MCP協議解析:JSON-RPC 2.0驅動LLM連接工具與數據,賦能AI Agent開發
摘要:MCP協議:用JSON-RPC 2.0給LLM裝上“神經突觸”,Agent開發就靠它了想讓你的AI Agent真正“動起來”,而不是只會聊天?關鍵在于連接。MCP(Model Context Protocol)協議,就是那個能讓LLM像人腦一樣,通過“神經突觸”連接各種工具、數據和服務的底層框架。它基于JSON-RPC 2.0,輕量、高效,是構建下一代AI自動化系統的核心。一、MCP的四大核...

MCP協議:用JSON-RPC 2.0給LLM裝上“神經突觸”,Agent開發就靠它了
想讓你的AI Agent真正“動起來”,而不是只會聊天?關鍵在于連接。MCP(Model Context Protocol)協議,就是那個能讓LLM像人腦一樣,通過“神經突觸”連接各種工具、數據和服務的底層框架。它基于JSON-RPC 2.0,輕量、高效,是構建下一代AI自動化系統的核心。
一、MCP的四大核心能力:不止是API調用
很多人把MCP簡單理解為“給模型調API的協議”,這太小看它了。它的四大能力,構成了一個完整的Agent執行閉環:
- 工具發現與調用:Agent能動態發現Server提供了哪些工具(比如“發送郵件”、“查詢數據庫”),并像調用函數一樣調用它們。這解決了“模型不知道自己能干什么”的問題。
- 資源訪問與訂閱:Agent可以讀取Server提供的文件、數據庫記錄等資源,甚至訂閱其變化。比如,一個監控Agent可以訂閱服務器日志資源,一有錯誤就自動處理。
- 提示詞模板管理:Server可以提供預置的、高質量的提示詞模板。Agent調用工具時,自動套用最佳實踐模板,極大提升輸出質量的穩定性。
- 采樣控制與人機協同:這是安全關鍵。Agent在執行敏感操作(如刪除文件、大額支付)前,可以通過MCP協議將決策“采樣”回給人類用戶確認,實現可控的自動化。
商業價值點:這四大能力意味著,你可以將任何現有軟件服務(CRM、ERP、內部工具)快速封裝成MCP Server,瞬間讓成千上萬的AI Agent具備操作該服務的能力,實現服務的“AI化”分發。
二、四層架構:清晰分工,易于擴展
MCP的架構設計非常清晰,分為四層,開發者可以按需介入:
| 層級 | 名稱 | 職責 | 類比 |
|---|---|---|---|
| L1 | 傳輸層 | 負責客戶端與服務端之間的原始通信。支持stdio(本地進程通信)和HTTP + SSE(遠程流式通信)。 | 神經網絡的“軸突”,傳遞電信號。 |
| L2 | 協議層 | 定義消息格式。核心是JSON-RPC 2.0,規定了請求、響應、通知的結構。 | 神經信號的“編碼規則”。 |
| L3 | 能力層 | 實現四大核心能力(工具、資源、提示詞、采樣)的具體邏輯。 | 不同腦區的“功能分區”(視覺區、語言區)。 |
| L4 | 應用層 | 開發者編寫的業務邏輯,比如“查詢天氣工具”、“數據庫連接器”。 | 具體的“思維活動”或“行為”。 |
工程價值:這種分層讓調試變得簡單。通信問題查L1/L2,工具調用失敗查L3/L4,邏輯清晰,不會一團亂麻。
三、實戰:開發一個生產級“數據庫查詢”MCP Server
理論說再多,不如寫個例子。我們來構建一個能讓AI Agent查詢MySQL數據庫的MCP Server。這里用Python和官方的mcp庫。
1. 安裝與基礎結構
pip install mcp mysql-connector-python2. 核心代碼實現 (db_server.py)
import json
from typing import Any
import mysql.connector
from mcp.server import Server
from mcp.types import Tool, TextContent
import mcp.server.stdio
# 初始化MCP Server,給它一個名字
server = Server("mysql-query-server")
# 定義“工具”:這里是一個執行SQL查詢的工具
@server.tool("query_database")
async def query_database(sql: str) -> list[TextContent]:
"""執行只讀SQL查詢并返回JSON格式結果。"""
try:
# 安全警告:生產環境務必使用參數化查詢防止SQL注入!
conn = mysql.connector.connect(

host="localhost",
user="your_user",
password="your_password",
database="your_db"
)
cursor = conn.cursor(dictionary=True)
cursor.execute(sql)
results = cursor.fetchall()
cursor.close()
conn.close()
# 將結果轉為JSON字符串返回
return [TextContent(type="text", text=json.dumps(results, ensure_ascii=False))]
except Exception as e:
return [TextContent(type="text", text=f"查詢出錯: {str(e)}")]
# 定義“資源”:這里提供數據庫表結構作為資源,讓Agent了解數據庫
@server.resource("schema://tables")
async def get_schema() -> str:
"""返回數據庫所有表的結構信息。"""
# ... (連接數據庫,查詢information_schema的代碼,此處簡化)
schema_info = {"users": ["id", "name", "email"], "orders": ["id", "user_id", "amount"]}
return json.dumps(schema_info)
# 主函數:以stdio模式啟動Server
if __name__ == "__main__":
mcp.server.stdio.run_server(server)3. 部署與集成步驟
- 啟動Server:在終端運行
python db_server.py。它會通過stdin/stdout等待MCP客戶端的連接。 在AI客戶端(如Claude Desktop)中配置:在Claude的設置文件中添加:
{ "mcpServers": { "mysql-db": { "command": "python", "args": ["/path/to/db_server.py"] } } }- 測試:現在你可以對Claude說:“幫我查一下用戶表里有多少條記錄。” Claude會發現
query_database工具,生成SQLSELECT COUNT(*) FROM users,通過MCP調用你的Server,最終把結果告訴你。
可復制路徑:將這個Server部署在一臺固定服務器上,改用HTTP + SSE傳輸模式(修改run_server方式),你就能將這個數據庫查詢能力通過一個URL提供給所有支持MCP的AI客戶端和Agent框架,實現一次開發,多處調用。
四、下一步行動清單
- 動手跑通:復制上面的代碼,用你自己的一個簡單數據庫(甚至SQLite)跑通整個流程。感受一下Agent自動調用工具的神奇。
- 封裝你的服務:想想你手頭有什么重復性工作(比如整理報表、回復固定格式郵件),把它封裝成一個MCP Server的工具。
- 探索高級模式:試試“資源訂閱”功能。寫一個監控本地某個文件變化的Server,讓Agent在文件更新時自動觸發分析任務。
- 發布與商業化:將你開發的通用MCP Server(比如“PDF解析器”、“社交媒體發布器”)打包,在www.xmhny.cn(www.xmhny.cn)或類似平臺上作為插件發布。這是將你的技術能力直接產品化、貨幣化的最短路徑。
MCP不是未來,它已經是現在。掌握它,你就掌握了構建下一代智能自動化系統的“連接器”密碼。