mcp-itglue
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port when using the HTTP transport. | 3000 |
| TRANSPORT | No | Transport to use: stdio or http. | stdio |
| ITGLUE_REGION | No | IT Glue region: us, eu, or au. | us |
| ITGLUE_API_KEY | Yes | Server-wide IT Glue API key. | |
| OPENAI_API_KEY | No | Enables vector search using OpenAI embeddings. | |
| UPLOAD_STAGING | No | Upload staging backend: memory, azure-blob, or off. Defaults to memory on HTTP and off on stdio. | |
| ALLOWED_ORIGINS | No | Extra browser origins allowed on /mcp, comma-separated. | |
| EMBEDDING_MODEL | No | Embedding model name, or Azure deployment name when using Azure OpenAI. | text-embedding-3-small |
| ITGLUE_BASE_URL | No | Override the IT Glue API base URL. | |
| PUBLIC_BASE_URL | No | Public base URL used to construct staged upload URLs for the memory backend. | |
| MCP_TOKENS_ADMIN | No | Comma-separated label:token list for admin-role bearer tokens. | |
| MCP_TOKENS_EDITOR | No | Comma-separated label:token list for editor-role bearer tokens. | |
| MCP_TOKENS_VIEWER | No | Comma-separated label:token list for viewer-role bearer tokens. | |
| VECTOR_INDEX_PATH | No | Path to the vector index file. | ./vector-index.json |
| CLIENT_ITGLUE_KEYS | No | BYOK policy: disabled, with-token, or open. | with-token |
| AZURE_OPENAI_API_KEY | No | Enables vector search using Azure OpenAI embeddings. | |
| AZURE_OPENAI_ENDPOINT | No | Azure OpenAI endpoint used with Azure OpenAI vector search. | |
| AZURE_STORAGE_ACCOUNT | No | Azure Storage account for managed identity or DefaultAzureCredential with azure-blob upload staging. | |
| ITGLUE_WEBHOOK_SECRET | No | Webhook signature secret and /index/refresh secret. | |
| AZURE_STORAGE_CONTAINER | No | Azure Blob Storage container used for azure-blob upload staging. | mcp-itglue-uploads |
| ITGLUE_ADVANCED_TOOLSET | No | Set to true or 1 to register the advanced toolset (itglue_get, itglue_find_endpoint). | false |
| AZURE_OPENAI_API_VERSION | No | Azure OpenAI API version used with Azure OpenAI vector search. | |
| AZURE_STORAGE_CONNECTION_STRING | No | Azure Blob Storage connection string for azure-blob upload staging. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
IT Glue MCP server
Finding things
Filters use EXACT matching except name filters (partial). When unsure of a name, list without filters and scan.
Typical flow: itglue_list_organizations → itglue_list_documents → itglue_get_document (→ itglue_get_document_section for long docs).
Prefer itglue_vector_search (if available) for "how do I…" questions — it matches meaning, not words.
If itglue_find_endpoint / itglue_get are available, use them for API surface the curated tools don't cover — prefer the curated tool when one exists.
Writing documents
itglue_create_document creates a DRAFT (invisible until published).
Add content with itglue_create_document_section (Text/Heading/Gallery/Step; content is HTML).
itglue_publish_document makes it visible.
itglue_update_document only renames; content changes go through sections.
Flexible assets
Get the type's field list with itglue_get_flexible_asset_type before creating/updating.
Updates REPLACE the whole traits object — send all traits back.
Images & attachments
A picture INSIDE a document: itglue_create_document_image (inline → embed the returned inline_resource_url as , or pass append_to_section_id; gallery → gallery_id). Attachments never render in the body.
A file in a record's Attachments panel: itglue_create_attachment.
Getting the bytes in: for a file on the client's machine call itglue_request_upload, have the client PUT the file to the returned URL (curl), then pass upload_id. Use url for web-hosted files. Never type base64 by hand — content_base64 is for tiny files you already hold verbatim.
Notes
Delete operations are permanent.
Some tools may be unavailable depending on this session's access level.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| itglue_list_organizationsA | Search and list IT Glue organizations. Use this first to find the organization ID required by document and flexible-asset tools. filter_name matches partially and case-insensitively; filter_id is exact. Results are paginated. List items carry summary fields; use itglue_get_organization for the full record. |
| itglue_get_organizationB | Get a single IT Glue organization by ID. |
| itglue_list_documentsA | List documents in an organization, including documents nested in folders. Returns summary metadata only — use itglue_get_document for content and the full record. filter_name matches partially and case-insensitively. The endpoint returns root-level documents by default, so this tool issues a second query for folder-nested documents and merges the results (up to 2x page_size items). |
| itglue_list_document_foldersA | List the document folders (directories) in an organization, including nested folders. Returns summary metadata only (name, parent folder, document count). Use this to discover a document_folder_id for itglue_create_document, or to browse an organization's document tree. filter_name matches partially and case-insensitively; parent_id is the number in a folder's URL. A folder with parent_id null is top-level. |
| itglue_get_documentA | Get a document by ID with all of its sections and their content. Section content is stored as HTML; markdown output converts it to plain text, with inline images shown as their relative /org/docs/doc/images/ID paths and gallery images listed by ID. If the response is truncated, fetch individual sections with itglue_get_document_section. |
| itglue_create_documentA | Create a new document as a DRAFT in an organization. Add content with itglue_create_document_section, then make it visible with itglue_publish_document. |
| itglue_update_documentA | Rename a document (metadata only). To change content, use itglue_update_document_section. |
| itglue_publish_documentA | Publish a draft document, making it visible to users with access. |
| itglue_delete_documentsA | PERMANENTLY delete one or more documents, including all their sections. This cannot be undone. |
| itglue_list_document_sectionsA | List the sections of a document in position order, with content previews and section IDs (needed for update/delete operations). List items carry summary fields and a bounded content_preview; Gallery/Step items also carry document_gallery_id (the gallery_id for itglue_create_document_image) and their images. Use itglue_get_document_section for full content. |
| itglue_get_document_sectionA | Get one document section with its full content (HTML on the wire; markdown output converts to plain text). Inline images appear as relative paths — keep them verbatim when editing; the JSON record also has rendered_content with temporary S3 URLs for display. |
| itglue_create_document_sectionA | Add a section to a document. Types: Text (HTML content), Heading (content = heading text, level 1-6 required), Gallery (no content — add pictures afterwards with itglue_create_document_image using the new section's document_gallery_id), Step (HTML content, optional duration in minutes). IMAGES: to show a picture in Text/Step HTML, first upload it with itglue_create_document_image and use the returned inline_resource_url verbatim as . Public https:// image links also work; base64/data: URIs and S3 URLs are stripped by IT Glue. Attachments never render in the body. |
| itglue_update_document_sectionA | Update a section's content, heading level, duration, or position. Only provided fields change; the section type cannot be changed. content REPLACES the whole HTML — fetch the current content first and keep existing tags verbatim, or they are lost. To add a new picture, upload it with itglue_create_document_image (or its append_to_section_id shortcut) and embed the returned inline_resource_url; base64/data: URIs and S3 URLs are stripped by IT Glue. |
| itglue_delete_document_sectionA | PERMANENTLY delete one section from a document. This cannot be undone. Useful for restructuring a document's layout. |
| itglue_create_document_imageA | Upload a picture INTO a document — the only way to get an image to render in a document's body (itglue_create_attachment only files it in the Attachments panel). Two placements: (1) INLINE — omit gallery_id; the result carries inline_resource_url, a relative path you must use verbatim as in Text/Step section HTML via itglue_create_document_section or itglue_update_document_section, or pass append_to_section_id to have this tool append the to an existing Text/Step section for you. (2) GALLERY — pass gallery_id (the document_gallery_id shown on a Gallery or Step section) to file the image into that gallery. Never put base64/data: URIs or S3 URLs in section content; IT Glue strips them. Provide exactly one source: upload_id (a file the client PUT via itglue_request_upload — the right choice for anything on the client's disk), url (the server fetches it), file_path (local stdio runs only), or content_base64 (tiny files only). content_base64 must be the exact bytes of a real image file — never write or reconstruct base64 yourself (IT Glue rejects anything ImageMagick cannot decode). file_name needs an extension (e.g. screenshot.png); inferred from url/file_path when omitted. Max 25 MB. |
| itglue_get_document_imageA | Get one document image by ID: file name, size, owning document/gallery, the inline_resource_url to embed it with, and a presigned download URL (valid ~1 hour). Image IDs appear in section HTML as the last path segment of and in Gallery/Step section image lists. |
| itglue_delete_document_imageA | PERMANENTLY delete a document image (all size variants). This cannot be undone. Any tag still referencing it stays in the section HTML until that section is next saved, when IT Glue drops the broken reference — remove the tag yourself with itglue_update_document_section for an immediate clean result. |
| itglue_create_attachmentA | Attach a file (PDF, image, config export, …) to a record (document, flexible asset, configuration, etc.). The file appears in the record's Attachments side panel — it is NOT shown inside a document's body. To place a picture inside a document (inline in a Text/Step section or in a Gallery), use itglue_create_document_image instead. Provide exactly one source: content_base64 (small files only), url (the server fetches it), file_path (local stdio runs only), or upload_id (a file the client PUT via itglue_request_upload — use this for anything on the client's disk). Give file_name with an extension (e.g. network-diagram.pdf) so IT Glue detects the type; it is inferred from url/file_path/upload when omitted. Max 25 MB. |
| itglue_list_attachmentsA | List the attachments on a record (document, flexible asset, configuration, etc.), with attachment IDs (needed for delete), file names, content types, and download URLs. |
| itglue_delete_attachmentA | PERMANENTLY delete an attachment from a record. This cannot be undone. Find the attachment ID with itglue_list_attachments. |
| itglue_list_flexible_asset_typesA | List flexible asset types (the schemas MSPs define in IT Glue, e.g. 'Wireless', 'Applications'). Use this to find the type ID required by itglue_list_flexible_assets. filter_name matches partially and case-insensitively. List items carry summary fields; use itglue_get_flexible_asset_type for field definitions. |
| itglue_get_flexible_asset_typeA | Get a flexible asset type by ID, including its field definitions (name, kind, required) — the trait keys needed to create or update assets of this type. |
| itglue_list_flexible_assetsA | List flexible assets of a given type, optionally restricted to one organization. The type ID is required by the IT Glue API — find it with itglue_list_flexible_asset_types. List items show bounded trait previews (HTML stripped, long values truncated); use itglue_get_flexible_asset for full trait values. |
| itglue_get_flexible_assetA | Get one flexible asset by ID, including all of its traits. |
| itglue_create_flexible_assetA | Create a flexible asset. Traits are the type's fields keyed by their lowercased, hyphenated names (inspect them with itglue_get_flexible_asset_type). All required traits must be provided. |
| itglue_update_flexible_assetA | Update a flexible asset's traits. IMPORTANT: IT Glue replaces the traits object wholesale — fetch the asset first and send back ALL traits, not just the changed ones, or omitted traits are cleared. |
| itglue_delete_flexible_assetA | PERMANENTLY delete a flexible asset. This cannot be undone. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
Each tool generally maps to a distinct resource and action, and the descriptions explicitly separate close pairs such as document metadata versus document sections, and document images versus attachments. The only mild ambiguity is that several document sub-resource tools look similar at a glance, but the descriptions resolve this well.
All tools follow a predictable itglue_verb_noun snake_case pattern, such as itglue_get_document, itglue_create_document_section, and itglue_delete_attachment. The plural itglue_delete_documents is a minor but understandable batch-operation variant.
The 27 tools cover several resource families with mostly necessary CRUD operations, so they largely earn their place. However, the count is heavy and exceeds the comfortable range, making the surface feel broad and somewhat burdensome for an agent to navigate.
Core document, section, image, attachment, and flexible asset workflows have good CRUD coverage. Notable gaps remain: document folders can be listed but not created/updated/deleted, organization tools are read-only, and itglue_request_upload is referenced repeatedly for client-disk uploads but is absent from the tool list.