
如何0代碼將存量 API 適配 MCP 協議?
目前已經有大量服務和應用基于 MCP 實現,例如我們可以使用 GitHub-MCP,用自然語言提交代碼、創建 PR;利用 Figma MCP,讓 AI 直接生成 UI 圖,接入 Browser-tools-MCP 后,甚至還能讓 cursor 根據瀏覽器控制臺中的元素節點和打印的日志進行代碼調試。在 MCP 官方倉庫里,提供了諸如 Google Drive、Slack、Git 以及多種數據庫的 MCP 服務。而且它作為一項開放標準,MCP 獲得了 AI 社區的廣泛認可,眾多第三方開發者紛紛投身其中,開發了各類 MCP 服務,每天都有數百個新的 MCP 服務問世。Anthropic 作為發布者,也一直在積極推動 MCP 的發展,持續優化協議的實現,同時大力開展對開發者的相關教育工作。
MCP 協議的興起為傳統應用提供了新的技術路徑。基于 MCP 的標準化接入能力,我們開發了 APISIX-MCP 服務,并在開源版本 Apache APISIX 上實現了大語言模型與 APISIX Admin-API 的對接,支持通過自然語言交互完成 APISIX 網關資源的查詢與管理,目前 APISIX-MCP 已經實現下列操作:
get_resource
: 按類型檢索資源(路由、服務、上游等)
delete_resource
: 按 ID 刪除資源
create_route
/
update_route
/
delete_route
: 管理路由
create_service
/
update_service
/
delete_service
: 管理服務
create_upstream
/
update_upstream
/
delete_upstream
: 管理上游
create_ssl
/
update_ssl
/
delete_ssl
: 管理SSL證書
create_or_update_proto
: 管理 protobuf 定義
create_or_update_stream_route
: 管理流式路由
get_all_plugin_names
: 獲取所有可用插件名稱
get_plugin_info
/
get_plugins_by_type
/
get_plugin_schema
: 獲取插件配置
create_plugin_config
/
update_plugin_config
: 管理插件配置
create_global_rule
/
update_global_rule
: 管理插件全局規則
get_plugin_metadata
/
create_or_update_plugin_metadata
/
delete_plugin_metadata
: 管理插件元數據
get_secret_by_id
/
create_secret
/
update_secret
: 管理密鑰
create_or_update_consumer
/
delete_consumer
: 管理消費者
get_credential
/
create_or_update_credential
/
delete_credential
: 管理消費者憑證
create_consumer_group
/
delete_consumer_group
: 管理消費者組
APISIX-MCP 目前已經開源并發布到了 npm(apisix-mcp npm[1])及 Github (apisix-mcp GitHub[2]),你可以通過任一支持 MCP 服務的 AI 客戶端進行配置,例如 claude desktop,cursor 或者通過 Vscode 中的 cline 插件。這里以 cursor 為例為大家演示如何配置。
進入 Cursor 設置頁面
mcp.json
配置文件。
// mcp.json
{"mcpServers": {? ? "apisix-mcp": {? ? ? "command": "npx",? ? ? "args": ["-y", "apisix-mcp"],? ? ? "env": {? ? ? ? "APISIX_SERVER_HOST": "your-apisix-server-host",? ? ? ? "APISIX_ADMIN_API_PORT": "your-apisix-admin-api-port",? ? ? ? "APISIX_ADMIN_API_PREFIX": "your-apisix-admin-api-prefix",? ? ? ? "APISIX_ADMIN_KEY": "your-apisix-api-key"? ? ? }? ? }? }}
在配置文件中的
mcpServers
字段中,新增名為
apisix-mcp
的服務,這個名稱也可以自行更改,然后配置運行 MCP 服務的命令。
command
為
npx
意為使用 node.js 自帶的命令執行工具運行腳本,
args
為
-y
和
apisix-mcp
,
-y
代表在執行命令的時候需要先安裝依賴,
apisix-mcp
則為 npm 中的包名。在
env
字段中,我們可以填入 APISIX 服務訪問地址,Admin API 的端口、前綴和以及用于認證 key,這些環境變量都有默認值,如果你直接啟動 APISIX 后沒有做任何自定義配置就無需傳入
env
字段,各個環境變量對應的默認值如下:
變量描述 | 默認值 | |
---|---|---|
APISIX_SERVER_HOST | Host that have access to your APISIX server | http://127.0.0.1 |
APISIX_ADMIN_API_PORT | Admin API port | 9180 |
APISIX_ADMIN_API_PREFIX | Admin API prefix | /apisix/admin |
APISIX_ADMIN_KEY | Admin API authentication key | edd1c9f034335f136f87ad84b625c8f1 |
Cursor 配置成功示例
由于目前不同的 MCP 客戶端的實現有所不同,如果發現配置失敗,我們也可以參考 APISIX-MCP GitHub 倉庫中的文檔,利用源碼構建項目后再重新修改配置文件。
選擇 AI Agent 模型
"Help me create a route with path /api for accessing https://httpbin.org upstream, need to configure cors and rate limit plugin appropriately. Print the route information to me after configuring"
中文翻譯:“幫我創建一條路徑為 /api 的路由,用于訪問上游 https://http-bin.org,需要配置 CORS 和 限流限速插件。配置完成后把路由信息打印給我”
get_plugins_list
獲取所有插件的名稱
get_plugin_schema
去查看不同插件的詳細配置信息調用
create_rotue
創建路由調用
update_route
為路由添加前面查詢到的插件配置調用
get_route
查看路由是否配置成功,路由配置是否正確
httpbin
/api/*
GET
,
POST
,
PUT
,
DELETE
,
PATCH
,
HEAD
,
OPTIONS
allow_origins: *
allow_methods: *
allow_headers: *
expose_headers: X-Custom-Header
max_age: 3600
allow_credential:?false
count: 100
time_window: 60
key: remote_addr
rejected_code: 429
policy:?local
type: roundrobin (負載均衡策略采用輪詢)
upstream ndoe: httpbin.org:443 (指向的后端服務地址)
上述過程中,我們僅通過一輪對話,就通過自然語言的方式讓 AI 幫我創建一個配置了跨域和限流限速的路由,相較于自己創建路由,借助 AI 來操作具有諸多優勢:
降低認知成本:降低認知成本。以往自行創建路由時,需頻繁查閱文檔、記憶各種參數格式,如今借助 AI,這些繁瑣操作均可以大大省略。
自動化工作流:AI 能夠智能解析用戶需求,自主完成需求分析,將創建路由的復雜任務拆解為多個步驟,并按序逐步執行,整個過程無需人工過多介入。
閉環驗證:路由配置完成后,AI 會自動對配置結果進行檢查,并及時向用戶反饋驗證信息,確保配置準確。
迭代優化:若后續需要調整或優化配置,用戶只需與 AI 持續對話,AI 便能依據新需求靈活調整配置。這種交互模式將復雜的配置過程轉化為自然的對話體驗,同時保持了配置的準確性和可驗證性。
而這些實現都得益于 MCP 協議將我們的需求進行語意解析,再根據我們的需求調用不同的工具,最終通過 Admin API 完成操作。需要注意的是,目前 APISIX-MCP 并非追求完全替代人工配置,而是著眼于優化高頻操作場景的效率。其價值在配置調試和快速驗證環節尤為突出,這種定位使其能夠與傳統管理方式形成有效互補。隨著 MCP 生態的持續發展,此類工具在 API 管理領域的深度集成值得期待。
MCP 的出現為復雜 API 系統的智能化操作開辟了新的可能性,我們希望 APISIX-MCP 能夠幫助你快速上手 Apache APISIX。后續 APISIX 將會推出更多處理 AI 流量相關的插件,也會在 API 管理方面探索更多與 AI 結合的可能性。我們相信,AI 與 API 管理的融合將持續推動運維效率的革新,為開發者帶來更智能、更高效的基礎設施管理體驗。
[1]?apisix-mcp npm:?https://www.npmjs.com/package/apisix-mcp
[2]?apisix-mcp GitHub:?https://github.com/api7/apisix-mcp
原文轉載自:https://mp.weixin.qq.com/s/9A68sGOLa93O5QyT613lAA