MCP 工具
這些是 keymitt mcp 提供給代理的工具。佔位符的寫法:密碼是 {{secret:NAME}},同一個請求裡宣告的暫存檔是 {{file:ID}}。
list_secrets
沒有參數。回傳每組密碼的名稱、說明、允許的管道、程式與主機,以及它目前能不能用。絕不包含值。
run_with_secrets
直接執行程式(不經過 shell),並代入密碼。
| 參數 | 型別 | 說明 |
|---|---|---|
command | string[] | 程式與參數。程式是 PATH 上的名稱或絕對路徑。可以包含 {{file:ID}},絕不能包含 {{secret:…}} |
stdin | string | 寫進標準輸入。可以包含 {{secret:NAME}} 與 {{file:ID}} |
env | object | 環境變數。每個值都必須剛好是一個 {{secret:NAME}} 佔位符 |
files | {id, content}[] | 僅限擁有者的暫存檔,執行完刪除。內容可以包含密碼 |
cwd | string | 工作目錄,預設是伺服器的工作目錄 |
timeout_secs | number | 預設 60,最多 600 |
以下情況會在跳出任何視窗之前就被拒絕:
- 參數裡出現密碼;
- 政策不允許這組密碼走這個管道,或給這支程式;
- 環境變數可能劫持程式:
PATH、HOME、載入器變數(LD_*、DYLD_*)、直譯器與工具家族(NODE_*、PYTHON*、GIT_*、CARGO_*…)、代理伺服器、CA 憑證、SSLKEYLOGFILE、pager 與編輯器——或政策限制了可用的名稱; - 參數、stdin 或檔案超過 1 MiB,或宣告超過 16 個檔案;
- 核准視窗的內容會超過 700 字;
- 完全沒用到密碼——這種指令不需要 keymitt。
程式只會在 PATH 的絕對路徑目錄中尋找;在 macOS 與 Linux 上,它在自己的程序群組裡執行,結束時整個群組都會被終止。
回傳 exit_code、timed_out、stdout、stderr(各最多 256 KiB,已遮蔽)以及遮蔽次數 redactions。
{
"command": ["curl", "-sS", "--config", "-"],
"stdin": "url = \"https://api.example.com/me\"\nheader = \"Authorization: Bearer {{secret:api}}\""
}http_request
由 keymitt 自己透過系統的 curl 送出請求,而且只送往政策對每一組用到的密碼都允許的主機。
| 參數 | 型別 | 說明 |
|---|---|---|
method | string | GET(預設)、HEAD、POST、PUT、PATCH、DELETE、OPTIONS |
url | string | 不能包含佔位符或帳密 |
headers | object | 值可以包含 {{secret:NAME}} |
body | string | 可以包含 {{secret:NAME}} |
timeout_secs | number | 預設 30,最多 300 |
不跟隨重新導向。標頭名稱與值都會檢查,換行字元無法注入其他標頭,傳輸用的標頭(Host、Content-Length、 Transfer-Encoding、Connection…)一律拒絕。內容上限 1 MiB。curl 以 --disable 啟動,你的 ~/.curlrc 無法加料。
回傳 status、headers、body(最多 256 KiB)、curl 失敗時的 error,以及遮蔽次數 redactions——全部已遮蔽。
{
"url": "https://api.github.com/user",
"headers": { "Authorization": "Bearer {{secret:github}}" }
}read_file_redacted
| 參數 | 型別 | 說明 |
|---|---|---|
path | string | 絕對路徑,或相對於伺服器工作目錄 |
max_bytes | number | 預設 262144,最多 4 MiB |
只能讀 MCP 伺服器工作目錄底下(除非那是家目錄或檔案系統根目錄)以及你設定的 read_roots。憑證存放處與金鑰檔一律拒絕,FIFO 與裝置檔也是。 遮蔽所有已登記密碼的值,以及任何看起來像憑證的東西:password、secret、token、api_key、client_secret、 dsn 這類鍵的值;私鑰區塊;URL 裡的密碼;以及常見的 token 格式(JWT、GitHub、GitLab、Slack、AWS、Google、npm、 OpenAI 與 Anthropic 的金鑰)。拒絕讀取二進位檔。不需要核准:沒有任何密碼離開 keymitt。
request_secret
| 參數 | 型別 | 說明 |
|---|---|---|
name | string | 建議的名稱:英數字、.、_、- |
description | string | 這是什麼密碼 |
intended_use | string | 會搭配哪些程式或主機使用 |
回傳一行 keymitt add … 指令讓代理轉給你。由你在自己的終端機執行;值永遠不會被打進對話裡。