Skip to main content
Glama
Pedra MCP Server

Pedra MCP Server

Official
by pedra-ai

Pedra MCP Server

Official Model Context Protocol server for the Pedra API — use Pedra's AI real-estate photo editing (virtual staging, renovation, room emptying, enhancement, sky replacement, object removal/blur, property videos, and hosted 360° virtual tours) directly from Claude, ChatGPT, Cursor, and any other MCP client.

npm version Official MCP registry

Add to Cursor

It exposes one tool per API endpoint. Each photo and video tool is a single blocking call that returns the final asset URL(s) — there are no job IDs to poll. Virtual tours build in the background: pedra_create_virtual_tour returns a tourId, and pedra_get_virtual_tour is polled until it's ready.

Quick start

The server reads your Pedra API key (Settings in your Pedra account) from the PEDRA_API_KEY environment variable. No account yet? Start it without a key — see No Pedra account yet?.

The server runs over stdio and is published to npm, so most clients just run it with npx — no global install needed.

Claude Desktop (one-click)

Download the latest pedra-mcp.mcpb from Releases and double-click it (or drag it into Claude Desktop → Settings → Extensions). Claude installs the bundled server and prompts for your PEDRA_API_KEY — no JSON editing.

Claude Desktop (manual)

Or add this to your claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "pedra": {
      "command": "npx",
      "args": ["-y", "@pedra-ai/mcp"],
      "env": { "PEDRA_API_KEY": "your-api-key" }
    }
  }
}

Cursor

In ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "pedra": {
      "command": "npx",
      "args": ["-y", "@pedra-ai/mcp"],
      "env": { "PEDRA_API_KEY": "your-api-key" }
    }
  }
}

Any MCP client

Run the binary directly with the key in the environment:

PEDRA_API_KEY=your-api-key npx -y @pedra-ai/mcp

Or install it:

npm install -g @pedra-ai/mcp
PEDRA_API_KEY=your-api-key pedra-mcp

Smithery

You can also install and configure Pedra automatically via Smithery:

npx -y @smithery/cli install @pedra-ai/mcp --client claude

(swap claude for cursor, windsurf, etc.) Smithery prompts for your PEDRA_API_KEY and writes the client config for you.

No Pedra account yet?

Start the server without PEDRA_API_KEY, for example in Claude Code:

claude mcp add pedra -- npx -y @pedra-ai/mcp

Then just ask for something ("stage this photo with Pedra"). Without a key the server adds two tools, and the assistant does the rest:

  1. pedra_request_access with your email. Pedra emails you a link (valid 30 minutes): a new account chooses a password there, an existing one clicks Allow. Nothing is created until you click, and you can decline.

  2. pedra_check_access until you've confirmed. Once approved, every Pedra tool works for the rest of the session. The key is kept in memory only, never written to disk; the tool result shows it along with how to keep it: add it as PEDRA_API_KEY to the server's env (e.g. claude mcp add pedra -e PEDRA_API_KEY=<key> -- npx -y @pedra-ai/mcp, or paste it into the extension's settings in Claude Desktop).

Until then, the other tools answer "No API key yet: call pedra_request_access with the user's email". Inbox confirmation is required, disposable email domains are refused, and requests are rate-limited. New accounts start with Pedra's free trial credits.

(In ChatGPT and claude.ai, use Pedra's hosted connector instead: connecting it runs a sign-in where new users can create an account.)

Related MCP server: Rendobar MCP Server

Tools

The nine image-editing tools (enhance through blur) also take propertyId, to save the result into that property's gallery, and name, to save the original photo there under that name in the same call. The result then includes source (imageId, name) of the original. preserveAspectRatio returns the result at the input's exact size.

Tool

Endpoint

What it does

pedra_enhance

/enhance

Improve lighting, color, sharpness

pedra_enhance_and_correct_perspective

/enhance_and_correct_perspective

Enhance + straighten perspective

pedra_empty_room

/empty_room

Remove all furniture/objects

pedra_furnish

/furnish

Virtually stage a room

pedra_renovation

/renovation

Renovate walls/floors/finishes

pedra_edit_via_prompt

/edit_via_prompt

Edit from a natural-language prompt

pedra_sky_blue

/sky_blue

Replace a dull sky with clear blue

pedra_remove_object

/remove_object

Remove an object using a mask

pedra_blur

/blur

Blur faces, license plates, etc.

pedra_create_video

/create_video

Render a property video from images

pedra_update_video

/update_video

Edit a video without re-rendering unchanged clips

pedra_generate_voice_script

/generate_voice_script

Write a voiceover script from property photos

pedra_generate_voice

/generate_voice

Turn a script into a voiceover audio track

pedra_music_library

/music_library

List background-music tracks, voice languages + narration voices

pedra_list_properties

/list_properties

List the account's properties

pedra_list_property_images

/list_property_images

List a property's photos (or, with type: "360", its 360° photos) as URLs

pedra_create_property

/create_property

Create a property

pedra_add_images_to_property

/add_images_to_property

Add photos (or, with type: "360", 360° photos) to a property by URL, optionally with names

pedra_add_local_panoramas

/add_images_to_property (batched)

Local only: upload 360° photo files from this computer into a property

pedra_create_upload_link

/create_upload_link

No-login page to upload photos or 360° photos from a phone or computer (type: "360" for tours only)

pedra_create_virtual_tour

/create_virtual_tour

Build a hosted 360° virtual tour (AI names and links the rooms)

pedra_get_virtual_tour

/get_virtual_tour

Tour status, share link, embed code, scenes, links

pedra_list_virtual_tours

/list_virtual_tours

List the account's virtual tours

pedra_update_virtual_tour

/update_virtual_tour

Rename, reorder, remove rooms, re-link, restyle (free)

pedra_add_virtual_tour_scenes

/add_virtual_tour_scenes

Add rooms to the end of a tour

pedra_credits

/credits

Read plan + remaining credits

pedra_feedback

/feedback

Thumbs up/down + optional credit-back

pedra_request_access

/agent_signup

Only without an API key: email the user a link to create/allow their account

pedra_check_access

/agent_signup_status

Only without an API key: check the request; once approved, every tool works for the session

Most image tools take an imageUrl plus a few optional parameters; see each tool's input schema in your MCP client. The imageUrl (and maskUrl, and each create_video frame) accepts any of:

  • a public https:// URL,

  • a data: URI, or

  • an absolute path to a local image file — the server reads it off disk and inlines it as base64 for you, so you can point a tool at a file you just dragged in without hosting it first (.jpg, .jpeg, .png, .webp, .gif, .bmp, .tif/.tiff, .heic/.heif, .avif; up to 40 MB).

Note: an image pasted into the chat is not a file path, so it can't be forwarded to the tool — drag in a file, or save the paste and pass its path. Photos on the user's phone go through pedra_create_upload_link: they upload on a no-login page (up to 100 files, 24 h), then pedra_list_property_images returns their URLs for editing, pedra_create_video or pedra_create_virtual_tour.

Uploads are limited per day: 30 images on the free plan, 500 on paid plans (reset at midnight UTC), counting every image stored from outside the app (pedra_add_images_to_property, pedra_add_local_panoramas, URL scenes in tours, upload-link files); over it the call fails with HTTP 429, upload_limit and nothing is stored. Upload links: 5 a day free, 50 paid (upload_link_limit).

Example prompts once connected:

"Use Pedra to virtually stage https://example.com/empty-living-room.jpg as a minimalist living room."

"Virtually stage /Users/me/Desktop/empty-living-room.jpg as a minimalist living room."

"How many Pedra credits do I have left?"

Virtual tours

POST your 360° photos, get back a hosted, linked, shareable virtual tour: AI names the rooms and places the door-to-door navigation points. The tour tools have the same names, descriptions and input schemas as Pedra's hosted MCP server (https://app.pedra.ai/mcp), so an agent behaves the same on either.

A typical flow:

  1. Get the 360° photos into a property.

    • Files on this computer → pedra_add_local_panoramas with the paths in walking order. This tool exists only in this local server: it reads the files off disk and sends them base64-encoded, 10 per call under the API's 50 MB request limit. Files over ~33 MB can't go this way.

    • Photos on someone's phone (or big files) → pedra_create_upload_link with type: "360", and hand over the uploadUrl (no login, valid 24 h).

    • Photos already online → skip this step and pass the URLs as scenes.

  2. Build it: pedra_create_virtual_tour with the propertyId (uses every 360° photo in upload order) or with scenes. It returns a tourId straight away.

  3. Wait: poll pedra_get_virtual_tour until status is "ready" (about 10 s per room) — then share tourUrl or embed embedCode. A "failed" build says why and costs nothing.

  4. Adjust with pedra_update_virtual_tour (free, instant) or append rooms with pedra_add_virtual_tour_scenes.

Linking costs max(3, ceil(rooms/3)) credits for "sequential" (default; each room to the next), 5–160 for "smart" (AI works out which rooms connect), and nothing for "none". Deleting a tour is API-only (not exposed as a tool).

"Make a Pedra virtual tour of Calle Mayor 12 from /Users/me/360/entrance.jpg, /Users/me/360/living.jpg and /Users/me/360/kitchen.jpg, in that order, and give me the link."

How it works

This server is a thin wrapper over @pedra-ai/sdk, which encodes the API's contract details:

  • Synchronous by design (except virtual tours). Every photo and video endpoint blocks and returns the final URL(s) in the response body. Even pedra_create_video polls server-side and returns the finished videoUrl inline (it can take up to ~10 minutes; the API keeps the connection alive with a heartbeat).

  • Errors are tool errors. The API's 4xx responses (insufficient credits, bad image, …) come back as MCP tool errors with a readable message, not crashes.

Privacy Policy

This server sends the image/video URLs and parameters you pass to the Pedra API to perform the requested edit, authenticated with your PEDRA_API_KEY. Without a key, pedra_request_access sends the email address you give it to Pedra so Pedra can email you a confirmation link; a key obtained that way is held in memory for the session only. It stores no data itself. Data collection, usage, storage, retention, third-party sharing, and contact information are covered by Pedra's privacy policy: https://pedra.ai/privacy.

License

MIT © Pedra

Available Tools

27 tools
pedra_add_images_to_propertyAdd photos to propertyA

Add photos to a property by URL (the server fetches each one, so any public https image URL or small data: URI works). Returns the stored img.pedra.ai URLs to use with the editing, video and tour tools. For photos on the user's device, use pedra_create_upload_link instead. Pass type "360" for 360° photos (checked to be 2:1 equirectangular), which can then become a virtual tour. (With this local server, 360° photo files on this computer can go through pedra_add_local_panoramas instead.)

Inputs: imageUrls (required), propertyId (required), type, names.

pedra_add_local_panoramasAdd local 360° photos to propertyA

LOCAL-ONLY TOOL (this Pedra MCP server runs on the user's own computer, so it can read files from its disk). Upload 360° photo files (2:1 equirectangular JPEG, PNG or WebP) from absolute local paths into a property, in the order given — that order becomes the walking order when you then call pedra_create_virtual_tour with just the propertyId. Files are sent in batches (10 per call, under the 50 MB request limit); a file over ~33 MB can't be sent this way — use pedra_create_upload_link for those. Prefer this over pedra_create_upload_link whenever the 360° photos are files on this computer. Returns the added photos (imageIds are scene ids) and any that failed, each with its path.

Inputs: paths (required), propertyId (required).

pedra_add_virtual_tour_scenesAdd rooms to virtual tourA

Add rooms to the end of an existing virtual tour. With "sequential" linking (default) only the new stretch is linked: the last existing room to the first new one, then each new room to the next. That costs max(3, ceil(new rooms/3)) credits; "none" is free. The tour stays live while this runs; poll pedra_get_virtual_tour until status is "ready".

Inputs: scenes (required), tourId (required), linking.

pedra_blurBlur objectsA

Blur objects in an image (e.g. faces, license plates) for privacy. Returns the blurred image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: imageUrl (required), objectsToBlur (required), name, propertyId, +1 more.

pedra_create_propertyCreate propertyA

Create a new Pedra property. Returns its propertyId and an appUrl. To add photos that are on the user's device, pedra_create_upload_link is simpler (no login); or give the user the appUrl to open the property in Pedra and drop their photos in, then use pedra_list_property_images.

Inputs: name.

pedra_create_videoCreate property videoA

Create a property video from a list of images. Blocks server-side until the video is rendered (up to ~10 min) and returns the finished video URL inline.

Inputs: images (required), music, voice, branding, +4 more.

pedra_create_virtual_tourCreate virtual tourA

Build a hosted 360° virtual tour: the rooms are named and linked with navigation points by AI, and you get a shareable link and embed code. Pass the 360° photos as scenes (URLs, or imageIds of 360° photos already in the property) in the order someone would walk through the home, or just a propertyId to use all its 360° photos. Linking: "sequential" (default) links each room to the next and costs max(3, ceil(rooms/3)) credits; "smart" lets AI work out which rooms connect (slower, 5-160 credits by room count); "none" is free. Returns a tourId immediately — the build takes about 10 seconds per room, so poll pedra_get_virtual_tour until status is "ready". One tour per property.

Inputs: name, scenes, linking, language, +1 more.

pedra_creditsGet creditsA
Read-only

Read the account's plan and remaining credits. Never deducts credits.

Inputs: no named parameters.

pedra_edit_via_promptEdit via promptA

Edit an image from a natural-language instruction (e.g. "paint the walls sage green"). Returns the edited image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: prompt (required), imageUrl (required), name, propertyId, +1 more.

pedra_empty_roomEmpty roomA

Remove all furniture and objects from a room, leaving an empty space. Returns the emptied image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: imageUrl (required), name, propertyId, preserveAspectRatio.

pedra_enhanceEnhance imageA

Enhance a real-estate photo: improve lighting, color, and sharpness. Returns the enhanced image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: imageUrl (required), name, propertyId, preserveAspectRatio, +1 more.

pedra_enhance_and_correct_perspectiveEnhance + correct perspectiveA

Enhance a photo and correct vertical/horizontal perspective (straighten walls and lines). Returns the corrected image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: imageUrl (required), name, propertyId, preserveAspectRatio, +1 more.

pedra_feedbackSubmit feedbackA

Submit thumbs up/down feedback on a generated image, with an optional credit-back on a thumbs-down (subject to the API's eligibility rules).

Inputs: vote, comment, imageId, imageUrl, +1 more.

pedra_furnishFurnish / virtually stageA

Virtually stage (furnish) a room with AI-generated furniture. Returns the staged image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: imageUrl (required), name, style, roomType, +2 more.

pedra_generate_voiceGenerate voiceover audioA

Render a voiceover from a script via text-to-speech. Returns an audioId — pass it to pedra_create_video / pedra_update_video as voice.audioId to attach the narration (with synced subtitles).

Inputs: text (required), voiceId, language.

pedra_generate_voice_scriptGenerate voiceover scriptA

Write a short voiceover script from property photos (and optional facts). GPT-4o vision reads the images so the script reflects what's actually shown. Returns the script text — pass it to pedra_generate_voice.

Inputs: images, language, propertyCharacteristics.

pedra_get_virtual_tourCheck virtual tourA
Read-only

Get a virtual tour: status ("processing", "ready" or "failed", with the reason), the shareable tourUrl, an embedCode iframe for a website, and its scenes and navigation links. Poll this after pedra_create_virtual_tour or pedra_add_virtual_tour_scenes. Read-only.

Inputs: tourId (required).

pedra_list_propertiesList propertiesA
Read-only

List the user's Pedra properties (id, name, photo count, and an appUrl to open each in Pedra). Use this to find photos already in the account — e.g. to build a video from a listing's photos.

Inputs: no named parameters.

pedra_list_property_imagesList property photosA
Read-only

List the photos in a Pedra property as img.pedra.ai URLs, ready to pass straight to pedra_create_video or the image-editing tools. Get the propertyId from pedra_list_properties. Pass type "360" to list its 360° photos instead (their imageIds are the scenes of a virtual tour).

Inputs: propertyId (required), type.

pedra_list_virtual_toursList virtual toursA
Read-only

List the account's virtual tours (newest first) with status, share link and room count. Optionally only one property's. Read-only.

Inputs: propertyId.

pedra_music_libraryList music tracksA
Read-only

List the background-music catalog: valid music.track values (genre keys), plus the voice languages and the narration voices offered for each of them. Read-only.

Inputs: no named parameters.

pedra_remove_objectRemove objectA

Remove an object from an image using a mask. Returns the cleaned image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: maskUrl (required), imageUrl (required), name, propertyId, +1 more.

pedra_renovationRenovate spaceB

Renovate a space (walls, floors, finishes), optionally furnished. Returns the renovated image URL. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: imageUrl (required), name, style, furnish, +3 more.

pedra_sky_blueReplace skyA

Replace a dull or overcast sky with a clear blue one. Returns the image URL with the new sky. Pass propertyId to save the result into that property's gallery instead of only returning a URL.

Inputs: imageUrl (required), name, skyStyle, propertyId, +1 more.

pedra_update_videoEdit existing videoA

Edit an existing video (by videoId) without re-rendering unchanged clips — only new/changed photos re-animate and cost credits; reordering, music, voice, branding and text re-stitch for free. Omit images to change only audio/text/branding while keeping the current timeline. Omit music/voice/branding/ending text to leave them unchanged. Blocks until rendered and returns the new video URL.

Inputs: videoId (required), music, voice, images, +5 more.

pedra_update_virtual_tourEdit virtual tourA
Destructive

Change a finished virtual tour in place: rename it or its rooms, reorder rooms (the first one is where the tour opens), remove rooms, replace its navigation links, or change how the navigation points look. Free and instant. The tour's public link shows the change right away. Get sceneIds from pedra_get_virtual_tour.

Inputs: tourId (required), name, links, language, +6 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 27 tools

    Disambiguation4/5

    Most tools map to a distinct resource plus action (enhance, furnish, empty_room, sky_blue, blur, remove_object), and the video/tour/voice pipelines are clearly separated. The main soft spots are the three photo-ingestion paths (add_images_to_property, add_local_panoramas, create_upload_link) and the overlap between edit_via_prompt and the specialized edit tools, though descriptions do give guidance.

    Naming Consistency4/5

    All 27 tools use the pedra_ prefix with snake_case, and most are verb_noun (pedra_create_video, pedra_list_properties, pedra_remove_object). Minor deviations are noun/attribute-style names like pedra_credits, pedra_music_library, and pedra_sky_blue, but the naming remains predictable.

    Tool Count3/5

    At 27 tools the surface is heavy; the breadth (video, tours, nine single-purpose image edits, voice, property management) explains some of it, but the cluster of near-synonymous edit tools could be consolidated. It sits at the top edge of what an agent can navigate comfortably.

    Completeness3/5

    Creation, editing, listing, and update flows are well covered across properties, images, videos, voice, and tours. However, there are no delete/cleanup operations anywhere (property, image, video, tour) and no video list/get-status tool, leaving lifecycle dead ends an agent cannot resolve.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers