文件 v0.30.0

MCP Client

Agenvoy 的 MCP client 讓 agent 得以呼叫任何 MCP server 所暴露的 tool。Client 與 server 共用同一個套件(internal/runtime/mcp),建構於官方 modelcontextprotocol/go-sdk 之上。

設定層級

兩層 — session 層覆寫 global 層:

~/.config/agenvoy/mcp.json                        <- global
~/.config/agenvoy/sessions/<sid>/mcp.json         <- session-scoped

JSON 格式

{
  "servers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
    },
    "remote-api": {
      "url": "https://api.example.com/mcp",
      "headers": { "Authorization": "Bearer ${TOKEN}" }
    }
  }
}

commandurl 互斥。envheadersargs 內的 ${VAR} / $VAR 佔位符會在啟動時以 os.Expand 展開。

Transport 類型

類型 設定鍵 SDK transport 使用情境
stdio command + args + env CommandTransport 本地 CLI(npx、原生 binary)
Streamable HTTP url + headers StreamableClientTransport 遠端服務、長時運行的 MCP server

兩種 transport 皆由 SDK 處理;Agenvoy 只負責提供指令或端點,以及注入 header 的 HTTP client。

管理

工作 TUI HTTP
列出 server /mcp GET /v1/mcp
新增 server /mcp POST /v1/mcp
移除 server /mcp POST /v1/mcp/remove
連線狀態 /mcp GET /v1/mcp/status
健康檢查 /mcp GET /v1/mcp/health
重連並重新註冊工具 /mcp POST /v1/mcp/reconnect

新增流程會詢問 server 名稱、transport(Local stdio / Remote HTTP)、類型專屬欄位與 scope。Scope 僅寫入一個檔案——global 寫 ~/.config/agenvoy/mcp.json,session 寫對應的 ~/.config/agenvoy/sessions/<sid>/mcp.json。已無 agen mcp CLI 子指令。

Tool 命名

MCP 暴露的 tool 以下列格式自動註冊:

mcp__<server_name>__<tool_name>

範例:mcp__github__create_issuemcp__sqlite-notes__read_query

結果大小上限

每個 MCP tool 結果上限為 1 MiB。超過時,結果會被截斷並附上標記:

[mcp output truncated: <total> bytes total, <kept> kept]

這避免觸發 OpenAI Responses API 的 10 MB 單一 tool 輸出上限而引發 same-signature 的 retry 風暴。對大型 table 執行 SQLite SELECT * 會撞到此限制 — 請加上 LIMIT / WHERE

Confirm 行為

MCP tool 走最保守的預設:

批次操作請用 agen run。臨時使用則接受逐次 confirm 的成本。

生命週期

推薦 server

零認證、本地執行(不需 API key):

Server 用途
mcp-server-sqlite 對本地 .db 檔執行 SQL
@modelcontextprotocol/server-memory 持久化知識圖譜
@playwright/mcp 瀏覽器自動化(會下載 chromium)
@modelcontextprotocol/server-postgres 本地 Postgres 連線
mcp-server-time 時區轉換 / 相對時間

避免註冊能力與內建 tool 重疊的 MCP server(例如 filesystemgitfetchshell)— 重複只會膨脹 LLM 的 tool 清單。

EN