Skip to main content

A Model Context Protocol (MCP) server for Port.io

Project description

Port MCP Server

The Port IO MCP server is a Model Context Protocol (MCP) server, enabling advanced automations and natual language interactions for developers and AI applications.

What You Can Do With Port MCP

Find Information Quickly

  • Get entity details - "Who is the owner of service X?"
  • Check on-call status - "Who is on call right now?"
  • Get catalog insights - "How many services do we have in production?"

Analyze Scorecards

  • Identify weak points - "Which services are failing for the gold level and why?"
  • Get compliance status - "Show me all services that don't meet our security requirements"
  • Improve quality - "What do I need to fix to reach the next scorecard level?"

Create Resources

  • Build scorecards - "Create a new scorecard called 'Security Posture' with levels Basic, Silver, and Gold"
  • Define rules - "Add a rule that requires services to have a team owner to reach the Silver level"
  • Setup quality gates - "Create a rule that checks if services have proper documentation"

We're continuously expanding Port MCP's capabilities. Have a suggestion? We'd love to hear your feedback on our roadmap!

Installation

Prerequisites

Before you begin, you'll need:

  1. Create a Port Account (if you don't have one):

    • Visit Port.io
    • Sign up for an account
  2. Obtain Port Credentials:

    • Navigate to your Port dashboard
    • Go to Settings > Credentials
    • Save both the Client ID and Client Secret
  3. Installation Requirements:

    • Either Docker installed on your system
    • OR uvx package manager installed

[!NOTE] You will also need to provide your Port region, which is either EU or US. If not provided, the default is EU.

Installation methods

Port MCP Server can be installed using two methods:

Package Installation (uvx)

Use our official Port MCP server package.

Docker Installation

Use our official Docker image:

docker pull ghcr.io/port-labs/port-mcp-server:latest

Additional configurations

You can pass these additional arguments for more advanced configuration:

Configuration Parameter UVX Flag Docker Environment Variable Description Default Value
Log Level log-level PORT_LOG_LEVEL Controls the level of log output ERROR
API Validation api-validation-enabled PORT_API_VALIDATION_ENABLED Controls if API schema should be validated and fail if it's not valid False

Usage with Claude Desktop

  1. Go to Settings > Developer and click on "Edit config".
  2. Edit the claude_desktop_config.json file and add the below configuration based on the installation method.
  3. Save the file and restart Claude.
  4. In a new chat, check the Tools section and you'll see Port available tools.

Claude MCP Tools

Docker

[!TIP] Consider using the full path to Docker (e.g., /usr/local/bin/docker) instead of just docker. You can find this path by running which docker in your terminal. Using the full path helps avoid PATH resolution issues and ensures consistent behavior across different shell environments.

{
  "mcpServers": {
    "port": {
      "command": "docker",
      "args": [
               "run",
                "-i",
                "--rm",
                "-e",
                "PORT_CLIENT_ID",
                "-e",
                "PORT_CLIENT_SECRET",
                "-e",
                "PORT_REGION",
                "-e",
                "PORT_LOG_LEVEL",
                "ghcr.io/port-labs/port-mcp-server:latest"
              ],
              "env": {
                "PORT_CLIENT_ID": "<PORT_CLIENT_ID>",
                "PORT_CLIENT_SECRET": "<PORT_CLIENT_SECRET>",
                "PORT_REGION": "<PORT_REGION>",
                "PORT_LOG_LEVEL": "<PORT_LOG_LEVEL>"
              }
    }
  }
}

uvx

[!NOTE] If you want to run the command from a virtual Python environment, add a PYTHONPATH variable to the env object with its path, e.g., /path/to/your/venv/bin/python.

{
  "mcpServers": {
    "Port": {
          "command": "uvx",
          "args": [
              "mcp-server-port@0.2.8",
              "--client-id",
              "<PORT_CLIENT_ID>",
              "--client-secret",
              "<PORT_CLIENT_SECRET>",
              "--region",
              "<PORT_REGION>"
          ],
          "env": {
              "PORT_CLIENT_ID": "<PORT_CLIENT_ID>",
              "PORT_CLIENT_SECRET": "<PORT_CLIENT_SECRET>",
              "PORT_REGION": "<PORT_REGION>",
              "PYTHONPATH": "/Users/matangrady/.venv-port-mcp/bin/python"
          }
      }
  }
}

Usage with Cursor

  1. Go to Cursor > Settings > Cursor Settings.
  2. Click on the MCP tab, and "Add new global MCP server".
  3. Edit the mcp.json file and add the below configuration based on the installation method.
  4. Save the file and return to Cursor Settings.
  5. You will see the new Port server and its available tools.

Cursor MCP Screenshot

Docker

[!TIP] Consider using the full path to Docker (e.g., /usr/local/bin/docker) instead of just docker. You can find this path by running which docker in your terminal. Using the full path helps avoid PATH resolution issues and ensures consistent behavior across different shell environments.

{
  "mcpServers": {
    "port": {
      "command": "docker",
      "args": [
               "run",
                "-i",
                "--rm",
                "-e",
                "PORT_CLIENT_ID",
                "-e",
                "PORT_CLIENT_SECRET",
                "-e",
                "PORT_REGION",
                "-e",
                "PORT_LOG_LEVEL",
                "ghcr.io/port-labs/port-mcp-server:latest"
              ],
              "env": {
                "PORT_CLIENT_ID": "<PORT_CLIENT_ID>",
                "PORT_CLIENT_SECRET": "<PORT_CLIENT_SECRET>",
                "PORT_REGION": "<PORT_REGION>",
                "PORT_LOG_LEVEL": "<PORT_LOG_LEVEL>"
              }
    }
  }
}

uvx

[!NOTE] If you want to run the command from a virtual Python environment, add a PYTHONPATH variable to the env object with its path, e.g., /path/to/your/venv/bin/python.

{
  "mcpServers": {
    "Port": {
          "command": "uvx",
          "args": [
              "mcp-server-port@0.2.8",
              "--client-id",
              "<PORT_CLIENT_ID>",
              "--client-secret",
              "<PORT_CLIENT_SECRET>",
              "--region",
              "<PORT_REGION>"
          ],
          "env": {
              "PORT_CLIENT_ID": "<PORT_CLIENT_ID>",
              "PORT_CLIENT_SECRET": "<PORT_CLIENT_SECRET>",
              "PORT_REGION": "<PORT_REGION>",
              "PYTHONPATH": "/Users/matangrady/.venv-port-mcp/bin/python"
          }
      }
  }
}

Usage with VS Code

[!TIP] VS Code can automatically discover MCP servers already installed in Cursor and Claude.

[!NOTE] For quick installation, use the one-click install buttons and select where to add the MCP configuration. Make sure to replace the placeholders with your Port credentials.

Docker quick installation uvx quick installation

For manual installation follow these steps:

  1. Go to the Command Palette by pressing Cmd + Shift + P / Ctrl + Shift + P.
  2. Type Preferences: Open User Settings (JSON) and press enter.
  3. Edit the settings.json file and add the below configuration under the mcp>servers.
  4. Use Copilot in Agent mode, make sure the server is running and see its available Port tools.

VS Code MCP Tools

Docker

[!TIP] Consider using the full path to Docker (e.g., /usr/local/bin/docker) instead of just docker. You can find this path by running which docker in your terminal. Using the full path helps avoid PATH resolution issues and ensures consistent behavior across different shell environments.

  "Port": {
      "type": "stdio",
      "command": "docker",
      "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "PORT_CLIENT_ID",
          "-e",
          "PORT_CLIENT_SECRET",
          "-e",
          "PORT_REGION",
          "ghcr.io/port-labs/port-mcp-server:latest"
      ],
      "env": {
          "PORT_CLIENT_ID": "<PORT_CLIENT_ID>",
          "PORT_CLIENT_SECRET": "<PORT_CLIENT_SECRET>",
          "PORT_REGION": "<PORT_REGION>"
      }
  }

uvx

[!NOTE] If you want to run the command from a virtual Python environment, add a PYTHONPATH variable to the env object with its path, e.g., /path/to/your/venv/bin/python.

  "Port": {
      "type": "stdio",
      "command": "uvx",
      "args": [
          "mcp-server-port@0.2.8",
          "--client-id",
          "<PORT_CLIENT_ID>",
          "--client-secret",
          "<PORT_CLIENT_SECRET>",
          "--region",
          "<PORT_REGION>"
      ],
      "env": {
          "PORT_CLIENT_ID": "<PORT_CLIENT_ID>",
          "PORT_CLIENT_SECRET": "<PORT_CLIENT_SECRET>",
          "PORT_REGION": "<PORT_REGION>"
      }
  }

Usage with Neovim (mcphub.nvim)

To use Port MCP Server in Neovim, use the plugin mcphub.nvim with one of the supported LLM extensions, such as Avante or CodeCompanion.

Once installed, add Port's MCP server configuration:

  1. Access the servers config with the command :MCPHub and navigate to the Config tab, or open the servers config file directly, usually located at ~/.config/mcphub/servers.json.
  2. Add the configuration for Port MCP Server under the mcpServers section (see below).
  3. Save the configuration file.
  4. Make sure you have the environment variables PORT_CLIENT_ID and PORT_CLIENT_SECRET set in your Neovim environment.
  5. Restart the servers by opening the MCPHub view with :MCPHub and triggering the restart command with R.
  6. You should see the server running and accessible from the MCPHub view. To verify, use the @mcp tool in your LLM extension. For example, prompt: @mcp list my blueprints.

Check the mcphub.nvim documentation for more details on how to use it.

Docker Configuration Example for mcphub.nvim

[!NOTE] Make sure that you have the environment variables PORT_CLIENT_ID and PORT_CLIENT_SECRET set with your Port credentials.

{
    "mcpServers": {
        "port": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "PORT_CLIENT_ID",
                "-e",
                "PORT_CLIENT_SECRET",
                "-e",
                "PORT_REGION",
                "ghcr.io/port-labs/port-mcp-server:latest"
            ],
            "env": {
                "PORT_REGION": "EU",
                "PORT_CLIENT_ID": "",
                "PORT_CLIENT_SECRET": ""
            }
        }
    }
}

uvx Configuration Example for mcphub.nvim

[!NOTE] Make sure that you have the environment variables PORT_CLIENT_ID and PORT_CLIENT_SECRET set with your Port credentials.

{
    "mcpServers": {
        "port": {
            "command": "uvx",
            "args": [
                "mcp-server-port@0.2.8",
                "--client-id",
                "PORT_CLIENT_ID",
                "--client-secret",
                "PORT_CLIENT_SECRET",
                "--region",
                "PORT_REGION"
            ],
            "env": {
                "PORT_CLIENT_ID": "",
                "PORT_CLIENT_SECRET": "",
                "PORT_REGION": "EU"
            }
        }
    }
}

Available Tools

Blueprint Tools

  1. get_blueprints

    • Retrieve a list of all blueprints from Port
    • Optional inputs:
      • detailed (boolean, default: false): Return complete schema details for each blueprint
    • Returns: Formatted text representation of all available blueprints
  2. get_blueprint

    • Retrieve information about a specific blueprint by its identifier
    • Required inputs:
      • blueprint_identifier (string): The unique identifier of the blueprint to retrieve
    • Optional inputs:
      • detailed (boolean, default: true): Return complete schema details
  3. create_blueprint

    • Create a new blueprint in Port
    • Required inputs:
      • Various fields including identifier, title, properties, etc.
    • Returns: The created blueprint object
  4. update_blueprint

    • Update an existing blueprint
    • Required inputs:
      • identifier (string): The unique identifier of the blueprint to update
      • Various fields to update
    • Returns: The updated blueprint object
  5. delete_blueprint

    • Delete a blueprint from Port
    • Required inputs:
      • blueprint_identifier (string): The unique identifier of the blueprint to delete
    • Returns: Success status

Entity Tools

  1. get_entities

    • Retrieve all entities for a given blueprint
    • Required inputs:
      • blueprint_identifier (string): The identifier of the blueprint to get entities for
    • Optional inputs:
      • detailed (boolean, default: false): Return complete entity details including properties
  2. get_entity

    • Retrieve information about a specific entity
    • Required inputs:
      • blueprint_identifier (string): The identifier of the blueprint the entity belongs to
      • entity_identifier (string): The unique identifier of the entity to retrieve
    • Optional inputs:
      • detailed (boolean, default: true): Return complete entity details
  3. create_entity

    • Create a new entity for a specific blueprint
    • Required inputs:
      • blueprint_identifier (string): The identifier of the blueprint to create the entity for
      • entity (object): The entity data following the blueprint schema
  4. update_entity

    • Update an existing entity
    • Required inputs:
      • blueprint_identifier (string): The identifier of the blueprint the entity belongs to
      • entity_identifier (string): The unique identifier of the entity to update
      • entity (object): The updated entity data
  5. delete_entity

    • Delete an entity
    • Required inputs:
      • blueprint_identifier (string): The identifier of the blueprint the entity belongs to
      • entity_identifier (string): The unique identifier of the entity to delete
    • Optional inputs:
      • delete_dependents (boolean, default: false): If true, also deletes all dependencies

Scorecard Tools

  1. get_scorecards

    • Retrieve all scorecards from Port
    • Optional inputs:
      • detailed (boolean, default: false): Return complete scorecard details
  2. get_scorecard

    • Retrieve information about a specific scorecard by its identifier
    • Required inputs:
      • scorecard_id (string): The unique identifier of the scorecard to retrieve
      • blueprint_id (string, optional): The identifier of the blueprint the scorecard belongs to
  3. create_scorecard

    • Create a new scorecard for a specific blueprint
    • Required inputs:
      • blueprint_id (string): The identifier of the blueprint to create the scorecard for
      • identifier (string): The unique identifier for the new scorecard
      • title (string): The display title of the scorecard
      • levels (list): List of levels for the scorecard
    • Optional inputs:
      • rules (list): List of rules for the scorecard
      • description (string): Description for the scorecard
  4. update_scorecard

    • Update an existing scorecard
    • Required inputs:
      • blueprint_identifier (string): The identifier of the blueprint the scorecard belongs to
      • scorecard_identifier (string): The unique identifier of the scorecard to update
      • Various fields to update (title, levels, rules, etc.)
    • Returns: The updated scorecard object
  5. delete_scorecard

    • Delete a scorecard from Port
    • Required inputs:
      • blueprint_identifier (string): The identifier of the blueprint the scorecard belongs to
      • scorecard_identifier (string): The unique identifier of the scorecard to delete
    • Returns: Success status

AI Agents Tool

  1. invoke_ai_agent
    • Invoke a Port AI agent with a specific prompt
    • Required inputs:
      • prompt (string): The prompt to send to the AI agent
    • Returns: Invocation status and message from the AI agent

Local Development

For developing and testing new functionalities locally before publishing a new version, you can configure your MCP client (e.g., Cursor) to use your local cloned repository.

Prerequisites

  1. Clone the repository: If you haven't already, clone the port-mcp-server repository to your local machine.
  2. Set up the environment:
    • Navigate to the cloned repository's root directory.
    • Run make install. This command should set up a virtual environment (venv) and install all necessary dependencies.
    • Ensure the virtual environment is created (usually in a .venv directory within the repository).

Configuration Example

Below is an example of how you might configure your local development server. You'll need to replace the placeholder paths with the actual paths on your system.

Important:

  • The command should point to the Python executable within your local repository's virtual environment.
  • The PYTHONPATH in the env object should point to the root directory of your cloned repository.
{
  "mcpServers": {
    "port_local": {
      "command": "/path/to/your/port-mcp-server/.venv/bin/python", // Replace with the actual path to the venv Python
      "args": [
        "-m",
        "src",
        "--client-id",
        "<YOUR_PORT_CLIENT_ID>",
        "--client-secret",
        "<YOUR_PORT_CLIENT_SECRET>",
        "--region",
        "<YOUR_PORT_REGION>", // e.g., EU or US
        "--log-level",
        "DEBUG" // Or your preferred log level
      ],
      "env": {
        "PORT_CLIENT_ID": "<YOUR_PORT_CLIENT_ID>",
        "PORT_CLIENT_SECRET": "<YOUR_PORT_CLIENT_SECRET>",
        "PORT_REGION": "<YOUR_PORT_REGION>",
        "PORT_LOG_LEVEL": "DEBUG",
        "PYTHONPATH": "/path/to/your/port-mcp-server" // Replace with the actual path to your repository
      }
    }
  }
}

After setting this up, your MCP client will use your local version of the server, allowing you to test changes from your current branch.

Feedback and Roadmap

We're continuously improving Port MCP and would love to hear from you! Please share your feedback and feature requests on our roadmap page.

Troubleshooting

If you encounter authentication errors, verify that:

  1. Your Port credentials are correctly set in the arguments.
  2. You have the necessary permissions.
  3. The credentials are properly copied to your configuration.

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_server_port-0.2.17.tar.gz (35.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_server_port-0.2.17-py3-none-any.whl (65.3 kB view details)

Uploaded Python 3

File details

Details for the file mcp_server_port-0.2.17.tar.gz.

File metadata

  • Download URL: mcp_server_port-0.2.17.tar.gz
  • Upload date:
  • Size: 35.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcp_server_port-0.2.17.tar.gz
Algorithm Hash digest
SHA256 3b300fc58fe9622ba36e295ec0f0e1453c00829c024b765fc7eb376c21947845
MD5 5420645565eab45728b94a2b59ebabee
BLAKE2b-256 bfba33e413f8fc5824b7bb1de63e758b3b30d618c7cb9f7c3bba6f8eeb006c4e

See more details on using hashes here.

File details

Details for the file mcp_server_port-0.2.17-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_server_port-0.2.17-py3-none-any.whl
Algorithm Hash digest
SHA256 a8782cb17465bc0f75ec04fb398fb6b3204e922aade548ea8f9885711b2d82e4
MD5 6703c30a749f2a2a8bc716704c32583f
BLAKE2b-256 9df5ab7ccb2ed021c184bf1a758dafa42d0af551b393beefd60cbb5dbaf4a4fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page