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 分