# Port MCP connector

The Port connector lets Claude, ChatGPT, Cursor, or any MCP client browse your Port catalog, run self-service actions, and check scorecards, with each person signed in as themselves and every call logged.

Source: https://elaichi.ai/connectors/port/

## Facts

| | |
| --- | --- |
| Application | Port |
| Category | Application Development |
| AI tools | 51 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | No |
| Native MCP | Yes. Port builds and runs this MCP server. Elaichi adds sign-in, access controls and an audit log on top |
| Support for its tools | www.port.io/support |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Port is connected

- Which services are failing the production readiness scorecard?
- Run the scaffold new service action for the payments team
- Who owns the checkout service and which scorecards does it pass?

## Connect Port in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Port.
2. Optionally set Share with, then press Connect.
3. Approve it in Port. Port's own window opens. Whoever approves it decides what this connection can reach.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Port tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Port MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Port MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Port MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Port to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Port tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Port through Elaichi

### See which services fail a scorecard

Platform engineering. Ask which services in Port are missing an owner, an on-call rotation, or a passing production readiness score, and get the list without opening the portal.

### Run a self-service action from chat

Developers. Scaffold a new service, request a test environment, or trigger any self-service action in Port by asking for it, then track the run until it finishes.

### Check what a workflow run actually did

SRE. Pull up a workflow run in Port, see each step and its outcome, and find out why a deploy or rollback stalled during an incident.

### Answer who ran what, and when

Security. Search the Port audit log for who triggered an action on a production service and what changed, so an access review takes minutes rather than a day.

### Find the owner before an incident grows

Engineering managers. Look up a service entity in Port to find its team, its dependencies, and its recent runs, so the right person is paged first.

### Keep action permissions tidy

Platform engineering. Review who is allowed to run an action in Port, simulate what a blueprint change would let people do, and update the permissions when a team is reorganized.

## Elaichi vs Zapier MCP vs Composio for Port

All three can connect Port to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over Port tools | Allow or restrict single Port tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per Port call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect Port to Claude?

Connect Port in Elaichi first: pick Port from the catalog, sign in to your Port organization when the OAuth screen appears, and approve the access. There is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Claude signs you in through Elaichi and Port is ready to use.

### Does Port work with ChatGPT and Cursor as well as Claude?

Yes. Once Port is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Port once and every client you use picks it up.

### What can an AI agent actually do with my Port data?

An agent connected to Port can look up services, teams, and other entities in your catalog, tell you which ones are failing a scorecard, run a self-service action such as scaffolding a service, and follow a workflow run step by step. It can also search the Port audit log, review who is allowed to run an action, and read your Port pages and knowledge sources. Short concrete asks, such as naming the service and the scorecard, work better than long sentences.

### Does connecting Port give the AI access to everything in my Port organization?

No. Every request to Port runs as the person who signed in, so the agent sees only the blueprints, entities, and actions that person can already see in Port, and can only run the actions that person is allowed to run. Elaichi can narrow that access further with roles and restrictions, but it can never widen it beyond what Port itself grants.

### Can my team share one Port connection?

Yes. One person connects Port in Elaichi and shares the connection with a team, and nobody else has to handle a token or sign-in detail. Each teammate still signs in to Elaichi as themselves, so every action run or entity read in Port is logged under their own name, not the name of the person who connected it.

### Can I stop an agent from deleting or changing things in Port?

Yes. Restrictions in Elaichi apply per action, so you can allow reading entities and scorecards while blocking the ability to delete an action, delete a workflow, or change action permissions in Port. A restricted tool is never advertised to the AI client at all, so no prompt, however it is worded, can reach it.

### What happens to a Port connection when someone leaves?

When a person is offboarded in Elaichi, their access to Port through Elaichi ends at once, across every client they used. A Port connection shared with a team keeps working for everyone else on that team. If you want Port gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client at the same time.

### Does the Port MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Port is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for Port?

Yes. Both let Claude, ChatGPT or Cursor use Port. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every Port call.

### How is Elaichi different from Composio for Port?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to Port: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 51 Port tools

Every tool below is callable through https://api.elaichi.ai/mcp once Port is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Get action permissions** (Get). Get permissions/approval config for actions.
- **Get workflow run** (Get). Get the status and details of a workflow run by its identifier. Use after trigger_run to poll for completion, or to inspect any previously-triggered run. Returns status, result, per-node execution details, and timestamps.
- **List actions** (List). List actions and automations in your organization. Without identifiers, returns a summary list. With identifiers, returns full action details including complete input schemas. Self-service workflow triggers are a separate concept - use list_self_service_triggers to discover…
- **List self service triggers** (List). List self-service workflow triggers the caller can execute. Returns workflow metadata, the trigger nodeIdentifier, and the input schema for each trigger. Use before trigger_run to discover available operations and required inputs.
- **List workflows** (List). List workflows in your organization. Without identifiers, returns a summary list. With identifiers, returns full workflow details including trigger configuration and node definitions.
- **Run action** (Run). Execute a self-service action or automation by identifier. Prefer trigger_run when you want one tool that covers both workflow runs and action runs.
- **Track action run** (Run). Track action execution status.
- **Trigger run** (Run). Trigger a self-service workflow or action run. For workflows, pass type: "WORKFLOW", the workflow identifier, the nodeIdentifier from list_self_service_triggers, and inputs matching the trigger schema. For actions, pass type: "ACTION" and the action identifier. Returns the run…
- **Search audit logs** (Search). Search entity audit logs using structured filters for status, operation, trigger origin, date, errors, and related resources. Supports limit and offset pagination, optional response fields, and filtering entities or blueprints by identifier.
- **List blueprints** (List). List blueprints in your organization. Without identifiers, returns a summary list. With identifiers, returns full blueprint details including property definitions, schemas, and enum values.
- **List entities** (List). Query entities from a blueprint with filtering, sorting, pagination, and include. Supports identifiers, groupBy for value distribution, and countOnly for a total count.
- **Simulate blueprint permissions** (Action). Simulate blueprint entity permissions for a user. Use list mode to return entities the user can access for a blueprint; use detail mode with entityIdentifier to check permissions for a specific entity.
- **Describe user details** (Describe). Describe the user, which organization he is connected to and what teams he is a member of and more information regarding the user. Can be useful for questions that relate to the user or when looking up for related entities to the user
- **Load skill** (Action). Load specialized guidance for a domain-specific task. Skills provide step-by-step instructions for common workflows like troubleshooting integrations. Load a skill before starting a specialized task to ensure consistent, thorough handling.
- **Search Port knowledge sources** (Search). Search the official Port documentation and return the most relevant sections from it for a user query. Each returned section includes the url and its actual content in markdown. Use this tool for all queries that require Port knowledge.
- **Get page** (Get). Get a specific page by identifier. Returns full page details including widgets configuration. For entity pages (type "entity"), returns a tabs array with each tab's title, widgets, layout, and reserved flag.
- **Get sidebar** (Get). Get the software catalog sidebar structure including all pages and folders.
- **Load widget schema** (Action). Get the JSON schema for a specific dashboard widget type. Call this before upsert_dashboard_page, upsert_widget, or update_entity_page to understand the required structure for the widget you want to create.
- **List scorecards** (List). List scorecards in your organization. Without identifiers, returns a summary list. With identifiers, returns full scorecard details including complete rule configurations.
- **Delete action** (Delete). Delete action by identifier.
- **Delete workflow** (Delete). Delete workflow by identifier.
- **Update action permissions** (Update). Update action permissions configuration.
- **Upsert action** (Upsert). Create or update an action. Updates if the action exists, creates if it does not. API Reference links to create; updates use change-an-action-automation.
- **Upsert workflow** (Upsert). Create or update a workflow. Updates if the workflow exists, creates if it does not.
- **Delete blueprint** (Delete). Delete blueprint and all its entities.
- **Delete entity** (Delete). Delete entity with optional dependents.
- **Trigger auto discovery** (Action). Start auto-discovery to suggest or find entities for a blueprint. Call list_blueprints first to obtain the exact blueprint identifier before invoking this tool. Supports optional user context and excluded blueprints as supported by the tool.
- **Upsert blueprint** (Upsert). Create or update a blueprint. Updates if the blueprint exists, creates if it does not.
- **Upsert entity** (Upsert). Create or update an entity. Updates if the entity exists, creates if it does not. Uses merge by default to preserve existing fields.
- **List external interface apps** (List). List external interface apps registered for your organization (public clients using PKCE). Requires organization admin.
- **Revoke external interface app** (Revoke). Revoke (permanently delete) an external interface app registration. Any UI built against it will immediately lose the ability to authenticate. Requires organization admin permissions.
- **Upsert external interface app** (Upsert). Create or update an external interface app (public/PKCE OAuth client, no client secret) for your organization, so you can build a custom UI against Port's API. Omit appId to create; pass appId to update. Requires organization admin permissions.
- **Get integration event logs** (Get). Fetch event logs for an integration. Defaults to ERROR-level logs. Supports filters for levels, event_id, etl_phases, and kinds. Paginate with timestamp and log_id from the previous response.
- **Get integration kinds with examples** (Get). Fetch all kinds (data types) that an integration ingests, along with raw data examples for each kind. For example, a GitHub integration might have kinds like "pull_request", "issue", and "repo".
- **Get integration sync metrics** (Get). Fetch sync metrics for an integration. Returns detailed metrics including status, number of items handled in each phase of the integration pipeline (extract, transform, load, delete), and per-kind statistics.
- **List integrations** (List). List integrations in your organization. Without identifiers, returns a summary list. With identifiers, returns full integration details including complete config with mapping configuration. Empty result is authoritative: no integrations are installed. Do not infer prior…
- **Test integration mapping** (Test). Test an integration mapping against raw data examples. Validates the mapping, checks for errors, and returns the mapped results or error messages.
- **Delete sidebar folder** (Delete). Delete a folder from the sidebar. Pages and nested folders inside it are also deleted.
- **Delete widget** (Delete). Delete a widget from a dashboard, home, or entity page by its ID.
- **Duplicate page** (Duplicate). Duplicate a dashboard page. Creates an identical copy with the same widgets, layout, page filters, icon, and description. Only dashboard pages are supported; entity pages cannot be duplicated.
- **Move page** (Move). Move a page to a different location in the sidebar. Use "parent" to place the page inside a folder (or null for sidebar root) and "after" to control its position within that level.
- **Update entity page** (Update). Update an existing entity page's tabs, tab order, tab names, page metadata, or page filters. Entity pages are auto-generated per blueprint and cannot be created manually. Use upsert_widget to update a single widget on a tab.
- **Upsert dashboard page** (Upsert). Create or update a dashboard or home page with widgets, layout, and optional page filters. Do not use on entity pages; use update_entity_page or upsert_widget instead. The dashboard-widget container is auto-generated. Use load_widget_schema to get the schema for a specific…
- **Upsert sidebar folder** (Upsert). Create or update a folder in the sidebar. Folders can be nested by specifying a parent folder identifier. Use "after" to control position.
- **Upsert widget** (Upsert). Create or update a single widget on a dashboard, home, or entity page. Preferred for updating one widget instead of update_entity_page. For entity pages, tabTitle is required — call get_page first to see available tabs. Call load_widget_schema first to get the full schema for…
- **List plugins** (List). List plugins uploaded to your organization (Port admin permissions required). Without identifiers, returns a summary list. With identifiers, returns full plugin details including metadata and custom parameters used by custom widgets.
- **List available library plugins** (List). List plugins in the Port Plugins library - the curated catalog from the public port-plugins repository. Each entry includes readmeContent with catalog prerequisites. Call load_skill("list-available-library-plugins") to browse, or load_skill("install-plugin-library") before…
- **Install library plugin** (Action). Install a plugin from the Port Plugins library into your organization. Load install-plugin-library via load_skill first, read readmeContent from list_available_library_plugins, verify catalog prerequisites with list_blueprints, confirm missing properties with the user, then…
- **Upsert plugin** (Upsert). Create or update a plugin for custom widgets (Port admin permissions required). Updates if the plugin identifier exists, creates if it does not. Use after you have a built plugin artifact and metadata (for example identifier, title, optional params). Not for Plugins library…
- **Delete scorecard** (Delete). Delete scorecard by identifiers.
- ...and 1 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
