# IT Glue MCP Server
A Model Context Protocol (MCP) server for IT Glue API integration. Enables LLMs to interact with IT Glue documentation including organizations, configurations, passwords, contacts, flexible assets, and more.
## Features
- **Organizations**: List, get, create, update organizations
- **Configurations**: Manage IT assets (servers, workstations, network devices)
- **Passwords**: Credential management (with optional password access)
- **Contacts**: Manage people associated with organizations
- **Flexible Assets**: Custom documentation types with dynamic fields
- **Locations**: Physical addresses for organizations
- **Domains**: Domain registration tracking
- **Expirations**: Track warranties, certificates, and renewals
## Installation
```bash
npm install
npm run build
```
## Configuration
### Environment Variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `ITGLUE_API_KEY` | Yes | - | Your IT Glue API key |
| `ITGLUE_REGION` | No | `us` | API region: `us`, `eu`, or `au` |
### Getting an API Key
1. Log into IT Glue as an Administrator
2. Go to **Account > Settings > API Keys**
3. Click **+ Custom API Key**
4. Give it a name and optionally enable **Password Access**
5. Copy the generated key
**Note**: API keys expire after 90 days of inactivity.
### Password Access
The IT Glue API has a separate permission for password access. If your API key doesn't have this permission:
- You can still list and search passwords
- You can create and update passwords
- You **cannot** retrieve actual password values
Use the `itglue_check_password_access` tool to verify your access level.
## Usage with Claude Desktop
Add to your Claude Desktop configuration (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"itglue": {
"command": "node",
"args": ["C:/Users/Dan/GitHub/itglue-mcp-server/dist/index.js"],
"env": {
"ITGLUE_API_KEY": "ITG.your-api-key-here"
}
}
}
}
```
## Available Tools
### Organizations
- `itglue_list_organizations` - List organizations with filtering
- `itglue_get_organization` - Get organization by ID
- `itglue_create_organization` - Create new organization
- `itglue_update_organization` - Update existing organization
### Configurations
- `itglue_list_configurations` - List configurations (devices/assets)
- `itglue_get_configuration` - Get configuration by ID
- `itglue_create_configuration` - Create new configuration
- `itglue_update_configuration` - Update existing configuration
### Passwords
- `itglue_list_passwords` - List passwords
- `itglue_get_password` - Get password by ID (includes value if permitted)
- `itglue_create_password` - Create new password entry
- `itglue_update_password` - Update existing password
- `itglue_check_password_access` - Check if API key has password access
### Contacts
- `itglue_list_contacts` - List contacts
- `itglue_get_contact` - Get contact by ID
- `itglue_create_contact` - Create new contact
- `itglue_update_contact` - Update existing contact
### Flexible Assets
- `itglue_list_flexible_assets` - List flexible assets
- `itglue_get_flexible_asset` - Get flexible asset by ID
- `itglue_create_flexible_asset` - Create new flexible asset
- `itglue_update_flexible_asset` - Update existing flexible asset
- `itglue_list_flexible_asset_types` - List all flexible asset types
- `itglue_get_flexible_asset_type` - Get flexible asset type with fields
- `itglue_list_flexible_asset_fields` - List fields for a type
### Locations
- `itglue_list_locations` - List locations
- `itglue_get_location` - Get location by ID
- `itglue_create_location` - Create new location
- `itglue_update_location` - Update existing location
### Domains
- `itglue_list_domains` - List domains
- `itglue_get_domain` - Get domain by ID
### Expirations
- `itglue_list_expirations` - List upcoming expirations
## Response Formats
All tools support two response formats via the `response_format` parameter:
- `markdown` (default) - Human-readable formatted output
- `json` - Structured JSON for programmatic use
## Pagination
List endpoints support pagination:
- `page` - Page number (1-indexed)
- `page_size` - Items per page (max 1000, default 50)
Response includes pagination metadata:
- `total_count` - Total items available
- `has_more` - Whether more pages exist
- `next_page` - Next page number (if available)
## Rate Limits
IT Glue allows 3000 requests per 5-minute window. The server will return a clear error message if you hit the rate limit.
## API Regions
IT Glue has separate API endpoints by region:
| Region | Base URL |
|--------|----------|
| US (default) | `https://api.itglue.com` |
| EU | `https://api.eu.itglue.com` |
| Australia | `https://api.au.itglue.com` |
Set the `ITGLUE_REGION` environment variable to match your account's region.
## Development
```bash
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development mode with auto-reload
npm run dev
# Clean build artifacts
npm run clean
```
## License
MIT