# Scale GP TypeScript MCP Server

It is generated with [Stainless](https://www.stainless.com/).

## Installation

### Direct invocation

You can run the MCP Server directly via `npx`:

```sh
export SGP_API_KEY="My API Key"
export SGP_ACCOUNT_ID="My Account ID"
export SGP_CLIENT_ENVIRONMENT="production"
npx -y scale-gp-mcp@latest
```

### Via MCP Client

There is a partial list of existing clients at [modelcontextprotocol.io](https://modelcontextprotocol.io/clients). If you already
have a client, consult their documentation to install the MCP server.

For clients with a configuration JSON, it might look something like this:

```json
{
  "mcpServers": {
    "scale_gp_api": {
      "command": "npx",
      "args": ["-y", "scale-gp-mcp"],
      "env": {
        "SGP_API_KEY": "My API Key",
        "SGP_ACCOUNT_ID": "My Account ID",
        "SGP_CLIENT_ENVIRONMENT": "production"
      }
    }
  }
}
```

### Cursor

If you use Cursor, you can install the MCP server by using the button below. You will need to set your environment variables
in Cursor's `mcp.json`, which can be found in Cursor Settings > Tools & MCP > New MCP Server.

[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=scale-gp-mcp&config=eyJuYW1lIjoic2NhbGUtZ3AtbWNwIiwidHJhbnNwb3J0IjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc2dwLWRldi5zdGxtY3AuY29tIiwiaGVhZGVycyI6eyJ4LWFwaS1rZXkiOiJNeSBBUEkgS2V5In19)

### VS Code

If you use MCP, you can install the MCP server by clicking the link below. You will need to set your environment variables
in VS Code's `mcp.json`, which can be found via Command Palette > MCP: Open User Configuration.

[Open VS Code](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22scale-gp-mcp%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fsgp-dev.stlmcp.com%22%2C%22headers%22%3A%7B%22x-api-key%22%3A%22My%20API%20Key%22%7D%7D)

### Claude Code

If you use Claude Code, you can install the MCP server by running the command below in your terminal. You will need to set your
environment variables in Claude Code's `.claude.json`, which can be found in your home directory.

```
claude mcp add scale_gp_mcp_api --header "x-api-key: My API Key" --transport http https://sgp-dev.stlmcp.com
```

## Running Locally (without a Stainless API key)

If you do not have a Stainless API key, you can run both code execution and docs search locally. Local code execution requires [Deno](https://deno.land):

```sh
# macOS
brew install deno

# or via npm
npm install -g deno
```

Pass `--code-execution-mode local` and `--docs-search-mode local` when starting the server:

```sh
export SGP_API_KEY="My API Key"
export SGP_ACCOUNT_ID="My Account ID"
export SGP_CLIENT_ENVIRONMENT="production"
npx -y scale-gp-mcp@latest \
  --code-execution-mode local \
  --docs-search-mode local
```

For clients with a configuration JSON:

```json
{
  "mcpServers": {
    "scale_gp_api": {
      "command": "npx",
      "args": [
        "-y", "scale-gp-mcp",
        "--code-execution-mode", "local",
        "--docs-search-mode", "local"
      ],
      "env": {
        "SGP_API_KEY": "My API Key",
        "SGP_ACCOUNT_ID": "My Account ID",
        "SGP_CLIENT_ENVIRONMENT": "production"
      }
    }
  }
}
```

For Claude Code:

```sh
claude mcp add sgp_dev --scope user \
  -e SGP_API_KEY=<api-key> \
  -e SGP_ACCOUNT_ID=<account-id> \
  -e SGP_CLIENT_ENVIRONMENT=development \
  -- npx -y scale-gp-mcp@latest \
  --code-execution-mode local \
  --docs-search-mode local
```

The configuration is saved to `~/.claude.json`. Use `--scope project` instead of `--scope user` to scope the server to a single project.

## Environment Configuration

The MCP server can target different environments by setting the `SGP_CLIENT_ENVIRONMENT` variable:

| Environment | Base URL |
| --- | --- |
| `production` (default) | `https://api.egp.scale.com` |
| `production-multitenant` | `https://api.sgp.scale.com` |
| `staging` | `https://api.staging-sgp.scale.com` |
| `development` | `https://api.dev-sgp.scale.com` |
| `local` | `http://127.0.0.1:5003/public` |

Alternatively, you can set `SGP_CLIENT_BASE_URL` to point at an arbitrary URL. Note that `SGP_CLIENT_BASE_URL` and `SGP_CLIENT_ENVIRONMENT` are mutually exclusive — setting both will cause an error.

### Multiple Environments

To work with multiple environments simultaneously, you can configure separate MCP server entries, each with its own credentials and target environment. This is useful when you need to interact with production, staging, and development APIs side by side.

For Claude Code, add one server per environment using the CLI:

```sh
# Production
claude mcp add sgp_production \
  -e SGP_API_KEY=<prod-api-key> \
  -e SGP_ACCOUNT_ID=<prod-account-id> \
  -e SGP_CLIENT_ENVIRONMENT=production \
  -- npx -y scale-gp-mcp@latest

# Staging
claude mcp add sgp_staging \
  -e SGP_API_KEY=<staging-api-key> \
  -e SGP_ACCOUNT_ID=<staging-account-id> \
  -e SGP_CLIENT_ENVIRONMENT=staging \
  -- npx -y scale-gp-mcp@latest

# Development
claude mcp add sgp_dev \
  -e SGP_API_KEY=<dev-api-key> \
  -e SGP_ACCOUNT_ID=<dev-account-id> \
  -e SGP_CLIENT_ENVIRONMENT=development \
  -- npx -y scale-gp-mcp@latest
```

For Cursor, add the following to your `mcp.json` (Cursor Settings > Tools & MCP > New MCP Server):

```json
{
  "mcpServers": {
    "sgp_production": {
      "command": "npx",
      "args": ["-y", "scale-gp-mcp@latest"],
      "env": {
        "SGP_API_KEY": "<prod-api-key>",
        "SGP_ACCOUNT_ID": "<prod-account-id>",
        "SGP_CLIENT_ENVIRONMENT": "production"
      }
    },
    "sgp_staging": {
      "command": "npx",
      "args": ["-y", "scale-gp-mcp@latest"],
      "env": {
        "SGP_API_KEY": "<staging-api-key>",
        "SGP_ACCOUNT_ID": "<staging-account-id>",
        "SGP_CLIENT_ENVIRONMENT": "staging"
      }
    },
    "sgp_dev": {
      "command": "npx",
      "args": ["-y", "scale-gp-mcp@latest"],
      "env": {
        "SGP_API_KEY": "<dev-api-key>",
        "SGP_ACCOUNT_ID": "<dev-account-id>",
        "SGP_CLIENT_ENVIRONMENT": "development"
      }
    }
  }
}
```

Each entry runs its own MCP server process. Tools from each server are namespaced by the server name (e.g., `sgp_production`, `sgp_staging`), so the client can distinguish which environment is being targeted.

## Code Mode

This MCP server is built on the "Code Mode" tool scheme. In this MCP Server,
your agent will write code against the TypeScript SDK, which will then be executed in an
isolated sandbox. To accomplish this, the server will expose two tools to your agent:

- The first tool is a docs search tool, which can be used to generically query for
  documentation about your API/SDK.

- The second tool is a code tool, where the agent can write code against the TypeScript SDK.
  The code will be executed in a sandbox environment without web or filesystem access. Then,
  anything the code returns or prints will be returned to the agent as the result of the
  tool call.

Using this scheme, agents are capable of performing very complex tasks deterministically
and repeatably.

## Running remotely

Launching the client with `--transport=http` launches the server as a remote server using Streamable HTTP transport. The `--port` setting can choose the port it will run on, and the `--socket` setting allows it to run on a Unix socket.

Authorization can be provided via the following headers:
| Header | Equivalent client option | Security scheme |
| ----------- | ------------------------ | --------------- |
| `x-api-key` | `apiKey` | APIKeyHeader |

A configuration JSON for this server might look like this, assuming the server is hosted at `http://localhost:3000`:

```json
{
  "mcpServers": {
    "scale_gp_api": {
      "url": "http://localhost:3000",
      "headers": {
        "x-api-key": "My API Key"
      }
    }
  }
}
```
