Kadro MCP server
kadro-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.
Related MCP server: restaurant-mcp
Setup
npm install
cp .env.example .env
npm run register -- "your-platform-name" "you@example.com" # 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 /mcpThe 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-serverDeploying 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 # -> okThis server cannot be deployed
Maintenance
Related MCP Connectors
Find local services, read availability, and create short-lived booking holds.
Find local service businesses and send requests the owner confirms. Sandbox by default.
Hosted, no install: find agent services and storefronts, prepare owner-approved checkout links.
Discover, read and book verified real-world businesses through one endpoint.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents and clients to check table availability and book restaurant reservations for a given date, time, and party size, returning either a confirmed booking or the nearest alternative slots. It also supports idempotent retries so replayed requests return the original reservation rather than double-booking a table.-
- FlicenseNot gradedqualityBmaintenanceEnables customers and AI agents to check restaurant table availability and create bookings, returning confirmations or nearby alternative times when a slot is full, with atomic capacity control and idempotent handling.-
- AlicenseAqualityAmaintenanceEnables AI assistants to search and compare vacation rentals across Jabama, Jajiga and Otaghak at once, normalizing prices, Jalali/Gregorian dates, amenities, ratings, calendars and full guest reviews into one schema. It runs read-only and locally, providing merged results with direct booking links while withholding host and reviewer identities.620 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to discover availability, place expiring holds, and confirm or cancel appointments for connected booking businesses, with idempotent retries and explicit user consent.1Apache 2.0