Kinsta

by jacob-hartmann

340 downloads
Not rated
GitHub

About

Model Context Protocol (MCP) server for Kinsta WordPress hosting

Details

Author
jacob-hartmann
Downloads
340
Categories
Developer Tools, Other

- 83 tools organized by connectivity, authentication, operations, company, sites, environments, site tools, plugins, and themes
- Manage WordPress sites: create, clone, delete, and reset
- Control environments: create, push, delete, and change PHP allocation
- Run WP-CLI commands on any environment
- List and update plugins and themes across sites
- Manage SSH access, IP allowlists, redirects, and server cache

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Kinsta
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install via npx and configure in your MCP client (Claude Desktop, Claude Code CLI, or Cursor) by providing a Kinsta API key and Company ID as environment variables. Run npx -y kinsta-mcp; the server exposes 83 tools for managing sites, environments, plugins, themes, and more.

kinsta.ping

Check that the Kinsta MCP server is running and that API credentials are configured. Does not make any API calls to Kinsta.

kinsta.operations.status

Check the status of an asynchronous Kinsta operation by its operation ID. Many Kinsta actions (site creation, backups, cache clearing, etc.) return an operation_id that can be polled here to track progress.

kinsta.auth.validate

Validate the current Kinsta API key. Returns account information if the key is valid.

kinsta.company.users

List all users in your Kinsta company.

kinsta.company.regions

List all available deployment regions for your Kinsta company.

kinsta.company.api-keys

List all API keys for your Kinsta company.

kinsta.company.activity-logs

List activity logs for your Kinsta company. Supports filtering and pagination.

kinsta.company.plugins

List all WordPress plugins across all sites in your Kinsta company. Supports search, filtering, and pagination.

kinsta.company.themes

List all WordPress themes across all sites in your Kinsta company. Supports search, filtering, and pagination.

kinsta.dns.domains

List all DNS domains for your Kinsta company.

kinsta.dns.records

List all DNS records for a specific domain.

kinsta.dns.records.create

Create a new DNS record for a domain.

kinsta.dns.records.update

Update an existing DNS record for a domain.

kinsta.dns.records.delete

Delete a DNS record from a domain.

kinsta.sites.list

List all WordPress sites in your Kinsta company. Optionally include environment details.

kinsta.sites.get

Get details for a specific Kinsta site by its ID.

kinsta.sites.create

Create a new WordPress site on Kinsta. Returns an operation_id to track progress.

kinsta.sites.create-plain

Create a new plain (empty) site on Kinsta without WordPress installed. Returns an operation_id.

kinsta.sites.clone

Clone an existing site to create a new site. Returns an operation_id.

kinsta.sites.delete

Delete a Kinsta site permanently. This action cannot be undone.

kinsta.sites.reset

Reset a Kinsta site to a fresh WordPress install. This removes all existing data.

kinsta.environments.list

List all environments for a Kinsta site.

kinsta.environments.create

Create a new WordPress environment for a site. Returns an operation_id.

kinsta.environments.create-plain

Create a new plain (empty) environment for a site. Returns an operation_id.

kinsta.environments.clone

Clone an existing environment to create a new one. Returns an operation_id.

kinsta.environments.push

Push one environment to another (e.g. staging to live). Returns an operation_id.

kinsta.environments.delete

Delete an environment. This action cannot be undone.

kinsta.environments.php-allocation

Change PHP worker allocation for a specific environment. Returns an operation_id.

kinsta.environments.php-allocation-site

Change PHP worker allocation for all environments in a site. Returns an operation_id.

kinsta.environments.webroot

Change the webroot subfolder for an environment. Returns an operation_id.

kinsta.environments.files

List files in an environment's file system.

kinsta.environments.redirects

List redirect rules for an environment. Supports filtering and pagination.

kinsta.environments.redirects.update

Create, update, or delete redirect rules for an environment.

kinsta.environments.ssh.status

Get the SSH/SFTP status for an environment.

kinsta.environments.ssh.toggle

Enable or disable SSH/SFTP access for an environment.

kinsta.environments.ssh.password-access

Enable or disable SSH password-based access for an environment.

kinsta.environments.ssh.generate-password

Generate a new SSH/SFTP password for an environment.

kinsta.environments.ssh.password

Get the current SSH/SFTP password for an environment.

kinsta.environments.ssh.ip-allowlist

Get the SSH IP allowlist for an environment.

kinsta.environments.ssh.ip-allowlist.update

Update the SSH IP allowlist for an environment.

kinsta.environments.ssh.config

Get SSH connection configuration for an environment.

kinsta.environments.ssh.password-expiration

Change the SSH password expiration interval for an environment.

kinsta.environments.wp-cli

Run a WP-CLI command on an environment. The command must start with 'wp '.

kinsta.environments.phpmyadmin

Get a phpMyAdmin login token for an environment to access the database.

kinsta.tools.clear-cache

Clear the server cache for an environment. Returns an operation_id.

kinsta.tools.restart-php

Restart PHP for an environment. Returns an operation_id.

kinsta.tools.php-version

Change the PHP version for an environment. Returns an operation_id.

kinsta.tools.denied-ips

Get the list of denied (blocked) IP addresses for an environment.

kinsta.tools.denied-ips.update

Update the list of denied (blocked) IP addresses for an environment.

kinsta.plugins.list

List all plugins for a Kinsta environment.

kinsta.plugins.update

Update a single plugin to the latest version. Returns an operation_id.

kinsta.plugins.bulk-update

Update multiple plugins to their latest versions at once. Returns an operation_id.

kinsta.plugins.list-wp

List WordPress plugins with details from the WordPress.org repository for an environment.

kinsta.themes.list

List all themes for a Kinsta environment.

kinsta.themes.update

Update a single theme to the latest version. Returns an operation_id.

kinsta.themes.bulk-update

Update multiple themes to their latest versions at once. Returns an operation_id.

kinsta.themes.list-wp

List WordPress themes with details from the WordPress.org repository for an environment.

kinsta.domains.list

List all custom domains for an environment.

kinsta.domains.add

Add a custom domain to an environment.

kinsta.domains.delete

Remove custom domains from an environment.

kinsta.domains.verification

Get DNS verification records for a domain.

kinsta.domains.set-primary

Set the primary domain for an environment.

kinsta.edge-cache.clear

Clear the edge cache for an environment. Returns an operation_id.

kinsta.edge-cache.toggle

Enable or disable edge caching for an environment.

kinsta.cdn.clear-cache

Clear the CDN cache for an environment. Returns an operation_id.

kinsta.cdn.image-optimization

Configure CDN image optimization settings for an environment.

kinsta.sftp-users.list

List additional SFTP/SSH user accounts for an environment.

kinsta.sftp-users.toggle

Enable or disable additional SFTP/SSH accounts for an environment.

kinsta.sftp-users.add

Add a new additional SFTP/SSH user account to an environment.

kinsta.sftp-users.remove

Remove an additional SFTP/SSH user account from an environment.

kinsta.analytics.visits

Get visitor analytics for an environment over a date range.

kinsta.analytics.visits-usage

Get visitor usage analytics for an environment (billable visits).

kinsta.analytics.bandwidth

Get bandwidth analytics for an environment over a date range.

kinsta.analytics.bandwidth-usage

Get bandwidth usage analytics for an environment (billable bandwidth).

kinsta.analytics.cdn-bandwidth

Get CDN bandwidth analytics for an environment over a date range.

kinsta.analytics.cdn-bandwidth-usage

Get CDN bandwidth usage analytics for an environment (billable CDN bandwidth).

kinsta.analytics.disk-space

Get disk space usage analytics for an environment.

kinsta.backups.list

List all backups for an environment.

kinsta.backups.downloadable

List downloadable backups for an environment.

kinsta.backups.create

Create a manual backup for an environment. Returns an operation_id.

kinsta.backups.restore

Restore an environment from a backup. This will overwrite the current environment. Returns an operation_id.

kinsta.backups.delete

Delete a backup. This action cannot be undone.

kinsta.logs.get

Get log file contents for an environment. Supports error.log and access.log.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "kinsta": {
            "kinsta": {
                "command": "npx",
                "args": [
                    "-y",
                    "kinsta-mcp"
                ],
                "env": {
                    "KINSTA_API_KEY": "your-api-key",
                    "KINSTA_COMPANY_ID": "your-company-id"
                }
            }
        }
    }
}

McpServers

{
    "kinsta": {
        "command": "npx",
        "args": [
            "-y",
            "kinsta-mcp"
        ],
        "env": {
            "KINSTA_API_KEY": "your-api-key",
            "KINSTA_COMPANY_ID": "your-company-id"
        }
    }
}

Kinsta MCP Server

CI
Coverage Status
CodeQL
OpenSSF Scorecard
npm version
npm downloads
License
Node

A Model Context Protocol (MCP) server for the Kinsta WordPress hosting platform.

This server allows AI assistants (like Claude) to interact with your Kinsta sites and infrastructure securely via the Kinsta API.

Quick Start

Prerequisites

- Node.js v22 or higher
- A Kinsta account with API access
- A Kinsta API key (see Generate an API Key)

Step 1: Generate a Kinsta API Key

1. Log in to MyKinsta
2. Go to Your name > Company settings > API Keys
3. Click Create API Key
4. Choose an expiration and give the key a name
5. Click Generate and copy the key (it's only shown once)

You'll also need your Company ID, which can be found in MyKinsta under Company settings.

Step 2: Configure Your MCP Client

Choose the setup that matches your MCP client:

Claude Desktop (Recommended)

Add to your claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "kinsta": {
      "command": "npx",
      "args": ["-y", "kinsta-mcp"],
      "env": {
        "KINSTA_API_KEY": "your-api-key",
        "KINSTA_COMPANY_ID": "your-company-id"
      }
    }
  }
}

Claude Code (CLI)

Add to your Claude Code MCP settings (~/.claude/mcp.json or project-level):

{
  "mcpServers": {
    "kinsta": {
      "command": "npx",
      "args": ["-y", "kinsta-mcp"],
      "env": {
        "KINSTA_API_KEY": "your-api-key",
        "KINSTA_COMPANY_ID": "your-company-id"
      }
    }
  }
}

Cursor

In Cursor settings, add an MCP server:

{
  "mcpServers": {
    "kinsta": {
      "command": "npx",
      "args": ["-y", "kinsta-mcp"],
      "env": {
        "KINSTA_API_KEY": "your-api-key",
        "KINSTA_COMPANY_ID": "your-company-id"
      }
    }
  }
}

Configuration Reference

Environment Variables

| Variable | Required | Default | Description |
| --------------------- | -------- | --------------------------- | ----------------------------------- |
| KINSTA_API_KEY | Yes | - | Kinsta API key (Bearer token) |
| KINSTA_COMPANY_ID | Yes | - | Your Kinsta company ID |
| KINSTA_API_BASE_URL | No | https://api.kinsta.com/v2 | API base URL (override for testing) |

Features

Tools

The server provides 83 tools organized by category:

Connectivity

| Tool | Description |
| ------------- | ---------------------------------------------------- |
| kinsta.ping | Check server status and API credential configuration |

Authentication

| Tool | Description |
| ---------------------- | --------------------------------------------------------------------------- |
| kinsta.auth.validate | Validate the current Kinsta API key and return account information if valid |

Operations

| Tool | Description |
| -------------------------- | -------------------------------------------------------------------- |
| kinsta.operations.status | Check the status of an asynchronous Kinsta operation by operation ID |

Company

| Tool | Description |
| ------------------------------ | --------------------------------------------------------------------------- |
| kinsta.company.users | List all users in your Kinsta company |
| kinsta.company.regions | List all available deployment regions for your Kinsta company |
| kinsta.company.api-keys | List all API keys for your Kinsta company |
| kinsta.company.activity-logs | List company activity logs (supports filtering and pagination) |
| kinsta.company.plugins | List WordPress plugins across all sites (supports search/filter/pagination) |
| kinsta.company.themes | List WordPress themes across all sites (supports search/filter/pagination) |

Sites

| Tool | Description |
| --------------------------- | --------------------------------------------------------------------------------------- |
| kinsta.sites.list | List all WordPress sites (optionally include environment details) |
| kinsta.sites.get | Get details for a specific Kinsta site by ID |
| kinsta.sites.create | Create a new WordPress site (returns an operation_id) |
| kinsta.sites.create-plain | Create a new plain (empty) site without WordPress installed (returns an operation_id) |
| kinsta.sites.clone | Clone an existing site (returns an operation_id) |
| kinsta.sites.delete | Delete a Kinsta site permanently (cannot be undone) |
| kinsta.sites.reset | Reset a site to a fresh WordPress install (destructive) |

Environments

| Tool | Description |
| --------------------------------------------- | --------------------------------------------------------------------------------------- |
| kinsta.environments.list | List all environments for a site |
| kinsta.environments.create | Create a new WordPress environment for a site (returns an operation_id) |
| kinsta.environments.create-plain | Create a new plain (empty) environment for a site (returns an operation_id) |
| kinsta.environments.clone | Clone an existing environment (returns an operation_id) |
| kinsta.environments.push | Push one environment to another (destructive; returns an operation_id) |
| kinsta.environments.delete | Delete an environment (cannot be undone) |
| kinsta.environments.php-allocation | Change PHP worker allocation for an environment (returns an operation_id) |
| kinsta.environments.php-allocation-site | Change PHP worker allocation for all environments in a site (returns an operation_id) |
| kinsta.environments.webroot | Change the webroot subfolder for an environment (returns an operation_id) |
| kinsta.environments.files | List files in an environment's file system |
| kinsta.environments.redirects | List redirect rules for an environment (supports filtering/pagination) |
| kinsta.environments.redirects.update | Create, update, or delete redirect rules for an environment |
| kinsta.environments.ssh.status | Get SSH/SFTP status for an environment |
| kinsta.environments.ssh.toggle | Enable or disable SSH/SFTP access for an environment |
| kinsta.environments.ssh.password-access | Enable or disable SSH password-based access |
| kinsta.environments.ssh.generate-password | Generate a new SSH/SFTP password |
| kinsta.environments.ssh.password | Get the current SSH/SFTP password |
| kinsta.environments.ssh.ip-allowlist | Get the SSH IP allowlist |
| kinsta.environments.ssh.ip-allowlist.update | Update the SSH IP allowlist |
| kinsta.environments.ssh.config | Get SSH connection configuration for an environment |
| kinsta.environments.ssh.password-expiration | Change SSH password expiration interval |
| kinsta.environments.wp-cli | Run a WP-CLI command on an environment (must start with wp ) |
| kinsta.environments.phpmyadmin | Get a phpMyAdmin login token for an environment |

Site Tools

| Tool | Description |
| -------------------------------- | --------------------------------------------------------------------- |
| kinsta.tools.clear-cache | Clear the server cache for an environment (returns an operation_id) |
| kinsta.tools.restart-php | Restart PHP for an environment (returns an operation_id) |
| kinsta.tools.php-version | Change the PHP version for an environment (returns an operation_id) |
| kinsta.tools.denied-ips | Get the list of denied (blocked) IP addresses for an environment |
| kinsta.tools.denied-ips.update | Update the list of denied (blocked) IP addresses for an environment |

Plugins & Themes

| Tool | Description |
| ---------------------------- | ----------------------------------------------------------- |
| kinsta.plugins.list | List all plugins for an environment |
| kinsta.plugins.update | Update a single plugin (returns an operation_id) |
| kinsta.plugins.bulk-update | Update multiple plugins at once (returns an operation_id) |
| kinsta.plugins.list-wp | List plugins with details from the WordPress.org repository |
| kinsta.themes.list | List all themes for an environment |
| kinsta.themes.update | Update a single theme (returns an operation_id) |
| kinsta.themes.bulk-update | Update multiple themes at once (returns an operation_id) |
| kinsta.themes.list-wp | List themes with details from the WordPress.org repository |

Domains

| Tool | Description |
| ----------------------------- | ------------------------------------------ |
| kinsta.domains.list | List all custom domains for an environment |
| kinsta.domains.add | Add a custom domain to an environment |
| kinsta.domains.delete | Remove custom domains from an environment |
| kinsta.domains.verification | Get DNS verification records for a domain |
| kinsta.domains.set-primary | Set the primary domain for an environment |

DNS (Kinsta DNS)

| Tool | Description |
| --------------------------- | ------------------------------------- |
| kinsta.dns.domains | List all DNS domains for your company |
| kinsta.dns.records | List DNS records for a domain |
| kinsta.dns.records.create | Create a new DNS record |
| kinsta.dns.records.update | Update an existing DNS record |
| kinsta.dns.records.delete | Delete a DNS record |

Edge Cache & CDN

| Tool | Description |
| ------------------------------- | ------------------------------------------------------------------- |
| kinsta.edge-cache.clear | Clear the edge cache for an environment (returns an operation_id) |
| kinsta.edge-cache.toggle | Enable or disable edge caching for an environment |
| kinsta.cdn.clear-cache | Clear the CDN cache for an environment (returns an operation_id) |
| kinsta.cdn.image-optimization | Configure CDN image optimization settings |

SFTP Users

| Tool | Description |
| -------------------------- | --------------------------------------------------------- |
| kinsta.sftp-users.list | List additional SFTP/SSH user accounts for an environment |
| kinsta.sftp-users.toggle | Enable or disable additional SFTP/SSH accounts |
| kinsta.sftp-users.add | Add a new additional SFTP/SSH user account |
| kinsta.sftp-users.remove | Remove an additional SFTP/SSH user account |

Backups

| Tool | Description |
| ----------------------------- | ----------------------------------------------------------------------------- |
| kinsta.backups.list | List all backups for an environment |
| kinsta.backups.downloadable | List downloadable backups for an environment |
| kinsta.backups.create | Create a manual backup (returns an operation_id) |
| kinsta.backups.restore | Restore an environment from a backup (destructive; returns an operation_id) |
| kinsta.backups.delete | Delete a backup (cannot be undone) |

Analytics

| Tool | Description |
| -------------------------------------- | ---------------------------------------------------------------- |
| kinsta.analytics.visits | Get visitor analytics for an environment over a date range |
| kinsta.analytics.visits-usage | Get visitor usage analytics (billable visits) |
| kinsta.analytics.bandwidth | Get bandwidth analytics for an environment over a date range |
| kinsta.analytics.bandwidth-usage | Get bandwidth usage analytics (billable bandwidth) |
| kinsta.analytics.cdn-bandwidth | Get CDN bandwidth analytics for an environment over a date range |
| kinsta.analytics.cdn-bandwidth-usage | Get CDN bandwidth usage analytics (billable CDN bandwidth) |
| kinsta.analytics.disk-space | Get disk space usage analytics for an environment |

Logs

| Tool | Description |
| ----------------- | ---------------------------------------- |
| kinsta.logs.get | Get log file contents for an environment |

Resources

The server exposes data as MCP resources:

Static Resources

| Resource URI | Description |
| ------------------ | ----------------------------------------------- |
| kinsta://sites | List all WordPress sites in your Kinsta company |
| kinsta://regions | List available deployment regions |

Resource Templates

| Resource URI | Description |
| --------------------------------------- | -------------------------------- |
| kinsta://sites/{site_id} | Details for a specific site |
| kinsta://sites/{site_id}/environments | Environments for a specific site |

Prompts

The server provides guided prompts for common workflows:

| Prompt | Description |
| ------------------ | ---------------------------------------------------------------------- |
| deploy-site | Guide through creating a new WordPress site on Kinsta |
| manage-backups | Guide for backup list, create, restore, download, and delete workflows |
| push-environment | Guide for pushing changes between environments (e.g. staging to live) |
| setup-domain | Guide for adding a custom domain to a Kinsta environment |

Development

Setup

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.