Skip to main content
Glama

Social MCP

A Model Context Protocol (MCP) server for social media integration, specifically Instagram transcript extraction using AssemblyAI.

Prerequisites

Install uv

On Mac:

brew install uv

On Windows:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

After installation on Windows, add uv to your PATH:

set Path=C:\Users\nntra\.local\bin;%Path%

Environment Setup

  1. Create a .env file in the project root with your AssemblyAI API key:

# Get your API key from: https://www.assemblyai.com/
ASSEMBLYAI_API_KEY=your_assemblyai_api_key_here
  1. Get your AssemblyAI API key:

    • Sign up at AssemblyAI

    • Go to your dashboard and copy your API key

    • Add it to the .env file

Related MCP server: YouTube MCP Server

Claude Desktop Integration

To use this MCP server with Claude Desktop, you need to add it to your Claude Desktop configuration.

  1. Open your Claude Desktop configuration file:

    • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. Add the following configuration to your mcpServers section (replace /path/to/your/social-mcp with the actual path to this project folder):

{
  "mcpServers": {
    "social": {
      "command": "/Users/your-username/.local/bin/uv",
      "args": ["--directory", "/path/to/your/social-mcp", "run", "main.py"]
    }
  },
  "globalShortcut": ""
}

Important: Make sure to replace:

  • /path/to/your/social-mcp with the actual path to where you cloned/downloaded this project

  • /Users/your-username/.local/bin/uv with the correct path to your uv installation (on Windows this would typically be C:\Users\your-username\.local\bin\uv.exe)

  1. Save the file and restart Claude Desktop

Usage

Once configured, the Social MCP server will be available in Claude Desktop. You can use it to:

  • Extract transcripts from Instagram videos/reels by providing Instagram URLs

  • Get timestamped transcriptions with speaker labels

  • Process various Instagram URL formats (posts, reels, IGTV)

Example

Extract transcript from: https://instagram.com/reel/ABC123/

The server will:

  1. Extract the video URL from the Instagram post

  2. Use AssemblyAI to transcribe the audio

  3. Return a formatted transcript with timestamps and speaker labels

Development

This project uses uv for dependency management. The dependencies are defined in pyproject.toml and the lockfile is uv.lock.

To run the server locally:

uv run main.py

Features

  • ✅ Instagram URL validation and processing

  • ✅ Direct video URL extraction using instaloader

  • ✅ AssemblyAI transcription with speaker labels

  • ✅ Timestamp formatting

  • ✅ Environment variable configuration

  • ✅ Comprehensive error handling

Available Tools

1 tool
get_instagram_transcriptA

Extract transcript from Instagram video/reel using AssemblyAI.

Args:
    url: Instagram post or reel URL (e.g., https://instagram.com/p/ABC123/ or https://instagram.com/reel/XYZ789/)
    assemblyai_api_key: AssemblyAI API key (optional if ASSEMBLYAI_API_KEY environment variable is set)

Returns:
    The transcript text with timestamps and speaker labels
ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
assemblyai_api_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the return format (timestamps and speaker labels) and the API key fallback to environment variable, but does not mention potential side effects, error conditions, or network/processing behavior. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, well-structured with Args and Returns sections, and front-loaded with the main purpose. Every sentence provides useful information without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with an output schema (even if not shown), the description covers the essential usage details and return format. It lacks some edge-case handling (e.g., invalid URLs, missing API key errors), but the core operational context is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description fully compensates by explaining both parameters: the 'url' parameter with concrete examples and the 'assemblyai_api_key' parameter with its optionality and environment variable fallback. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Extract transcript from Instagram video/reel using AssemblyAI.' It identifies a specific verb ('Extract') and resource (Instagram video/reel), and distinguishes the tool's purpose even without siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on how to use the tool, including URL formats and the optional API key behavior. It doesn't explicitly mention when not to use it or compare with alternatives, but since there are no sibling tools, the usage context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observedget_instagram_transcript

TDQS

A4/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusing it with others. The tool's purpose is clearly stated and unambiguous.

Naming Consistency5/5

The single tool name 'get_instagram_transcript' follows a clear verb_noun pattern, making it descriptive and predictable. Though there are no other tools to compare, the naming is well-formed and consistent with common conventions.

Tool Count2/5

The server name 'Social MCP' implies a broad social media toolkit, yet it contains only one tool for Instagram transcripts. This is far too few for the apparent scope, making the tool count feel inadequate and mismatched.

Completeness1/5

For a social media server, having only Instagram transcript extraction leaves enormous gaps. There is no support for other platforms, and even for Instagram, there are no other operations beyond transcripts. The surface is severely incomplete for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers