Kadro Mcp Server

io.github.amvaleh由 GitHub 帳號 amvaleh 發布v1.0.1更新於 Oct 24, 2026

Search and book real photographers on Kadro (Iran) on a user's behalf, ending with a payment link.

已驗證Streamable HTTP可網頁執行位置與生活商業與電商

概覽

AI 產生的概覽

讓助理搜尋 Kadro 上伊朗的攝影師與方案,並代為建立預訂保留,最後提供付款連結由使用者自行完成付款。

可以做什麼
  • 列出 Kadro 的拍攝類型及其數字 id
  • 依拍攝類型與可選城市尋找可預訂攝影師,回傳評分、評論數與 uid
  • 查詢某攝影師在指定拍攝類型下實際可訂的方案與價格(托曼)
  • 依方案、日期時間與地址建立訪客預訂保留
  • 回傳付款連結,供使用者自行驗證手機並付款
  • 查詢預訂狀態(待付款、已過期、已付款待攝影師確認、已確認、已拒絕)
適用情境
適合使用者想在伊朗透過 Kadro 尋找並預訂攝影師、比較方案與價格,或查詢既有預訂是否已付款或已確認的情況。
執行需求
清單顯示為遠端 streamable HTTP 端點,未宣告驗證方式。README 描述的是自架 Node.js 程序:需 npm install、透過自助註冊腳本取得 KADRO_API_TOKEN,並使用連接埠(預設 3100),MCP 端點為 POST /mcp;亦支援 Docker。
安裝前請注意
create_reservation 會在免登入的情況下以使用者名義實際保留攝影師 15 分鐘時段,呼叫前應確認細節。伺服器不接收卡號、驗證碼或密碼,付款連結須由使用者本人開啟。已付款不等於攝影師已確認。自架權杖預設每天限 5 次請求。

安裝

在 SourceWeft 中

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

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

交給代理程式安裝

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

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

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

其他 MCP 客戶端

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

{
  "mcpServers": {
    "kadro": {
      "type": "http",
      "url": "https://www.shootempire.com/kadro-mcp-relay/mcp"
    }
  }
}

README

kadro-mcp-server

[M8ven Score]

An MCP (Model Context Protocol) server that lets AI assistants search Kadro photographers/packages and book a guest reservation on a user's behalf, ending with a payment link — the assistant never touches payment or login itself. It's a thin wrapper around Kadro's Api::Agent::V1 REST API (see the Main-Rails repo, app/controllers/api/agent/v1/).

Tools

  • search_shoot_types — list service types and their ids.
  • search_photographers — find photographers for a shoot_type_id (+ optional city_id).
  • get_photographer_packages — a photographer's real packages and prices.
  • create_reservation — place a 15-minute guest hold. No payment involved.
  • get_payment_link — a URL for the human to open themselves to verify their phone and pay. This is the boundary: no tool here ever asks for or handles card details, OTP codes, or passwords.
  • get_reservation_status — check payment/confirmation status. Paid is not the same as confirmed — see the tool description.

Setup

bash
npm installcp .env.example .envnpm run register -- "your-platform-name" "[email protected]"   # prints a token# paste the printed KADRO_API_TOKEN into .envnpm run buildnpm start   # listens on :3100 (or $PORT), MCP endpoint is POST /mcp

The registration is self-service and instant, capped at a daily_limit of 5 requests/day by default (see ApiPartner in Main-Rails). Email Kadro to request a higher limit for this server's token once it's actually deployed.

Running with Docker

bash
docker build -t kadro-mcp-server .docker run -p 3100:3100 --env-file .env kadro-mcp-server

Deploying on the same server as the Rails app

This is a separate Node process from the Rails app — it does not go through Capistrano. A reasonable setup, matching this server's existing Docker usage for other services (gitlab, typesense):

  1. Build and run the Docker image above on the server (or run npm run build && npm start under a process manager like systemd or pm2).

  2. Point a path or subdomain at it through whatever already terminates TLS for kadro.co (nginx, based on the existing setup). Example nginx snippet — adjust to match the real server-block layout, this repo has no visibility into it:

    nginx
    location /mcp {  proxy_pass http://127.0.0.1:3100/mcp;  proxy_set_header Host $host;  proxy_http_version 1.1;  proxy_set_header Connection "";}
  3. The public MCP endpoint ends up at something like https://www.kadro.co/mcp or https://mcp.kadro.co/mcp — whichever this repo's operator prefers. Put that URL in public/llms.txt (Main-Rails) once it's live, alongside the plain REST API section already there.

Verifying it's alive

bash
curl https://<wherever-it's-deployed>/healthz   # -> ok

來源:README.md,提交 fece373

工具

6

search_shoot_types

Search Kadro shoot types

List the photography/videography service types Kadro offers (e.g. wedding, industrial, portrait), each with a numeric shoot_type_id. Call this first if you don't already know the id for the kind of shoot the user wants.

無需輸入參數。

search_photographers

Search Kadro photographers

Find real, bookable photographers for a given shoot_type_id (from search_shoot_types), optionally narrowed to a city_id. Returns each photographer's uid (needed for every later call), display name, rating, review count, and city.

輸入參數city_idshoot_type_id必填

get_photographer_packages

Get a photographer's packages and prices

List the real, currently bookable packages (with prices, in Toman) a specific photographer offers for a given shoot_type_id. Rejects the shoot_type_id if that photographer doesn't actually offer it. Use the returned package id with create_reservation.

輸入參數shoot_type_id必填photographer_uid必填

create_reservation

Create a guest photographer reservation

Book a specific photographer for a specific package, date/time, and address on the user's behalf — no login required. This only places a 15-minute hold; it does NOT charge any money and does NOT require or accept any payment information. Immediately follow this with get_payment_link and give that URL to the human — they open it themselves to verify their phone number and pay. start_time must be an ISO 8601 timestamp at least 6 hours in the future. Pass a stable idempotency_key if you might retry this call, so a retry can't create a second reservation.

輸入參數city_id必填package_id必填start_time必填shoot_detailshoot_type_id必填address_detail必填idempotency_keyaddress_latitude必填photographer_uid必填address_longitude必填guest_display_name

get_reservation_status

Check a reservation's status

Check whether a reservation has been paid and confirmed. IMPORTANT: status values are 'awaiting_payment', 'expired', 'paid_awaiting_photographer_confirmation', 'confirmed', and 'rejected'. 'paid_awaiting_photographer_confirmation' means the customer paid but the photographer has not yet accepted the booking and could still decline or ask to reschedule — do not tell the user their booking is final until status is exactly 'confirmed'.

輸入參數slug必填

版本歷史

2
  1. v1.0.1最新Sep 26, 2026
  2. v1.0.0Sep 25, 2026

評分

已滿足適用檢查項的 100%

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

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分