Instagram MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Logging level | INFO |
| CLOUDINARY_API_KEY | No | Cloudinary API key (required for publish_image / carousels) | |
| CLOUDINARY_API_SECRET | No | Cloudinary API secret (required for publish_image / carousels) | |
| CLOUDINARY_CLOUD_NAME | No | Cloudinary cloud name (required for publish_image / carousels) | |
| INSTAGRAM_API_VERSION | No | Instagram Graph API version | v23.0 |
| INSTAGRAM_ACCESS_TOKEN | No | Instagram Graph API access token (required for posting) | |
| DELETE_LOCAL_AFTER_PUBLISH | No | Whether to delete local images after publishing | false |
| INSTAGRAM_BUSINESS_ACCOUNT_ID | No | Instagram Business Account ID (required for posting) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_contentA | List available local images in the content directory. |
| get_contentA | Safely locate a local content file and return basic metadata. |
| manage_contentB | Manage Instagram content stored in the content folder. Actions:
|
| manage_metadataC | Manage metadata for Instagram content (captions, hashtags, scheduling). Actions:
|
| test_instagram_connectionA | Test the Instagram Graph API connection and report the exact status. Use this first whenever posting fails, to determine whether the problem is:
|
| debug_instagram_tokenA | Inspect the configured Instagram access token via Meta's debug_token endpoint. Reports the token's type, expiry date, and granted scopes. Use this to determine whether the token is expired, about to expire, or lacks the required permissions (instagram_basic, instagram_content_publish). |
| post_to_instagramC | Post content to Instagram using Instagram Graph API. Prerequisites:
|
| test_cloudinary_uploadA | Upload a local image to Cloudinary without posting to Instagram. |
| cleanup_cloudinary_assetB | Delete a temporary Cloudinary asset manually. |
| publish_imageC | Publish a local image to Instagram using a Cloudinary-hosted HTTPS image URL. |
| convert_pdf_to_imagesA | Convert a PDF file to individual PNG images. Each page becomes a separate image. Images are stored in the content folder with the PDF name as prefix. Example: document.pdf -> document_page_001.png, document_page_002.png, etc. |
| create_carousel_batchA | Create carousel batches from selected images or PDF pages. Parameters:
Example: 10 images with images_per_post=5 creates 2 carousel batches |
| post_carousel_to_instagramA | Post a carousel batch to Instagram. Uploads all images in the batch to Cloudinary, creates a CAROUSEL media container via the Instagram Graph API, publishes it, then deletes the local images and Cloudinary temporary assets. Requires 2-10 images per carousel (Instagram limit). |
| list_carousel_batchesA | List all carousel batches and their status. Shows each batch ID, posted status, image count, and batch progression. |
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 14 tools
Several tools overlap in function: list_content and manage_content's list action both list content, and post_to_instagram and publish_image both post to Instagram via different paths. Descriptions help but the boundaries could still confuse an agent.
All tool names consistently use snake_case with a verb_noun or verb_to_noun pattern, creating a predictable and clear naming convention.
14 tools is well within the ideal 3-15 range for an Instagram content server, covering posting, content management, metadata, diagnostics, and carousel workflows without feeling bloated.
Core posting and content management workflows are covered, but there are notable gaps: no post deletion or status retrieval, and scheduling is mentioned in manage_metadata but not actually implemented as a tool.