About kadro-mcp-server
kadro-mcp-server connects AI assistants to Kadro's photographer listings and booking flow in Iran. It supports searches, package and price lookup, a temporary guest reservation, and a payment link that the person opens themselves.
Key features
- 01List photography service types
- 02Search photographers by service and city
- 03View packages and prices
- 04Create a 15-minute guest reservation hold
- 05Retrieve payment link and reservation status
Use cases
- 01Find photographers for a requested shoot type and city
- 02Compare photographer packages and prices
- 03Hold a booking before the customer pays
- 04Check whether a reservation is paid or confirmed
MCP support
The MCP server exposes Kadro photographer search and guest reservation operations to MCP clients. Payment and phone verification happen through a link opened by the person; tools do not handle card details, OTP codes, or passwords.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://www.shootempire.com/kadro-mcp-relay/mcpclaude mcp add --transport http amvaleh-kadro https://www.shootempire.com/kadro-mcp-relay/mcp{"mcpServers":{"amvaleh-kadro":{"type":"http","url":"https://www.shootempire.com/kadro-mcp-relay/mcp"}}}Open in Cursor{"servers":{"amvaleh-kadro":{"type":"http","url":"https://www.shootempire.com/kadro-mcp-relay/mcp"}}}Open in VS Code{"mcpServers":{"amvaleh-kadro":{"type":"http","url":"https://www.shootempire.com/kadro-mcp-relay/mcp"}}}{"mcpServers":{"amvaleh-kadro":{"serverUrl":"https://www.shootempire.com/kadro-mcp-relay/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
6This tool takes no parameters.
Details
From the project READMEkadro-mcp-server
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
npm install
cp .env.example .env
npm run register -- "your-platform-name" "[email protected]" # prints a token
# paste the printed KADRO_API_TOKEN into .env
npm run build
npm 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
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):
-
Build and run the Docker image above on the server (or run
npm run build && npm startunder a process manager likesystemdorpm2). -
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:
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 ""; } -
The public MCP endpoint ends up at something like
https://www.kadro.co/mcporhttps://mcp.kadro.co/mcp— whichever this repo's operator prefers. Put that URL inpublic/llms.txt(Main-Rails) once it's live, alongside the plain REST API section already there.
Verifying it's alive
curl https://<wherever-it's-deployed>/healthz # -> ok
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.