Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GEMINI_API_KEYNoOptional API key for Gemini AI analysis of reels.

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

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_user_profileA

Get an Instagram user's profile.

Args: username: Instagram username (e.g., "instagram", "natgeo") ctx: FastMCP context for progress reporting sections: Comma-separated list of extra sections to scrape. The main profile page is always included. Available sections: posts, reels, tagged, followers, following Examples: "posts,reels", "tagged", "followers,following" Default (None) scrapes only the main profile page.

Returns: Dict with url, sections (name -> raw text), and optional references. Sections may be absent if extraction yielded no content for that page. Includes unknown_sections list when unrecognised names are passed. The LLM should parse the raw text in each section.

get_user_postsA

Get an Instagram user's posts with structured data.

Args: username: Instagram username (e.g., "instagram", "natgeo") ctx: FastMCP context for progress reporting max_posts: Maximum number of posts to retrieve (default 50)

Returns: Dict with url, posts list, total_posts count, sections, and references. Each post has: id, shortcode, url, thumbnail_url, media_type.

get_user_reelsA

Get an Instagram user's reels with structured data.

Returns reel IDs, URLs, thumbnails, and view counts from the grid page without navigating to individual reels (avoids N+1 rate limiting).

Args: username: Instagram username (e.g., "instagram", "natgeo") ctx: FastMCP context for progress reporting max_reels: Maximum number of reels to retrieve (default 50)

Returns: Dict with url, reels list, total_reels count, sections, and references. Each reel has: id, shortcode, url, thumbnail_url, view_count_text, media_type. Use get_post_details on individual reel URLs for full engagement data.

get_user_storiesA

Get an Instagram user's active stories.

Args: username: Instagram username (e.g., "instagram", "natgeo") ctx: FastMCP context for progress reporting

Returns: Dict with url and stories list, where each story has: media_url, timestamp, expires_at.

get_user_highlightsA

Get an Instagram user's story highlights.

Args: username: Instagram username (e.g., "instagram", "natgeo") ctx: FastMCP context for progress reporting

Returns: Dict with url and highlights list, where each highlight has: title, cover_url, highlight_id.

get_business_insightsA

Get Business/Creator account insights from Professional Dashboard.

Note: Professional Dashboard is only available for Business and Creator accounts.

Args: ctx: FastMCP context for progress reporting time_range: Time range for insights data (7d, 30d, 90d). Default: "7d"

Returns: Dict with url, sections (name -> raw text), and optional references. The LLM should parse the raw text in each section.

get_audience_insightsA

Get audience demographics from Professional Dashboard.

Note: Professional Dashboard is only available for Business and Creator accounts.

Args: ctx: FastMCP context for progress reporting

Returns: Dict with url, sections (name -> raw text), and optional references. The LLM should parse the raw text to extract audience demographics.

get_content_insightsA

Get content performance insights from Professional Dashboard.

Note: Professional Dashboard is only available for Business and Creator accounts.

Args: ctx: FastMCP context for progress reporting time_range: Time range for insights data (7d, 30d, 90d). Default: "30d"

Returns: Dict with url, sections (name -> raw text), and optional references. The LLM should parse the raw text to extract content performance data.

get_activity_insightsB

Get profile activity insights from Professional Dashboard.

Note: Professional Dashboard is only available for Business and Creator accounts.

Args: ctx: FastMCP context for progress reporting time_range: Time range for insights data (7d, 30d, 90d). Default: "7d"

Returns: Dict with url, sections (name -> raw text), and optional references. The LLM should parse the raw text to extract profile activity data.

get_post_detailsA

Get detailed post/reel information with structured data.

Returns structured data including:

  • id, shortcode, url

  • caption, timestamp

  • media_type (reel, video, image, carousel)

  • video_url, thumbnail_url

  • engagement (likes, views, comments, shares)

  • audio info (for reels)

Args: post_url: Full Instagram post URL ctx: FastMCP context for progress reporting include_comments: Whether to include comments in the response

Returns: Dict with structured post data: { url, id, shortcode, media_type, caption, timestamp, video_url, thumbnail_url, engagement: {likes, views, comments, shares}, audio: {audio_name, audio_artist}, sections: {main: text} (legacy format) }

get_location_postsA

Get posts tagged at a location.

Extracts post links from the location grid page and returns them as structured references. Use get_post_details for individual post enrichment.

Args: location_id: Instagram location ID ctx: FastMCP context for progress reporting max_posts: Maximum number of posts to load (default 50)

Returns: Dict with url, sections (name -> raw text), references (post links), and total_posts count.

get_hashtag_postsA

Get posts for a hashtag.

Extracts post links from the hashtag grid page and returns them as structured references. Use get_post_details for individual post enrichment.

Args: hashtag: Hashtag to search (without the # symbol) ctx: FastMCP context for progress reporting max_posts: Maximum number of posts to load (default 50)

Returns: Dict with url, sections (name -> raw text), references (post links), and total_posts count.

get_direct_inboxA

List recent DM conversations from the Instagram direct inbox.

Args: ctx: FastMCP context for progress reporting limit: Maximum number of conversations to load (1-50, default 20)

Returns: Dict with url, sections (inbox -> raw text), and optional references.

get_dm_conversationA

Read a specific DM conversation.

Provide either username or thread_id to identify the conversation.

Args: ctx: FastMCP context for progress reporting thread_id: Instagram messaging thread ID username: Instagram username of the conversation participant limit: Maximum number of messages to load (1-100, default 50)

Returns: Dict with url, sections (conversation -> raw text), and optional references.

send_dmA

Send a direct message to an Instagram user.

This is a write operation — confirm_send must be True to actually send.

Args: username: Instagram username of the recipient message: The message text to send confirm_send: Must be True to send the message ctx: FastMCP context for progress reporting

Returns: Dict with url, status, sent (bool), and optional message.

search_usersA

Search for Instagram users.

Args: query: Search query (e.g., "john doe", "photographer") ctx: FastMCP context for progress reporting max_results: Maximum number of results to return (default 50)

Returns: Dict with url, sections (name -> raw text), and optional references. The LLM should parse the raw text to extract individual users and their profiles.

search_locationsA

Search for Instagram locations.

Args: query: Search query (e.g., "New York", "Paris cafe") ctx: FastMCP context for progress reporting max_results: Maximum number of results to return (default 50)

Returns: Dict with url, sections (name -> raw text), and optional references. The LLM should parse the raw text to extract individual locations and their details.

follow_userA

Follow a user or send a follow request for private accounts.

Navigates to the user's profile and clicks the Follow button. For private accounts, a follow request is sent.

Args: username: Instagram username to follow (e.g., "natgeo") ctx: FastMCP context for progress reporting

Returns: Dict with url, status, and optional message.

unfollow_userA

Unfollow a user.

Navigates to the user's profile and clicks the Unfollow button.

Args: username: Instagram username to unfollow (e.g., "natgeo") ctx: FastMCP context for progress reporting

Returns: Dict with url, status, and optional message.

like_postA

Like a post.

Navigates to the post and clicks the Like button.

Args: post_url: Instagram post URL (e.g., "https://www.instagram.com/p/ABC123/") ctx: FastMCP context for progress reporting

Returns: Dict with url, status, and optional message.

unlike_postA

Unlike a post.

Navigates to the post and clicks the Unlike button.

Args: post_url: Instagram post URL (e.g., "https://www.instagram.com/p/ABC123/") ctx: FastMCP context for progress reporting

Returns: Dict with url, status, and optional message.

save_postB

Save a post to a collection.

Navigates to the post and clicks the Save button. Optionally saves to a specific collection.

Args: post_url: Instagram post URL (e.g., "https://www.instagram.com/p/ABC123/") ctx: FastMCP context for progress reporting collection: Optional collection name to save the post into

Returns: Dict with url, status, and optional message.

comment_on_postA

Post a comment on a post.

Navigates to the post and submits the comment. confirm_post must be True for the comment to be posted.

Args: post_url: Instagram post URL (e.g., "https://www.instagram.com/p/ABC123/") comment: The comment text to post confirm_post: Must be True to actually post the comment ctx: FastMCP context for progress reporting

Returns: Dict with url, status, and optional message.

transcribe_user_reelsA

Download and transcribe Instagram reels to SRT subtitles.

Downloads reels, runs speech-to-text using Whisper via the caption command, and generates SRT subtitle files.

Args: username: Instagram username (e.g., "instagram", "natgeo") ctx: FastMCP context for progress reporting max_reels: Maximum reels to transcribe (default: 10) keep_videos: Keep downloaded video files (default: False)

Returns: Dict with: - url: Instagram profile URL - transcripts: List of {reel_id, video_url, srt_path, transcript_preview, reel_url} - total_reels: Number processed - temp_dir: Temporary files location - output_dir: SRT output directory

transcribe_reelA

Transcribe a single Instagram reel to SRT.

Args: reel_url: Full Instagram reel URL (e.g., https://www.instagram.com/reel/ABC123/) ctx: FastMCP context for progress reporting keep_video: Keep downloaded video file (default: False)

Returns: Dict with reel_id, srt_path, transcript_preview, etc.

analyze_reel_with_geminiA

Analyze Instagram reel using Google Gemini 2.0 Flash.

Fast multimodal analysis that understands both audio and visuals. Returns structured insights without local transcription.

Speed: ~15-25 seconds per reel (3x faster than local Whisper)

Cost: ~$0.00017 per reel (extremely cheap)

Args: reel_url: Full Instagram reel URL (e.g., https://www.instagram.com/reel/ABC123/) ctx: FastMCP context for progress reporting analysis_type: Type of analysis: - summary: Quick overview (fastest) - transcript: Full transcription - topics: Extract topics and keywords - quotes: Notable quotes with timestamps - full: Comprehensive analysis (default)

Returns: Dict with analysis results in JSON format. Structure depends on analysis_type.

bulk_analyze_reels_with_geminiA

Analyze multiple reels from a user with Gemini.

Faster than local transcription for bulk analysis. Processes reels sequentially to avoid rate limits.

Args: username: Instagram username (e.g., "instagram", "natgeo") ctx: FastMCP context for progress reporting max_reels: Maximum reels to analyze (default: 5) analysis_type: Analysis type (default: summary for speed)

Returns: Dict with analyses for each reel.

close_sessionA

Close the current Instagram browser session and clean up resources.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ishan-parihar/instagram-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server