FirstKey

io.github.FirstKeyHQ由 GitHub 帳號 FirstKeyHQ 發布v0.1.0更新於 Oct 24, 2026

FirstKey MCP: agent wallets, free cycles faucet, and one-command site deploys on ICP.

已驗證Streamable HTTP可網頁執行雲端與基礎設施金融

概覽

AI 產生的概覽

執行於 Internet Computer 的遠端 MCP 伺服器,讓助理建立代理錢包、領取免費 cycles、部署靜態網站並查詢兌換報價。

可以做什麼
  • 建立 Ed25519 錢包,回傳 principal 與僅出現一次的私鑰
  • 領取一次性免費 cycles 補助,並查詢某個 principal 的 cycles 餘額
  • 部署靜態網站 canister、分塊上傳大型檔案,並回傳網站網址
  • 取得用來替代理儲值的 Fuel 卡片付款連結
  • 查詢唯讀的 ICPSwap 兌換報價(依代幣或帳本 principal)
適用情境
適合需要讓代理在 Internet Computer 上擁有自己的鏈上身分與託管能力、又不想自行維運基礎設施的情境:建立錢包、取得啟動 cycles、發布小型靜態網站,或在操作前查看兌換價格。
執行需求
使用 mcp.firstkey.io 的遠端 Streamable HTTP 端點;未宣告任何套件、API 金鑰或環境變數。用戶端需透過 HTTP 使用 JSON-RPC 2.0 並接受純 JSON 回應;伺服器無狀態,CORS 開放。
安裝前請注意
create_wallet 會回傳一次 PKCS#8 私鑰且不儲存,取得該回應的人即可控制該錢包。部署與 faucet 補助對每個代理 principal 僅限一次免費使用,後續部署需透過 Fuel 連結付費。部署類工具會建立 canister 並上傳檔案,寫入鏈上狀態並消耗 cycles。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 FirstKey,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.FirstKeyHQ%2Ffirstkey-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "firstkey": {
      "type": "http",
      "url": "https://mcp.firstkey.io/mcp"
    }
  }
}

README

FirstKey MCP Server

An MCP (Model Context Protocol) server running as a canister on the Internet Computer. One integration point that every MCP-compatible agent framework consumes natively: LangChain/LangGraph, CrewAI, AutoGen, Vercel AI SDK, OpenAI Agents SDK, Google ADK, Claude Desktop, Cursor, and more.

Endpoint: POST https://mcp.firstkey.io/mcp (JSON-RPC 2.0, Streamable HTTP)

Plain JSON responses, stateless (no session ids). CORS enabled (*).

Tools

ToolWhat it does
create_walletGenerates a fresh Ed25519 wallet (principal + PKCS#8 PEM private key). The key is returned once and never stored.
claim_faucet_grantClaims the one-time free 1T cycles grant from the FirstKey faucet for an agent principal.
deploy_siteCreates a site canister, installs the static host, uploads files, returns the live https://<canister>.icp.net URL. The agent becomes a controller of its own site. One free deploy per agent.
deploy_upload_chunkChunked upload of large files to an already-deployed agent site.
check_cyclesReads a principal's cycles balance on the cycles ledger.
get_fuel_linkReturns the FirstKey Fuel card-payment link to refuel an agent (https://firstkey.io/fuel?for=<principal>).
get_swap_quoteLive read-only ICPSwap quote (on-chain factory→pool): pay token/amount → receive amount + implied price. Symbols or ledger principals; no tokens move.

Quick test

bash
URL=https://mcp.firstkey.io/mcp# initializecurl -s $URL -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}' | head -c 600# list toolscurl -s $URL -H 'Content-Type: application/json' \  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | python3 -c "import json,sys; [print(t['name']) for t in json.load(sys.stdin)['result']['tools']]"# create a walletcurl -s $URL -H 'Content-Type: application/json' \  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"create_wallet","arguments":{}}}'

Architecture

  • http_request (query): serves initialize, tools/list, ping, CORS preflight, /.well-known/ic-domains, and a landing page.
  • tools/call upgrades to http_request_update (update context) because it makes inter-canister calls: raw_rand (wallet), the faucet's claim_for (grants), the cycles ledger (balances), and the management canister (create_canister_with_extra_cycles / install_code / update_settings for deploys).
  • The static-site host WASM (firstkey-static-host) is embedded via include_bytes! and installed into every deployed site canister.
  • Deploy pool: the canister's own cycles balance. One free deploy per agent principal (tracked in stable memory); when the pool can't cover a deploy the tool returns the Fuel link instead.

Build & deploy

bash
export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"cd ~/workspace/firstkey-static-host && cargo build --target wasm32-unknown-unknown --releasecd ~/workspace/firstkey-mcp && cargo build --target wasm32-unknown-unknown --release
# create (needs ~5.5T cycles on the strider identity's cycles ledger)icp canister create -n ic --detached --cycles "5.5t" \  --controller fhvid-ondyx-ziq2v-udsry-cfgki-okcur-gcryu-2wwai-b63ku-ptgkk-yqe \  --controller o5joj-543gr-ibdnq-q6f26-sbevy-iorvz-lqo2i-ocyr7-crp2u-sggj7-cae \  --identity strider -q# installicp canister install <CANISTER> \  --wasm ~/workspace/firstkey-mcp/target/wasm32-unknown-unknown/release/firstkey_mcp.wasm \  -n ic --identity ops -y# authorize on the fauceticp canister call --network ic 3l667-lyaaa-aaaam-ajkqa-cai set_mcp_canister \  --candid ~/workspace/firstkey-faucet/faucet.did --identity ops \  '(principal "<MCP_CANISTER>")'

Custom domain (mcp.firstkey.io)

DNS records needed at Porkbun (see DNS.md):

  1. CNAME mcp.firstkey.io → mcp.firstkey.io.icp1.io
  2. TXT _canister-id.mcp.firstkey.io → <canister-id>
  3. CNAME _acme-challenge.mcp.firstkey.io → _acme-challenge.mcp.firstkey.io.icp2.io

Then validate + register:

bash
curl 'https://icp.net/custom-domains/v1/mcp.firstkey.io/validate'curl -X POST 'https://icp.net/custom-domains/v1/mcp.firstkey.io'curl 'https://icp.net/custom-domains/v1/mcp.firstkey.io'  # poll until "registered"

The canister already serves /.well-known/ic-domains.

Registry publishing

  • Official MCP registry (registry.modelcontextprotocol.io): see registry/server.json (draft). Publish via GitHub OIDC from the repo's CI.
  • Smithery (smithery.ai/new): submit the public HTTPS URL once mcp.firstkey.io is live.

Faucet counterpart

claim_for(agent) lives on the faucet canister (3l667-lyaaa-aaaam-ajkqa-cai, source ~/workspace/firstkey-faucet/). It enforces the once-per-principal rule against the agent principal and performs the standard 1T ledger grant. Only the principal set via set_mcp_canister (controller-only) may call it.

來源:README.md,提交 90944a4

工具

0
SourceWeft 尚未讀取此伺服器的工具。

版本歷史

1
  1. v0.1.0最新Sep 24, 2026

評分

已滿足適用檢查項的 75%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。