Skip to main content
Glama
baguskto

Enterprise Threads MCP Server

by baguskto
README.md
# ๐Ÿš€ Enterprise Threads MCP Server

A comprehensive MCP (Model Context Protocol) server for **professional Threads management** with enterprise-grade analytics, AI-powered optimization, and automation features.

## ๐ŸŽฏ **Enterprise-Ready Platform**

Complete social media management solution with advanced analytics, content optimization, and professional automation tools for businesses and power users.

## โœจ Enterprise Features

### ๐Ÿ“Š **Phase 3A: Enhanced Analytics & Performance Analysis**
- **Advanced Insights**: Demographic breakdowns, geographic analysis, time-series data
- **Audience Analytics**: Detailed follower demographics and behavior patterns
- **Engagement Trends**: Comprehensive trend analysis with growth projections
- **AI-Driven Optimization**: Optimal posting times and performance recommendations
- **Business Intelligence**: Professional reporting with comprehensive metrics

### ๐Ÿš€ **Phase 3B: Professional Content Creation & Automation**
- **AI Hashtag Suggestions**: Smart, industry-specific hashtag recommendations
- **Content Optimization**: Professional analysis with scoring and recommendations
- **Advanced Scheduling**: Automation with optimal timing and recurring posts
- **Bulk Operations**: Performance analysis, content audit, and data export
- **Website Integration**: Embed feeds, share buttons, and cross-platform sync
- **Carousel Posts**: Multi-media posts with accessibility features

### ๐ŸŽฏ **Core Management Features**
- **Content Management**: Create, view, search, and delete your threads
- **Analytics Dashboard**: Real-time insights and performance metrics
- **Interaction Management**: Handle replies, mentions, and user relationships
- **Search & Discovery**: Advanced search with filters and content discovery
- **Publishing Control**: Rate limits, scheduling, and automation

## ๐Ÿš€ Quick Start

### Installation

```bash
npm install -g threads-mcp-server
```

### โš ๏ธ **IMPORTANT: Business Account Required**

**This MCP server requires a verified Instagram Business Account with proper API access.**

### Prerequisites Setup

**1. Instagram Business Account:**
- Convert your Instagram to a Business Account
- Complete Meta Business verification (1-3 days)
- Ensure you have 100+ followers for demographic analytics

**2. Meta Developer Setup:**
- Create a Meta Developer App at [developers.facebook.com](https://developers.facebook.com)
- Add "Threads API" product to your app
- Request these required scopes:
  - `threads_basic`
  - `threads_content_publish` 
  - `threads_manage_insights`
  - `threads_read_replies`

**3. OAuth Access Token:**
- Complete OAuth flow with your business Instagram account
- Generate an access token with all required scopes

### Configuration

Create a `.env` file with your Threads access token:

```env
THREADS_ACCESS_TOKEN=your_access_token_here
```

### โœ… **Validate Your Setup**

After configuration, test your setup:

```bash
# Run the MCP server and test
@threads validate_setup
```

This will check:
- โœ… Token validity
- โœ… Required scopes
- โœ… Business account access
- โœ… API permissions

Follow any recommendations provided by the validation tool.

### Claude Desktop Setup

Add to your Claude Desktop configuration:

```json
{
  "mcpServers": {
    "threads": {
      "command": "threads-mcp-server",
      "env": {
        "THREADS_ACCESS_TOKEN": "your_access_token_here"
      }
    }
  }
}
```

## ๐Ÿ› ๏ธ Available Tools

### Profile & Account Management

#### `get_my_profile`
Get your Threads profile information
```typescript
{
  fields?: string[] // Profile fields to retrieve
}
```

#### `get_my_insights`
Get analytics for your account
```typescript
{
  metrics: string[];    // e.g., ['followers_count', 'posts_count']
  period?: string;      // 'day', 'week', 'days_28', 'month', 'lifetime'
  since?: string;       // ISO 8601 date
  until?: string;       // ISO 8601 date
}
```

#### `get_publishing_limit`
Check your current posting quotas and limits
```typescript
{} // No parameters needed
```

### Content Management

#### `get_my_threads`
Get your own threads/posts
```typescript
{
  fields?: string[];    // Thread fields to retrieve
  limit?: number;       // Number of threads to get
  since?: string;       // ISO 8601 date filter
  until?: string;       // ISO 8601 date filter
}
```

#### `publish_thread`
Create and publish a new thread using Threads API two-step process
```typescript
{
  text: string;           // Thread content (required)
  media_type?: string;    // 'TEXT', 'IMAGE', 'VIDEO'
  media_url?: string;     // URL for media content
  location_name?: string; // Location tagging
}
```
*Note: This function implements the proper two-step Threads publishing flow: first creates a media container, then publishes it. The response includes both the container ID and final thread ID.*

#### `delete_thread`
Delete one of your threads
```typescript
{
  thread_id: string; // ID of your thread to delete
}
```

#### `search_my_threads`
Search within your own threads
```typescript
{
  query: string;   // Search keywords
  limit?: number;  // Threads to search through
}
```

### Thread Interactions

#### `get_thread_replies`
Get replies to your specific thread
```typescript
{
  thread_id: string;    // Your thread ID
  fields?: string[];    // Reply fields to retrieve
}
```

#### `manage_reply`
Hide or show replies to your threads
```typescript
{
  reply_id: string; // Reply ID to manage
  hide: boolean;    // true to hide, false to show
}
```

#### `get_mentions`
Get threads where you are mentioned
```typescript
{
  fields?: string[];  // Fields to retrieve
  limit?: number;     // Number of mentions
}
```

#### `create_reply`
Reply to a specific thread or post
```typescript
{
  reply_to_id: string;     // Thread/post ID to reply to (required)
  text: string;            // Reply content (required)
  media_type?: string;     // 'TEXT', 'IMAGE', 'VIDEO'
  media_url?: string;      // Media URL for IMAGE/VIDEO
  reply_control?: string;  // 'everyone', 'accounts_you_follow', etc.
}
```
*Note: Uses two-step process like publish_thread. Creates real replies that appear in thread conversations.*

#### `create_thread_chain`
Create connected reply chains for threaded conversations
```typescript
{
  parent_thread_id: string;  // Starting thread ID (required)
  replies: Array<{           // Array of replies (required)
    text: string;            // Reply text
    reply_control?: string;  // Who can reply to this reply
  }>;
}
```
*Note: Creates true threaded conversations where each reply responds to the previous one, enabling Twitter-like thread chains.*

### Analytics & Performance

#### `get_thread_insights`
Get performance metrics for your specific thread
```typescript
{
  thread_id: string;    // Your thread ID
  metrics: string[];    // e.g., ['views', 'likes', 'replies']
  period?: string;      // Time period for metrics
}
```

### ๐Ÿ”ง Setup Validation & Diagnostics

#### `validate_setup`
**NEW in v5.0.0** - Comprehensive setup validation and diagnostics
```typescript
{
  check_scopes?: boolean;          // Check if all required scopes are present
  required_scopes?: string[];      // Custom list of required scopes to check
}
```

**What it checks:**
- โœ… Access token validity
- โœ… Required API scopes
- โœ… Business account verification
- โœ… Profile access permissions
- ๐Ÿ“‹ Provides specific setup recommendations

**Example response:**
```json
{
  "status": "valid",
  "token_validation": { "valid": true },
  "scope_validation": { "hasRequired": true, "missing": [] },
  "profile_access": { "success": true },
  "setup_recommendations": ["โœ… Setup appears to be correct!"]
}
```

## ๐Ÿข Enterprise Analytics & Automation Tools (Phase 3)

### ๐Ÿ“Š Advanced Analytics

#### `get_enhanced_insights`
Get comprehensive analytics with demographic breakdowns
```typescript
{
  thread_id?: string;           // Optional thread ID for media insights
  metrics: string[];            // views, likes, replies, followers_count, follower_demographics
  period?: string;              // day, week, month, lifetime
  breakdown?: string[];         // country, city, age, gender
  since?: string;               // ISO 8601 start date
  until?: string;               // ISO 8601 end date
}
```

#### `get_audience_demographics`
Detailed audience demographic analysis
```typescript
{
  categories: string[];         // country, age, gender, city
  period?: string;             // day, week, month, lifetime
  breakdown?: string;          // Demographic breakdown level
}
```

#### `get_engagement_trends`
Time-series analysis of engagement patterns
```typescript
{
  metrics: string[];           // views, likes, replies, shares
  timeframe?: string;          // week, month, quarter
  granularity?: string;        // daily, weekly
}
```

#### `get_follower_growth_analytics`
Follower growth analysis with projections
```typescript
{
  period?: string;             // month, quarter, year
  include_projections?: boolean; // Include growth forecasts
  projection_days?: number;    // Days to project forward
}
```

#### `analyze_best_posting_times`
AI-driven optimal posting time analysis
```typescript
{
  analysis_period?: string;    // week, month, quarter
  timezone?: string;           // User's timezone
  content_type?: string;       // general, promotional, educational
}
```

#### `get_content_performance_report`
Comprehensive performance reporting
```typescript
{
  report_type: string;         // summary, detailed, top_performers
  period: string;              // week, month, quarter
  metrics: string[];           // Performance metrics to include
  include_comparisons?: boolean; // Period-over-period comparisons
}
```

### ๐Ÿš€ Professional Content Creation & Automation

#### `auto_hashtag_suggestions`
AI-powered hashtag recommendations
```typescript
{
  content: string;             // Content to analyze
  media_url?: string;          // Optional media for visual analysis
  suggestion_settings?: {
    count?: number;            // Number of suggestions (1-10)
    style?: string;            // trending, niche, branded, mixed
    exclude_overused?: boolean; // Filter out overused hashtags
    industry_focus?: string;   // Industry/niche focus
  }
}
```

#### `content_optimization_analysis`
Professional content analysis with recommendations
```typescript
{
  content: string;             // Content to analyze
  analysis_type?: string;      // engagement, reach, accessibility, seo, comprehensive
  target_audience?: {
    demographics?: string[];   // Target demographic groups
    interests?: string[];      // Target interests
    timezone?: string;         // Primary audience timezone
  };
  optimization_goals?: string[]; // increase_engagement, expand_reach, etc.
}
```

#### `schedule_post`
Advanced scheduling with automation features
```typescript
{
  text: string;                // Post content
  media_url?: string;          // Optional media URL
  schedule_time?: string;      // ISO 8601 datetime for scheduling
  automation_settings?: {
    auto_optimize_time?: boolean; // Auto-optimize posting time
    recurring?: string;        // none, daily, weekly, monthly
    auto_hashtags?: boolean;   // Auto-add relevant hashtags
    content_variation?: boolean; // Create variations for recurring posts
  };
  timezone?: string;           // Timezone for scheduling
}
```

#### `create_carousel_post`
Multi-media carousel posts with accessibility
```typescript
{
  media_urls: string[];        // 2-10 image/video URLs
  text: string;                // Post caption
  alt_texts?: string[];        // Alt text for accessibility
  carousel_settings?: {
    auto_alt_text?: boolean;   // Generate alt text automatically
    aspect_ratio?: string;     // square, portrait, landscape
    thumbnail_selection?: string; // auto, first, custom
  }
}
```

#### `bulk_post_management`
Bulk operations and content management
```typescript
{
  action: string;              // analyze_performance, content_audit, export_data
  filters?: {
    date_range?: { start: string; end: string };
    content_type?: string;     // text, image, video, carousel
    performance_threshold?: string; // low, medium, high
  };
  bulk_operations?: {
    add_hashtags?: string[];   // Hashtags to add
    update_alt_text?: boolean; // Update alt text
    archive_low_performers?: boolean; // Archive underperforming posts
  }
}
```

#### `website_integration_setup`
Website integration and cross-platform sync
```typescript
{
  integration_type: string;    // embed_feed, share_buttons, webhook_setup, auto_crosspost
  website_config?: {
    domain?: string;           // Website domain
    platform?: string;        // wordpress, shopify, custom, react, vue, angular
    styling_preferences?: {
      theme?: string;          // light, dark, auto
      layout?: string;         // grid, list, carousel
      post_count?: number;     // Number of posts to display
    }
  };
  automation_settings?: {
    auto_sync?: boolean;       // Auto-sync new posts
    crosspost_enabled?: boolean; // Enable cross-posting
    webhook_url?: string;      // Webhook endpoint URL
  }
}
```

## ๐Ÿ“Š Test Results

**Latest Test Results**: โœ… 10+ functions working + Complete Phase 1 implementation!

### Core Functions
| Tool | Status | Notes |
|------|--------|-------|
| `get_my_profile` | โœ… Working | Full profile data |
| `get_my_threads` | โœ… Working | Returns thread list |
| `search_my_threads` | โœ… Working | Client-side filtering |
| `get_publishing_limit` | โœ… Working | Quota information |
| `publish_thread` | โœ… Working | **Successfully publishes!** |
| `delete_thread` | โš ๏ธ Limited | Error 400 (endpoint issue) |
| `get_my_insights` | โš ๏ธ Limited | Error 500 (permission/endpoint) |

### Phase 1: Complete Engagement & Advanced Posting (NEW)
| Tool | Status | Notes |
|------|--------|-------|
| `create_reply` | โœ… **Phase 1** | **Creates real replies!** |
| `create_thread_chain` | โœ… **Phase 1** | **True threaded conversations!** |
| `quote_post` | โœ… **Phase 1A** | **Quote tweets with commentary!** |
| `like_post` | ๐Ÿ”ง **Phase 1A** | Implemented with fallback patterns |
| `unlike_post` | ๐Ÿ”ง **Phase 1A** | Implemented with fallback patterns |
| `repost_thread` | ๐Ÿ”ง **Phase 1A** | Implemented with fallback patterns |
| `unrepost_thread` | ๐Ÿ”ง **Phase 1A** | Implemented with fallback patterns |
| `get_post_likes` | ๐Ÿ”ง **Phase 1A** | Implemented with fallback patterns |
| `create_post_with_restrictions` | โœ… **Phase 1B** | **Advanced posts with hashtags!** |
| `schedule_post` | โœ… **Phase 1B** | **Future post scheduling!** |

**Total Tools**: 21 functions (11 original + 10 new Phase 1 features)

## ๐Ÿ’ก Usage Examples

### Content Creation & Management
```bash
# Publish a new thread
@threads publish "Just testing my personal Threads manager! ๐Ÿš€"

# Get my recent threads
@threads get my recent threads limit 10

# Search my content
@threads search "project" in my threads
```

### Phase 1A: Engagement & Interaction
```bash
# Quote another post with your commentary
@threads quote post 123456 "This is exactly what I was thinking! Adding my perspective..."

# Like and unlike posts
@threads like post 123456
@threads unlike post 123456

# Repost content (share to your timeline)
@threads repost thread 123456
@threads unrepost thread 123456

# Get engagement data
@threads get likes for post 123456 limit 50
```

### Phase 1B: Advanced Posting
```bash  
# Create post with hashtags and restrictions
@threads create advanced post "My latest project update!" 
  hashtags: ["WebDev", "MCP", "Threads"]
  mentions: ["techfriend", "developer"]
  reply_control: "followers_only"
  location: "San Francisco"

# Schedule posts for future publishing
@threads schedule post "Good morning! โ˜€๏ธ" 
  for: "2025-08-25T08:00:00+07:00"
  reply_control: "everyone"
```

### Reply & Thread Management
```bash
# Reply to a specific thread
@threads reply to thread 123456 "Great post! Thanks for sharing"

# Create a thread chain (multiple connected replies)
@threads create chain from thread 123456 with replies:
- "First point in my response ๐Ÿงต"  
- "Second point continuing the thought"
- "Final point wrapping up"

# Get replies to my thread
@threads get replies to my thread 123456
```

### Analytics & Performance
```bash
# Check my publishing limits
@threads check my publishing quotas

# Get my profile stats
@threads get my profile information

# Get thread performance (if available)
@threads get insights for thread 123456
```

### Interaction Management
```bash
# Get replies to my thread
@threads get replies for my thread 123456

# Hide a reply
@threads hide reply 789012

# Get my mentions
@threads get where I am mentioned
```

## ๐Ÿ”ง Technical Details

### Personal Focus Benefits
- **No External User Limitations**: Only works with your own content
- **Full Access**: All permissions work on your own data
- **Reliable**: No privacy restrictions or access denials
- **Fast**: Direct API calls without workarounds

### Error Handling
- Automatic retry for transient errors
- Clear error messages for permission issues
- Graceful handling of API limitations

### Rate Limiting
- Built-in exponential backoff
- Respects Threads API rate limits
- Smart retry logic for temporary failures

## ๐Ÿšจ Important Notes

### Permissions Required
Ensure your Threads app has these permissions enabled:
- `threads_basic` - Basic thread access
- `threads_content_publish` - Create/publish content
- `threads_delete` - Delete threads (if using delete functionality)
- `threads_manage_insights` - Analytics access
- `threads_manage_replies` - Reply management

### Limitations
- **Delete Function**: Currently returns 400 error (API endpoint needs verification)
- **Insights**: Some analytics endpoints return 500 error (may need additional permissions)
- **Personal Only**: Designed only for your own content management

## ๐Ÿ“ˆ Roadmap

### Planned Improvements
- [ ] Fix delete thread endpoint
- [ ] Resolve insights API issues  
- [ ] Add batch operations
- [ ] Enhanced search filters
- [ ] Thread scheduling
- [ ] Content analytics dashboard

## ๐Ÿค Contributing

This is a focused personal management tool. Feature requests should align with personal Threads management use cases.

## ๐Ÿ“„ License

MIT

---

## ๐ŸŽฏ **Perfect For:**
- **Content Creators**: Manage your Threads content efficiently
- **Social Media Managers**: Handle personal brand accounts  
- **Analysts**: Track your own content performance
- **Developers**: Integrate Threads into personal workflows

**Focus**: Your content, your control, your insights! ๐Ÿš€

TDQS

C2.4/5.0

Scored across 44 tools

Disambiguation2/5

Many tools have overlapping purposes, especially in analytics (get_my_insights, get_enhanced_insights, get_engagement_trends, get_content_performance_report) and search (search_posts, search_by_hashtags, search_by_topics, search_mentions). While each tool has slight differences, the boundaries are unclear, causing potential misselection.

Naming Consistency2/5

Naming is inconsistent: some tools follow verb_noun (get_my_profile, create_reply), but others are noun phrases (auto_hashtag_suggestions, content_optimization_analysis, bulk_post_management) or use different verb prefixes. There is also mixing of 'thread' and 'post' terminology across similar actions.

Tool Count2/5

With 44 tools, the set is considerably over-sized for a social media server. Many tools could be consolidated (e.g., analytics tools, search variants), making the surface area unnecessarily complex and difficult to navigate.

Completeness4/5

The tool set is comprehensive, covering posting, engagement, search, analytics, user management, and setup. Minor gaps include lack of an edit/update post function and no direct single-post retrieval by ID, but these can be worked around via delete/repost and search.

Maintenance

ActivityInactive
ResponsivenessNo issues