@vprop/mcp
v1.1.0
Published
MCP server for the vProp Public API — generate real-estate listing videos with AI
Readme
@vprop/mcp
MCP (Model Context Protocol) server for the vProp Public API — let AI assistants create real-estate listing videos on your behalf.
What it does
Connect Claude (or any MCP-compatible AI) to vProp so it can:
- Create and manage property listings
- Upload listing photos
- Create and manage agent profiles
- Generate AI-powered listing videos
- Poll for video completion and return the final URL
Typical flow:
create_listing → upload_listing_image (×10+) → create_agent →
upload_agent_photo → create_project → get_project_status (poll) → get_projectPrerequisites
A vProp API key (VP_…). Contact vProp to get one.
Setup
The MCP server config block is the same across all clients — only the file location differs.
{
"command": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"vprop": {
"command": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}
}
}Restart Claude Desktop.
Claude Code (CLI)
claude mcp add vprop npx -e VPROP_API_KEY=VP_your_key_here -- -y @vprop/mcpCursor
Create or edit .cursor/mcp.json in your project root (or ~/.cursor/mcp.json for global):
{
"mcpServers": {
"vprop": {
"command": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}
}
}Restart Cursor or run Cursor: Reload MCP Servers from the command palette.
Windsurf
Edit ~/.codeium/windsurf/mcp_settings.json:
{
"mcpServers": {
"vprop": {
"command": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}
}
}Zed
Edit ~/.config/zed/settings.json:
{
"context_servers": {
"vprop": {
"command": {
"path": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}
}
}
}Continue (VS Code / JetBrains)
Edit .continue/config.json in your project (or ~/.continue/config.json globally):
{
"mcpServers": [
{
"name": "vprop",
"command": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}
]
}Gemini CLI
Edit ~/.gemini/settings.json:
{
"mcpServers": {
"vprop": {
"command": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}
}
}Other MCP-compatible clients
Any client that follows the MCP specification uses the same stdio transport config:
{
"command": "npx",
"args": ["-y", "@vprop/mcp"],
"env": { "VPROP_API_KEY": "VP_your_key_here" }
}Note: ChatGPT and Gemini web interfaces do not currently support MCP servers. The tools above are desktop/CLI clients that run the MCP server locally.
Available tools
Voices & Music
| Tool | Description |
|------|-------------|
| list_voices | List narration voices. Use the id as voice_id. |
| list_bgms | List background music tracks. Use the id as bgm_id. |
Listings
| Tool | Description |
|------|-------------|
| create_listing | Create a property listing (address required) |
| get_listing | Get listing details by ID |
| list_listings | List all listings (paginated) |
| update_listing | Update address, attributes, or metadata |
| delete_listing | Delete a listing |
| list_listing_images | List uploaded images for a listing |
| upload_listing_image | Upload a local JPEG/PNG/WebP to a listing |
| delete_listing_image | Remove an image from a listing |
Agents
| Tool | Description |
|------|-------------|
| create_agent | Create a realtor agent profile |
| get_agent | Get agent details by ID |
| list_agents | List all agents (paginated) |
| update_agent | Update agent info or default voice |
| delete_agent | Delete an agent |
| upload_agent_photo | Upload a headshot photo (enables avatar feature) |
Projects (video generation)
| Tool | Description |
|------|-------------|
| create_project | Start video generation (async, returns proj_…) |
| get_project_status | Lightweight status check (pending/processing/completed/failed) |
| get_project | Full project details including video_url when done |
| list_projects | List projects with optional status filter |
Webhooks
| Tool | Description |
|------|-------------|
| register_webhook | Register an HTTPS URL to receive project events (replaces any existing registration) |
| get_webhook | Get the current webhook registration for this API key |
| delete_webhook | Deactivate a webhook by its ID |
| rotate_webhook_secret | Roll the HMAC signing secret for a webhook |
Usage
| Tool | Description |
|------|-------------|
| get_usage | Get usage counts and credit balance for this API key |
Example prompts
Generate a video end-to-end:
"Create a listing for 123 Oak Ave, Austin TX 78701. Upload all photos from ~/Desktop/photos/. Create an agent named Jane Doe with email [email protected]. Then generate a video in modern theme and let me know when it's ready."
Check on existing projects:
"Show me all completed projects from the last run."
Try different styles:
"Generate a landscape video with bold theme and no captions for listing lst_AbCd."
Video options
When calling create_project, you can customize:
| Option | Values | Default |
|--------|--------|---------|
| theme | modern classic bold elegant luxe basic rosewood keystone pixel editorial sketch | modern |
| background | black white | theme default |
| resolution | portrait (9:16) landscape (16:9) | portrait |
| caption | none keyword description | keyword |
| language | en es ko zh-Hans | en |
| voice_id | ID from list_voices | agent default |
| bgm_id | ID from list_bgms | theme default |
| background_music | true false | true |
| narration_highlights | free text (≤2000 chars) | — |
| word_highlight | true false | false |
| use_agent_avatar | true false | true |
| use_lipsync | true false | false |
| display_info | object — per-field booleans for agent card | platform defaults |
Notes
- Image uploads require a local file path — the MCP server runs on your machine and reads files directly. Minimum 10 photos recommended for best results.
- Video generation is async —
create_projectreturns immediately. Pollget_project_statusuntilcompleted, then callget_projectfor thevideo_url. - Rate limits — project creation is capped at 10/min, 120/hour. Most other endpoints allow 120/min.
