# IT Glue MCP server

> Enables AI assistants to read and write IT Glue documentation, manage flexible assets, and perform semantic vector searches.

- Repository: https://github.com/mspstack/mcp-itglue
- Page: https://hostedmcp.org/servers/mspstack/mcp-itglue
- Transport: stdio
- Stars: 6
- License: MIT
- Latest version: 0.6.0

## Install

### Claude Code

```sh
claude mcp add --env 'ITGLUE_API_KEY=<YOUR_ITGLUE_API_KEY>' --env 'AZURE_OPENAI_API_KEY=<YOUR_AZURE_OPENAI_API_KEY>' --env 'AZURE_STORAGE_CONNECTION_STRING=<YOUR_AZURE_STORAGE_CONNECTION_STRING>' --env 'OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>' mcp-itglue -- npx -y mcp-itglue
```

### Cursor (`~/.cursor/mcp.json`)

```json
{
  "mcpServers": {
    "mcp-itglue": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-itglue"
      ],
      "env": {
        "ITGLUE_API_KEY": "<YOUR_ITGLUE_API_KEY>",
        "AZURE_OPENAI_API_KEY": "<YOUR_AZURE_OPENAI_API_KEY>",
        "AZURE_STORAGE_CONNECTION_STRING": "<YOUR_AZURE_STORAGE_CONNECTION_STRING>",
        "OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
      }
    }
  }
}
```

### VS Code (`.vscode/mcp.json`)

```json
{
  "servers": {
    "mcp-itglue": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mcp-itglue"
      ],
      "env": {
        "ITGLUE_API_KEY": "<YOUR_ITGLUE_API_KEY>",
        "AZURE_OPENAI_API_KEY": "<YOUR_AZURE_OPENAI_API_KEY>",
        "AZURE_STORAGE_CONNECTION_STRING": "<YOUR_AZURE_STORAGE_CONNECTION_STRING>",
        "OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
      }
    }
  }
}
```

### VS Code CLI

```sh
code --add-mcp '{"name":"mcp-itglue","type":"stdio","command":"npx","args":["-y","mcp-itglue"],"env":{"ITGLUE_API_KEY":"<YOUR_ITGLUE_API_KEY>","AZURE_OPENAI_API_KEY":"<YOUR_AZURE_OPENAI_API_KEY>","AZURE_STORAGE_CONNECTION_STRING":"<YOUR_AZURE_STORAGE_CONNECTION_STRING>","OPENAI_API_KEY":"<YOUR_OPENAI_API_KEY>"}}'
```

### Claude Desktop (`claude_desktop_config.json`)

```json
{
  "mcpServers": {
    "mcp-itglue": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-itglue"
      ],
      "env": {
        "ITGLUE_API_KEY": "<YOUR_ITGLUE_API_KEY>",
        "AZURE_OPENAI_API_KEY": "<YOUR_AZURE_OPENAI_API_KEY>",
        "AZURE_STORAGE_CONNECTION_STRING": "<YOUR_AZURE_STORAGE_CONNECTION_STRING>",
        "OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
      }
    }
  }
}
```

### Codex

```sh
codex mcp add mcp-itglue --env 'ITGLUE_API_KEY=<YOUR_ITGLUE_API_KEY>' --env 'AZURE_OPENAI_API_KEY=<YOUR_AZURE_OPENAI_API_KEY>' --env 'AZURE_STORAGE_CONNECTION_STRING=<YOUR_AZURE_STORAGE_CONNECTION_STRING>' --env 'OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>' -- npx -y mcp-itglue
```

### Codex config.toml (`~/.codex/config.toml`)

```toml
[mcp_servers.mcp-itglue]
command = "npx"
args = ["-y", "mcp-itglue"]

[mcp_servers.mcp-itglue.env]
ITGLUE_API_KEY = "<YOUR_ITGLUE_API_KEY>"
AZURE_OPENAI_API_KEY = "<YOUR_AZURE_OPENAI_API_KEY>"
AZURE_STORAGE_CONNECTION_STRING = "<YOUR_AZURE_STORAGE_CONNECTION_STRING>"
OPENAI_API_KEY = "<YOUR_OPENAI_API_KEY>"
```

### Gemini CLI

```sh
gemini mcp add -s user -e 'ITGLUE_API_KEY=<YOUR_ITGLUE_API_KEY>' -e 'AZURE_OPENAI_API_KEY=<YOUR_AZURE_OPENAI_API_KEY>' -e 'AZURE_STORAGE_CONNECTION_STRING=<YOUR_AZURE_STORAGE_CONNECTION_STRING>' -e 'OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>' mcp-itglue npx -- -y mcp-itglue
```

### Gemini settings.json (`~/.gemini/settings.json`)

```json
{
  "mcpServers": {
    "mcp-itglue": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-itglue"
      ],
      "env": {
        "ITGLUE_API_KEY": "<YOUR_ITGLUE_API_KEY>",
        "AZURE_OPENAI_API_KEY": "<YOUR_AZURE_OPENAI_API_KEY>",
        "AZURE_STORAGE_CONNECTION_STRING": "<YOUR_AZURE_STORAGE_CONNECTION_STRING>",
        "OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>"
      }
    }
  }
}
```

## Environment variables

| Name | Required | Secret | Description |
|---|---|---|---|
| `ITGLUE_API_KEY` | yes | yes | IT Glue API key (Account → Settings → API Keys) |
| `AZURE_OPENAI_API_KEY` | no | yes | Azure OpenAI API key — enables vector search via Azure (requires AZURE_OPENAI_ENDPOINT) |
| `AZURE_STORAGE_CONNECTION_STRING` | no | yes | azure-blob staging: storage account connection string (account-key SAS) |
| `OPENAI_API_KEY` | no | yes | OpenAI API key — enables semantic vector search tools |
| `AZURE_OPENAI_ENDPOINT` | no | no | Azure OpenAI endpoint URL |
| `AZURE_STORAGE_ACCOUNT` | no | no | azure-blob staging via DefaultAzureCredential (managed identity) — alternative to the connection string |
| `AZURE_STORAGE_CONTAINER` | no | no | Blob container for staged uploads |
| `EMBEDDING_MODEL` | no | no | Embedding model or Azure deployment name |
| `ITGLUE_ADVANCED_TOOLSET` | no | no | true/1 registers the advanced toolset (itglue_get, itglue_find_endpoint) — an opt-in read-only escape hatch; password resources stay blocked |
| `ITGLUE_BASE_URL` | no | no | Full API base URL (overrides ITGLUE_REGION) |
| `ITGLUE_REGION` | no | no | IT Glue region: us, eu, or au |
| `MCP_TOKENS_ADMIN` | no | no |  |
| `MCP_TOKENS_EDITOR` | no | no |  |
| `MCP_TOKENS_VIEWER` | no | no |  |
| `PUBLIC_BASE_URL` | no | no | Externally reachable base URL of this server, used for memory-mode upload URLs |
| `UPLOAD_STAGING` | no | no | Staged file uploads for upload_id: off, memory (PUT to this server's /upload/:id), or azure-blob (SAS upload to Azure Blob Storage). Default: memory on http, off on stdio |
| `VECTOR_INDEX_PATH` | no | no | Path of the persisted vector index file |

## Tools (11)

- `itglue_list_document_folders`
- `itglue_get_document_image`
- `itglue_list_attachments`
- `itglue_create_document_image`
- `itglue_create_attachment`
- `itglue_build_vector_index`
- `itglue_delete_documents`
- `itglue_delete_flexible_asset`
- `itglue_delete_attachment`
- `azure-blob`
- `off`

## FAQ

### How can I use semantic search with IT Glue?

You can use semantic vector search by configuring an embedding provider like OpenAI or Azure OpenAI and running the build vector index tool.

### Can I use my own IT Glue API key?

Yes, clients can provide their own IT Glue API key per session using the Bring Your Own Key (BYOK) feature.

### How does the server handle access control?

The server uses role-based access control (RBAC) with viewer, editor, and admin tokens to determine which tools are visible and accessible to a session.

### How do I upload images into a document?

You can upload images using the create document image tool from a base64 string, a URL, or a local path, and then embed them using the returned HTML tag.
