Make It Real exposes an MCP (Model Context Protocol) server so tools like Codex, Claude Code, Claude Desktop, and Cursor can read and edit your projects directly. Sign in to your client with your existing AI subscription; its plan limits still apply. Make It Real hosting is separate.
The MCP tools match the on-platform agent: project files, data collections, and scheduling helpers, plus project discovery so the client can find the site to work on.
MCP server
Server URL:
https://www.makeitrealapp.com/mcp
Enable access from Integrations after you sign in. Turning MCP off immediately rejects connected clients until you turn it back on.
Codex
Add Make It Real, then authorize access:
codex mcp add makeitreal --url https://www.makeitrealapp.com/mcp
codex mcp login makeitreal
Complete the browser authorization to make your project tools available in Codex.
Claude Code
Run this once in your terminal:
claude mcp add --transport http makeitreal https://www.makeitrealapp.com/mcp
Claude Code will prompt for authorization the first time it connects. Complete the OAuth flow in the browser, then the tools appear in that session.
Cursor
Add an MCP server in Cursor settings and paste the server URL, or put this in your MCP config:
{
"mcpServers": {
"makeitreal": {
"url": "https://www.makeitrealapp.com/mcp"
}
}
}
The first connection opens an OAuth prompt in your browser.
What's exposed
These are the same tools the in-app agent uses, plus
list_projects, get_project, and
preview_site so an external client can pick a site.
When requested, preview_site shows an Open site button in supporting clients. Project details and status return the site URL without displaying a widget.
-
list_scripts— List project scripts with draft/live version IDs and endpoints. Follow next_offset with the same limit for more. Listing order is live and may change when scripts are renamed. -
read_script— Read a saved script version and permissions. Secret values are never returned. -
edit_script— Replace one exact, unique source fragment in the latest saved script. Creates an immutable draft, preserves permissions, never publishes. Read first; stale base versions and ambiguous matches are rejected. -
list_script_versions— List saved script versions newest-first with test/publication state. Follow next_before_number for older versions. Use read_script with version_id for source; rollback requires explicit publication. -
list_script_executions— Inspect script executions and redacted console logs. Follow next_before_id for older runs. Set log_chars to bound each log tail; omission preserves full logs. Full logs and stored inputs/outputs are available at editor_url. Secret values are never returned. -
save_script— Create/update an immutable draft. Never publishes. Read first and supply latest base_version_id. In managed staging, ties the version to the current preview for approval. -
test_script— Test an exact saved draft in the sandbox. Collection writes are simulated and external requests disabled. Does not publish. -
publish_script— Publish a successfully tested saved version. Only for live authoring; managed scripts publish with website approval. -
get_scripts_sdk_reference— Browser SDK and sandbox API for project backend scripts. Read before adding backend functionality. -
list_projects— List all projects accessible to the current user. -
get_project— Get details for a project including its site URL and deployment status. -
get_project_status— Get the current deployment status of a project. -
preview_site— Get the project website URL with an Open site button in supporting clients. Use only when the user asks for a site link. Project details and status already include site_url. -
list_files— List files in a project with total_count, truncated and next_offset. Continue with the same filters and next_offset as offset. Use path_prefix for a folder or glob (e.g. **/*.css). The listing is live; edits may change pagination. -
read_file— Read file text. Prefer response_format: structured for exact text with coverage, revision and next_offset (including very long lines). Continue with the same path/line range and expected_revision. start_line/end_line are 1-based inclusive. Omitted response_format retains the legacy string, capped at 12000 characters. -
write_file— Create a new file, or fully overwrite a file only when a full rewrite is genuinely required. Prefer edit_file for small targeted changes to existing files. -
edit_file— Replace a small unique text chunk in an existing file. Prefer this over write_file. old_string must be unique unless replace_all is true — include a few lines of surrounding context; do not send the whole file. -
delete_file— Delete a file from a project. -
search_files— Search file contents. Prefer response_format: structured for bounded snippets, scanned coverage, and next_page. Continue with the same filters plus next_page fields. Files may change during a search; listing revision detects added/removed paths. Omitted format retains a legacy array that may be partial. -
presign_file_put— SHELL SESSIONS: Get a time-limited HTTPS URL to upload with PUT, then call finalize_file_put. CHAT HOSTS without HTTP upload access: use import_file with the attached file object instead; this tool alone cannot transfer bytes. -
finalize_file_put— After presign + PUT, finalize to inject analytics (HTML) and invalidate cache. -
import_file— CHAT HOSTS: Import an attached file in one call using file with the host's temporary download_url (and optional file_id, file_name, mime_type), or source_url for a public HTTPS file. Returns the completed file; maximum 25 MB, 45 seconds. SHELL SESSIONS: Prefer presign_file_put, HTTP PUT, then finalize_file_put for direct storage uploads. -
list_collections— List project collections with submission counts and schema. Prefer response_format: compact for a paginated object with one schema representation. Omitted format preserves the legacy array. -
list_submissions— List collection submissions newest-first. Prefer response_format: structured for pagination and coverage (25 by default); pass next_before_id as before_id with the same collection and fields. fields selects comma-separated payload keys. Omitted format preserves the legacy array of up to 100 recent submissions. -
create_collection— Register or update a collection before writing form or public read code. Optional fields JSON defines the form questions. -
get_data_sdk_reference— How mir-data.js and POST /api/data work for form submissions. -
get_data_read_reference— How public data reads work for dynamic project sites. -
list_project_scheduling_slots— List scheduling slots connected to a project plus connectable slots owned by the current user. -
connect_project_scheduling_slots— Replace ALL project scheduling connections with the supplied complete set of slot IDs. To add one, first list connections and include the existing IDs you want to keep. Empty input disconnects all. Returns added, removed and current IDs for the public Scheduling API and mir-scheduling.js. -
get_scheduling_sdk_reference— How mir-scheduling.js and /api/schedule work for custom project scheduling UIs.