Skip to main content
Glama
TheSurfingCoder

TigerData Pulumi MCP Server

README.md
# TigerData Pulumi MCP Server

> **Note:**
> If you are using this MCP server via an MCP client (such as Cursor), you do **not** need to run or manage the server process manually. The client will handle all communication with the MCP server for you.

This project provides a server interface for managing TigerData Cloud services using Pulumi automation.

## Quick Setup for MCP Clients (e.g., Cursor)

1. **In your main project's `.env` file, add:**
   ```
   PULUMI_PROJECT_PATH=/absolute/path/to/your/project/infra
   ```
2. **Set the `DOTENV_PATH` environment variable in your shell profile:**
   ```sh
   export DOTENV_PATH=/absolute/path/to/your/project/.env
   ```
   > This ensures the MCP server can always find and use your project's `.env` file, no matter where the MCP server is installed or run. Setting it in your shell profile makes it available in every terminal session.
3. **Configure your MCP client (e.g., Cursor) as needed (e.g., with `mcp.json`).**

That's it! You can now use all MCP features in your client, and the MCP server will automatically use your configuration.

## MCP Configuration Setup

### For Cursor IDE

Create or update your MCP configuration file at `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "tigerdata-pulumi": {
      "command": "node",
      "args": [
        "/absolute/path/to/tigerdata-pulumi-mcp-server/dist/index.js"
      ],
      "env": {
        "PULUMI_PROJECT_PATH": "/absolute/path/to/your/project/infra"
      }
    }
  }
}
```

**Example paths:**
- If your server is at: `/Users/username/projects/tigerdata-pulumi-mcp-server/`
- And your Pulumi infra is at: `/Users/username/projects/my-project/infra/`
- Your config would be:

```json
{
  "mcpServers": {
    "tigerdata-pulumi": {
      "command": "node",
      "args": [
        "/Users/username/projects/tigerdata-pulumi-mcp-server/dist/index.js"
      ],
      "env": {
        "PULUMI_PROJECT_PATH": "/Users/username/projects/my-project/infra"
      }
    }
  }
}
```

### For Other MCP Clients

#### Claude Desktop
Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "tigerdata-pulumi": {
      "command": "node",
      "args": ["/path/to/tigerdata-pulumi-mcp-server/dist/index.js"],
      "env": {
        "PULUMI_PROJECT_PATH": "/path/to/your/project/infra"
      }
    }
  }
}
```

#### Anthropic's Inspector (Debugging Tool)
Add this to your MCP config for debugging:

```json
{
  "mcpServers": {
    "inspector": {
      "command": "npx",
      "args": ["--yes", "@anthropic-ai/inspector"]
    }
  }
}
```

### Configuration Options

| Option | Description | Required | Default |
|--------|-------------|----------|---------|
| `command` | Command to run the server | Yes | `node` |
| `args` | Array of command arguments | Yes | `["/path/to/dist/index.js"]` |
| `env.PULUMI_PROJECT_PATH` | Path to your Pulumi infrastructure directory | Yes | None |

### After Configuration

1. **Restart your MCP client** (Cursor, Claude Desktop, etc.)
2. **Verify connection** - you should see the server connect successfully
3. **Test tools** - try using one of the available TimescaleDB tools:
   - `timescale_create_service`
   - `timescale_create_services`
   - `timescale_delete_service`
   - `timescale_list_services`

### Troubleshooting MCP Connection

- **"No tools or prompts" error**: Ensure the server path in your config is correct
- **Server not found**: Verify the `dist/index.js` file exists and the path is absolute
- **Permission denied**: Make sure the server directory is readable
- **Environment variables**: Confirm `PULUMI_PROJECT_PATH` is set correctly

---

## Advanced: Running the MCP Server Manually

If you ever need to run the MCP server as a standalone process (for development or debugging):

1. Install dependencies:
   ```sh
   cd /path/to/tigerdata-pulumi-mcp-server
   npm install
   ```
2. Start the server:
   ```sh
   npm start
   ```

---

## Initializing or Selecting a Pulumi Stack (from the terminal)

You can initialize or select your Pulumi stack directly from your infra directory:

```
cd /absolute/path/to/your/project/infra
pulumi stack init dev   # (or pulumi stack select dev if it already exists)
pulumi up
```

---

## Troubleshooting

- **Error: Invalid workDir passed to local workspace:**
  - Make sure your `.env` file contains the correct `PULUMI_PROJECT_PATH`.
  - Make sure `DOTENV_PATH` is set to your `.env` file and is available in your shell (check with `echo $DOTENV_PATH`).
  - Restart your terminal after editing your shell profile.

---

## Example `.env.example`

```
# Path to your Pulumi infra directory
# PULUMI_PROJECT_PATH=/absolute/path/to/your/project/infra
```

---

This setup allows you to use the MCP server with any project structure, making it flexible and user-friendly for all users.