MCP Server
Connect PromptShip to your AI coding tool via the Model Context Protocol.
What is MCP?
The Model Context Protocol (MCP) lets AI tools like Claude Code, Cursor, and Codex call external tools. PromptShip provides an MCP server that gives your AI tool the ability to deploy apps, manage databases, set secrets, and more — all through natural conversation.
Setup
Claude Code
Run this command to add PromptShip as an MCP server:
claude mcp add --transport http promptship https://mcp.promptship.dev/mcp
Cursor
In Cursor settings, add a remote MCP server with URL:
https://mcp.promptship.dev/mcp
Codex / Other MCP Tools
Any MCP-compatible tool can connect to the remote MCP server at https://mcp.promptship.dev/mcp using HTTP transport.
Authentication
On first use, the MCP server opens a browser window for Google OAuth sign-in. Your session is managed automatically.
Available Tools
Account
| Tool | Description |
create_token | Create a new API token for CLI or programmatic access |
list_tokens | List all API tokens for your account |
delete_token | Delete an API token |
install_github | Install the PromptShip GitHub App on your account |
list_repos | List GitHub repos accessible to PromptShip |
Teams
| Tool | Parameters | Description |
create_team | name: str | Create a new team |
list_teams | | List your teams |
invite_member | team_id: str, email: str, role: str | Invite a team member |
remove_member | team_id: str, user_id: str | Remove a team member |
update_member_role | team_id: str, user_id: str, role: str | Update a team member's role |
Apps
| Tool | Parameters | Description |
create_app | name: str, github_repo: str, app_tier: str | Create a new app |
list_apps | team_id: str? | List all apps |
get_app | app_name: str | Get app details and platform env vars |
configure_app | app_name: str, app_type: str?, runtime: str?, port: int?, root_dir: str?, android_package_name: str? | Configure build settings, runtime (python:3.12, node:22, etc.), and port |
get_app_config | app_name: str | Get build config for an app |
create_environment | app_name: str, env_name: str, app_tier: str? | Add a new environment to an app |
delete_environment | app_name: str, env_name: str | Delete an environment and all its resources |
configure_process | app_name: str, process_name: str, process_type: str, command: str, min_replicas: int?, max_replicas: int?, cron_schedule: str?, health_check_path: str? | Add/update a process with its run command |
remove_process | app_name: str, process_name: str | Remove a process from an app |
grant_app_permission | app_name: str, user_id: str, environment: str, role: str | Grant per-environment permissions |
revoke_app_permission | app_name: str, user_id: str | Revoke per-environment permissions |
list_app_permissions | app_name: str | List all permission grants |
delete_app | app_name: str | Delete an app and all resources |
Deploys
| Tool | Parameters | Description |
deploy_app | app_name: str, branch: str?, env: str? | Deploy from a branch (default: main, dev) |
get_deploy_status | app_name: str | Check latest deploy status |
get_logs | app_name: str, environment: str? | View app logs |
rollback_app | app_name: str, environment: str? | Rollback to previous deploy |
Databases
| Tool | Parameters | Description |
attach_postgres | app_name: str, environment: str, tier: str, version: str? | Start an attach job for a Postgres database. Returns immediately with a pending job. Poll get_db_attach_status. Default version: 17. |
detach_postgres | app_name: str, environment: str | Detach Postgres. Data is retained for 1 hour — reattach within the window to recover, otherwise data is permanently deleted. |
query_postgres | app_name: str, environment: str, sql: str | Run a read-only SQL query |
reset_postgres | app_name: str, environment: str | Drop and recreate the database |
attach_valkey | app_name: str, environment: str, tier: str, version: str? | Start an attach job for a Valkey (Redis) instance. Returns immediately with a pending job. Poll get_db_attach_status. Default version: 8. |
detach_valkey | app_name: str, environment: str | Detach Valkey. Data is retained for 1 hour — reattach within the window to recover, otherwise data is permanently deleted. |
query_valkey | app_name: str, environment: str, command: str | Run a Valkey command |
reset_valkey | app_name: str, environment: str | Flush all keys in the cache |
attach_clickhouse | app_name: str, environment: str, tier: str, version: str? | Start an attach job for a ClickHouse analytics database. Returns immediately with a pending job; ClickHouse can take a few minutes to come up. Poll get_db_attach_status. Default version: 24.8. Injects CLICKHOUSE_URL (HTTP, port 8123) and CLICKHOUSE_NATIVE_URL (native protocol, port 9000) on next deploy. |
detach_clickhouse | app_name: str, environment: str | Detach ClickHouse. Data is retained for 1 hour — reattach within the window to recover, otherwise data is permanently deleted. |
query_clickhouse | app_name: str, environment: str, sql: str | Run a SQL query against ClickHouse (HTTP interface) |
reset_clickhouse | app_name: str, environment: str | Drop and recreate the ClickHouse database (including views and materialized views) |
get_db_attach_status | app_name: str, environment: str, db_type: str | Poll the latest attach job's status (pending / provisioning / succeeded / failed). Call every ~10s after attach_*. |
get_db_state | app_name: str, environment: str, db_type: str | Compare stored tier vs running pod for drift detection (db_type: postgres, valkey, clickhouse) |
Secrets
| Tool | Parameters | Description |
set_secret | app_name: str, environment: str, key: str, value: str | Set a secret (encrypted at rest). Available as an environment variable on next deploy. |
list_secrets | app_name: str, environment: str | List secret keys (values hidden) |
delete_secret | app_name: str, environment: str, key: str | Delete a secret |
Domains
| Tool | Parameters | Description |
set_domain | app_name: str, environment: str, domain: str | Set a custom domain (HTTPS auto-provisioned) |
remove_domain | app_name: str, environment: str | Remove custom domain |
verify_domain | app_name: str, environment: str | Check if domain DNS is verified |
Tier Management
| Tool | Parameters | Description |
change_app_tier | app_name: str, environment: str, tier: str | Change app compute tier |
change_postgres_tier | app_name: str, environment: str, tier: str | Change Postgres tier. Storage can't shrink; pod rolls with new resources. |
change_valkey_tier | app_name: str, environment: str, tier: str | Change Valkey tier. Storage can't shrink; pod rolls with new resources. |
change_clickhouse_tier | app_name: str, environment: str, tier: str | Change ClickHouse tier. Storage can't shrink; pod rolls with new resources. |
reapply_db_tier | app_name: str, environment: str, db_type: str | Reconcile the running pod to the stored tier. Idempotent; call after a partial failure. |
change_team_plan | team_id: str, plan: str | Change team subscription plan |
Usage & Billing
| Tool | Parameters | Description |
get_team_usage | team_id: str, start: str?, end: str? | Per-team usage breakdown for a date range. Returns compute (replica-intervals, max replicas, projected $), bandwidth (gb_in/gb_out), per-process metrics (avg/max CPU, memory, disk for stateful DBs), team-level builds, and total_us_dollars. Defaults: last 30 days. |
get_team_usage_summary | team_id: str, month: str | Whole-month projected bill including platform fee. month is YYYY-MM. |
get_app_usage | app_name: str, team_id: str?, start: str?, end: str? | Same shape as get_team_usage but scoped to one app. |
Mobile
| Tool | Parameters | Description |
submit_app | app_name: str, play_track: str?, branch: str?, release_notes: str?, environment: str? | Build APK and submit to Google Play (play_track: internal, production) |
get_submit_app_status | app_name: str | Get submission history for a mobile app |
get_android_keystore | app_name: str, environment: str? | Download the Android signing keystore (PKCS12, base64-encoded) |