Skip to main content
Glama

sprout-mcp

An MCP (Model Context Protocol) server that wraps the Sprout Social Public API, letting Claude and other MCP clients interact with your Sprout Social account directly.

Tools

Metadata

Tool

Description

list_customers

List all customers/accounts accessible with your API token

list_profiles

List all social profiles for a customer

list_tags

List all message tags

list_groups

List all profile groups

list_users

List all active users

list_teams

List all teams

Analytics

Tool

Description

get_profile_analytics

Get aggregated metrics by profile (impressions, engagements, follower growth, etc.)

get_post_analytics

Get metrics for individual published posts — also use this for post counts

Listening

Tool

Description

list_listening_topics

List all Listening topics and their IDs

get_listening_messages

Fetch messages from a Listening topic, filterable by network (Reddit, Twitter, etc.)

Smart Inbox

Tool

Description

get_messages

Retrieve inbound inbox messages (mentions, DMs, comments)

Publishing

Tool

Description

list_publishing_posts

List published, scheduled, or draft posts

create_post

Create a draft or scheduled post

get_publishing_post

Retrieve a specific post by ID

Note: All tools return structured JSON error details on failure (HTTP status, endpoint, and API error body) instead of raw exceptions.

Related MCP server: so-easy-mcp

Setup

Prerequisites

  • Python 3.11+

  • uv (recommended) or pip

  • A Sprout Social account with API access

Install

git clone https://github.com/jmeserve/sprout-mcp.git
cd sprout-mcp
uv sync

Configure

Copy .env.example to .env and fill in your credentials:

cp .env.example .env
SPROUT_API_TOKEN=your_api_token_here
SPROUT_CUSTOMER_ID=your_customer_id_here
  • SPROUT_API_TOKEN — Generate at Sprout Social → Settings → API → OAuth tokens

  • SPROUT_CUSTOMER_ID — Found in your Sprout Social account URL or via the list_customers tool

Add to Claude Code

Add to your ~/.claude.json MCP servers config:

{
  "mcpServers": {
    "sprout-social": {
      "command": "uv",
      "args": ["--directory", "/path/to/sprout-mcp", "run", "sprout-mcp"],
      "env": {
        "SPROUT_API_TOKEN": "your_api_token_here",
        "SPROUT_CUSTOMER_ID": "your_customer_id_here"
      }
    }
  }
}

Add to Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "sprout-social": {
      "command": "uv",
      "args": ["--directory", "/path/to/sprout-mcp", "run", "sprout-mcp"],
      "env": {
        "SPROUT_API_TOKEN": "your_api_token_here",
        "SPROUT_CUSTOMER_ID": "your_customer_id_here"
      }
    }
  }
}

Development

uv sync
uv run sprout-mcp       # run the server
uv run mcp dev sprout_mcp/server.py  # run with MCP inspector

Available Tools

11 tools
create_postB

Create a draft or scheduled post in Sprout Social.

Args:
    profile_ids: Comma-separated Sprout profile IDs to publish to.
    text: Post content/body text.
    scheduled_send_time: When to publish (ISO 8601). Leave empty to save as draft.
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: profile_ids (required), text (required), scheduled_send_time, customer_id. Returns: result

get_messagesA

Retrieve inbound inbox messages (Smart Inbox) with optional filtering.

This endpoint returns INBOUND messages only (mentions, DMs, comments).
For OUTBOUND post counts and performance metrics, use get_post_analytics instead.

Args:
    profile_ids: Comma-separated Sprout profile IDs.
    start_time: Start datetime (ISO 8601, e.g. '2024-01-01T00:00:00').
    end_time: End datetime (ISO 8601).
    tag_ids: Comma-separated tag IDs to filter by (optional).
    limit: Number of messages to return (default 50).
    page_cursor: Pagination cursor from a previous response (optional).
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: profile_ids (required), start_time (required), end_time (required), tag_ids, +3 more. Returns: result

get_post_analyticsA

Get analytics metrics for individual published posts.

Post-level metrics use the 'lifetime.' prefix (e.g. 'lifetime.impressions').
Common metrics: lifetime.impressions, lifetime.reactions, lifetime.engagements,
                lifetime.clicks, lifetime.shares, lifetime.comments, lifetime.video_views.

Args:
    profile_ids: Comma-separated Sprout profile IDs.
    start_time: Start of period (ISO 8601, e.g. '2024-01-01T00:00:00').
    end_time: End of period (ISO 8601, e.g. '2024-01-31T23:59:59').
    metrics: Comma-separated metric names with lifetime. prefix.
    limit: Number of posts to return (default 50, max 100).
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: profile_ids (required), start_time (required), end_time (required), metrics, +2 more. Returns: result

get_profile_analyticsA

Get analytics metrics aggregated by social profile.

Args:
    profile_ids: Comma-separated Sprout profile IDs.
    start_time: Start of period (ISO 8601, e.g. '2024-01-01T00:00:00').
    end_time: End of period (ISO 8601, e.g. '2024-01-31T23:59:59').
    metrics: Comma-separated metric names. Common options:
             impressions, engagements, net_follower_growth, engagement_rate,
             video_views, reactions, comments, shares, clicks.
    timezone: Timezone for the report (e.g. 'America/Chicago'). Default: UTC.
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: profile_ids (required), start_time (required), end_time (required), metrics, +2 more. Returns: result

get_publishing_postB

Retrieve a specific publishing post by ID.

Args:
    post_id: The publishing post ID to retrieve.
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: post_id (required), customer_id. Returns: result

list_customersA

List all customers/accounts accessible with the current API token.

Returns customer IDs and names needed for other API calls.

Inputs: no named parameters. Returns: result

list_groupsB

List all profile groups for a customer.

Args:
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: customer_id. Returns: result

list_profilesB

List all social profiles for a customer.

Args:
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: customer_id. Returns: result

list_tagsB

List all message tags for a customer.

Args:
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: customer_id. Returns: result

list_teamsB

List all teams for a customer.

Args:
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: customer_id. Returns: result

list_usersB

List all active users for a customer.

Args:
    customer_id: Sprout customer ID. Defaults to SPROUT_CUSTOMER_ID env var.

Inputs: customer_id. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 11 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose with no ambiguity. The tools cover separate domains like publishing (create_post, get_publishing_post), analytics (get_post_analytics, get_profile_analytics), inbox management (get_messages), and listing resources (list_* functions). Descriptions explicitly differentiate similar tools, such as get_messages for inbound messages versus get_post_analytics for outbound metrics.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with snake_case throughout. The naming is highly predictable: 'create_post', 'get_messages', 'list_profiles', etc. There are no deviations in style or convention, making the set easy to navigate and understand at a glance.

    Tool Count5/5

    With 11 tools, the count is well-scoped for a social media management server. Each tool earns its place by covering essential operations like publishing, analytics, and resource listing. This number is typical for such a domain (3-15 tools), providing comprehensive functionality without being overwhelming.

    Completeness4/5

    The tool surface is nearly complete for social media management, covering key areas like post creation, retrieval, analytics, and resource listing. Minor gaps exist, such as no update_post or delete_post tools for post lifecycle management, but agents can likely work around this by creating new posts or using existing tools for basic operations.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      A full social media management MCP server enabling post, read, schedule, and analyze across Facebook, Instagram, LinkedIn, X/Twitter, Pinterest, and YouTube from any MCP-compatible AI client.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server to manage social media accounts from AI assistants, enabling post creation, scheduling, publishing, and media uploads across multiple platforms.
      13
      11 npm
      1
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      Read-only MCP server for the Sprout Social public API, exposing profile and post analytics as tools with raw JSON passthrough.
      5
      -