Skip to main content
Glama
LokiMCPUniverse

Hootsuite MCP Server

Hootsuite MCP Server

Hootsuite Mcp Server

GitHub stars GitHub forks GitHub watchers

License Issues Pull Requests Last Commit

Python MCP

Commit Activity Code Size Contributors

A Model Context Protocol (MCP) server for integrating Hootsuite with GenAI applications.

Overview

Social media management platform

Related MCP server: @posteverywhere/mcp

Features

  • Comprehensive Hootsuite API coverage

  • Multiple authentication methods

  • Enterprise-ready with rate limiting

  • Full error handling and retry logic

  • Async support for better performance

Installation

pip install hootsuite-mcp-server

Or install from source:

git clone https://github.com/asklokesh/hootsuite-mcp-server.git
cd hootsuite-mcp-server
pip install -e .

Configuration

Create a .env file in your project root with your Hootsuite API credentials:

# Option 1: OAuth Access Token (recommended)
HOOTSUITE_ACCESS_TOKEN=your_access_token_here

# Option 2: API Key and Secret
HOOTSUITE_API_KEY=your_api_key_here
HOOTSUITE_API_SECRET=your_api_secret_here

See .env.example for all available configuration options.

Quick Start

Running the MCP Server

# Using the command line entry point
hootsuite-mcp

# Or using Python
python -m hootsuite_mcp.server

Using as a Library

from hootsuite_mcp import mcp

# `mcp` is a FastMCP instance with tools pre-registered.
# Run the stdio transport in-process:
if __name__ == "__main__":
    mcp.run()

Requirements

  • Python 3.10 or newer

  • MCP SDK 1.27+ (installed automatically via pip install -e .)

Available Tools

The MCP server provides the following tools:

  1. create_post - Create and schedule social media posts

  2. get_social_profiles - Get connected social media profiles

  3. get_posts - Retrieve scheduled and published posts

  4. delete_post - Delete posts by ID

  5. get_analytics - Get analytics data for profiles

Development

See DEVELOPER.md for detailed development documentation.

Running Tests

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/ -v

# Run with coverage
pytest tests/ -v --cov=src --cov-report=term

Validation

Run the validation script to check the installation:

python validate.py

CI/CD

The project uses GitHub Actions for continuous integration:

  • Quick Test - Runs on every push/PR for fast feedback

  • Full CI - Comprehensive testing across multiple Python versions and OSes

License

MIT License - see LICENSE file for details

Available Tools

5 tools
create_postB

Create and schedule a social media post on Hootsuite.

Args: text: The content of the post. social_profile_ids: List of social profile IDs to post to. scheduled_send_time: Optional ISO 8601 datetime for scheduling.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
social_profile_idsYes
scheduled_send_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided; description mentions scheduling but does not disclose effects, permissions, rate limits, or failure behavior. For a write operation, more context is needed.

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

Conciseness4/5

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

Concise: one main sentence plus three bullet points. No fluff, but could be more informative in the parameter list.

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

Completeness2/5

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

Does not mention return value (though output schema exists), error behavior, or prerequisites. For a tool with 3 params and no annotations, description is incomplete.

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

Parameters3/5

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

With 0% schema coverage, the description adds brief parameter explanations (text, social_profile_ids, scheduled_send_time) but lacks constraints (e.g., max length, format). Adds marginal value over bare schema titles.

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?

Clearly states 'Create and schedule a social media post on Hootsuite' – specific verb and resource, distinct from siblings (get_social_profiles, get_posts, delete_post, get_analytics).

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

Usage Guidelines2/5

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

No guidance on when to use vs. alternatives; implicit that it's for creating posts, but no when-not-to or alternative tools mentioned.

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

delete_postB

Delete a scheduled or draft post from Hootsuite.

Args: post_id: The ID of the post to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so description must disclose behavior fully. It states 'Delete' (mutation) and limits to 'scheduled or draft post', which is a key constraint. However, it omits side effects, reversibility, permissions, or output details. Important information missing beyond the basic action.

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?

Two sentences, front-loaded with the key action and resource. The arg description is directly relevant. No wasted words; highly efficient.

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

Completeness3/5

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

For a simple 1-parameter tool with an output schema, the description covers the basics. However, it misses critical context: whether the post must belong to the user, if deletion is permanent, or if the restriction to scheduled/draft is enforced. Not fully complete for safe agent usage.

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

Parameters3/5

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

With 0% schema description coverage for post_id, the description adds meaning by stating 'The ID of the post to delete'. This clarifies what the parameter represents. However, it does not add format or validation hints beyond the schema's type string.

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

Purpose4/5

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

The description clearly states the action 'Delete' and the resource 'a scheduled or draft post from Hootsuite'. It distinguishes from sibling tools (create_post, get_*) but could be more precise about why only scheduled/draft posts are mentioned.

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

Usage Guidelines3/5

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

The usage is implied (delete a post) but there is no explicit guidance on when to use or not use this tool, nor alternatives. Since siblings don't include another delete tool, it's acceptable but still lacks explicit when-not guidance.

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

get_analyticsB

Get analytics data for social profiles.

Args: profile_ids: List of profile IDs to get analytics for. start_date: Start date in ISO format (YYYY-MM-DD). end_date: End date in ISO format (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes
profile_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that the tool 'gets' data, but does not confirm read-only behavior, mention pagination, rate limits, or error scenarios. The agent has minimal insight into side effects or operational nuances.

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

Conciseness4/5

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

The description is concise and well-structured with a brief intro and a bulleted 'Args' section. Each sentence adds value, and there is no redundant or extraneous content.

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

Completeness3/5

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

Given the presence of an output schema, the description does not need to explain return values. However, it lacks context on data scope, authorization requirements, or behavior with invalid inputs. It is minimally adequate for a simple query tool but not comprehensive.

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

Parameters4/5

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

The description adds meaningful detail beyond the schema: it explains that 'profile_ids' is a list of profile IDs, and specifies the ISO format for dates. This compensates for the 0% schema description coverage, though it could be more precise about the expected format of profile IDs.

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 purpose: 'Get analytics data for social profiles.' It uses a specific verb ('Get') and resource ('analytics data for social profiles'), and distinguishes itself from sibling tools that deal with posts or social profiles.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus siblings or alternatives. There are no explicit conditions, prerequisites, or exclusions, leaving the agent to infer usage solely from the tool name and description.

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

get_postsB

Get scheduled and published posts from Hootsuite.

Args: limit: Maximum number of posts to retrieve (default: 20). state: Optional filter by state (scheduled, published, draft).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits. It only states the basic retrieval function and parameters, but does not disclose safety (non-destructive), authentication requirements, rate limits, or pagination behavior.

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 extremely concise (two sentences plus a bullet-like list), front-loaded with purpose, and contains no unnecessary words.

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

Completeness3/5

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

Given two simple parameters and an output schema (assumed present), the description is adequate for basic use. However, it could clarify scope (e.g., for all profiles or a specific one) and whether the result includes metadata like total count.

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

Parameters4/5

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

Schema description coverage is 0%, but the description explains the limit parameter with default and maximum meaning, and the state parameter with example values ('scheduled, published, draft'). This adds significant meaning beyond the schema.

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

Purpose4/5

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

The description clearly states it retrieves 'scheduled and published posts from Hootsuite', which is a specific verb and resource. While it distinguishes from creation/deletion tools, it doesn't explicitly differentiate from analytics or profile tools, but the resource type is clear.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_analytics or get_social_profiles. There is no mention of context or exclusions.

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

get_social_profilesA

Get the list of social media profiles connected to Hootsuite.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It indicates a read-only retrieval but does not mention any limitations or side effects. For a simple list retrieval, the disclosure is adequate but minimal.

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 a single, concise sentence that directly conveys the tool's purpose without unnecessary words. It is appropriately front-loaded.

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?

Given zero parameters and the presence of an output schema (not shown but noted), the description is sufficiently complete. It explains what the tool returns without needing to detail the output structure.

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

Parameters4/5

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

The tool has no parameters, and the schema coverage is 100%. While the description adds no parameter-specific information, the baseline for zero parameters is 4, as no further clarification is needed.

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 verb 'Get', the resource 'list of social media profiles', and the context 'connected to Hootsuite'. It effectively distinguishes from sibling tools like create_post or get_analytics.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description lacks context about scenarios where this tool is preferred.

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. 5 tool updatesv0.2.0
    • First observedcreate_post
    • First observeddelete_post
    • First observedget_analytics
    • First observedget_posts
    • First observedget_social_profiles

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a unique purpose: creating posts, listing profiles, listing posts, deleting posts, and fetching analytics. No overlapping functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: create_post, get_social_profiles, get_posts, delete_post, get_analytics.

Tool Count5/5

5 tools is well-scoped for a social media posting server, covering essential CRUD and analytics without bloat.

Completeness4/5

Covers create, read, delete, and analytics, but lacks an update post tool for editing. Minor gap but core workflows are supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides AI assistants with access to the RecurPost API to manage social media accounts, schedule posts, and organize content libraries. It enables users to automate recurring posts, track engagement metrics, and generate social media content through natural language.
    9
    33 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to schedule and publish social media posts to platforms like Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, and Pinterest using natural language.
    33
    99 npm
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage social media accounts and CRM operations, including posting, analytics, inbox management, and customer management.
    22
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage social media through Sooshie, including scheduling posts, generating captions, managing accounts, and more via natural language.
    10 npm
    -