Enterprise Threads MCP Server
An MCP server for the official Meta Threads API that enables publishing, reading, scheduling, and analytics for Threads accounts.
Publish text, image, video, carousels (2–20), replies, quotes, thread chains, reposts, and delete posts; supports polls, GIFs, long-form, ghost posts, spoilers, topic tags, reply controls, location tagging, country allowlists, and Instagram Story cross-sharing.
Schedule, list, and cancel local scheduled posts (post, reply, quote, or carousel).
Read your posts, replies, mentions, ghost posts, poll results, conversations, pending replies, public profiles/posts, and oEmbed.
Search public posts (TOP/RECENT), recent keywords, and locations.
Get per-post and account insights, audience demographics, performance reports, and best posting times.
Manage replies: hide/unhide and approve pending replies.
Account tools: profile, token validation/refresh, and publishing limits.
Optional read-only mode; no token needed just to start and list tools.
Note: schema lists like/follow/block/trending/follower tools, but v6 README removes them because the Threads API has no such endpoints.
Provides tools for managing Threads content, analytics, interactions, and automation via the Threads API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Enterprise Threads MCP Server analyze my engagement trends for last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Threads MCP Server
An MCP server for the official Meta Threads API. Let Claude (or any MCP client) publish posts, carousels, polls, replies and quotes, read your posts, replies, mentions and insights, search public posts, and schedule posts — using only endpoints Meta documents.
Built on the MCP TypeScript SDK v2 (
@modelcontextprotocol/server), works with clients on protocol 2024-11-05 through 2025-11-2542 tools, each annotated as read-only or write so clients can auto-approve reads and confirm writes
Waits for media processing before publishing, retries transient errors, and validates posts before anything goes live
Optional read-only mode, and no token required just to start the server and list tools
v6 is a rewrite. Tools that called endpoints the Threads API does not have (likes, follows, blocks, follower lists, trending) were removed, and several were renamed or merged. See Migrating from v5.
Quick start
1. Get an access token
Create an app at developers.facebook.com and add the Threads API use case.
Add yourself as a Threads tester and accept the invite in Threads (Settings → Account → Website permissions).
Request the scopes you need (see Permissions);
threads_basicandthreads_content_publishcover posting.Generate a user token, then turn it into a long-lived token (60 days). You can do the exchange from the server with
exchange_for_long_lived_tokenif you setTHREADS_APP_SECRET.
A Threads profile no longer needs a linked Instagram account, except for follower counts and demographics.
2. Add the server to your client
Claude Code
claude mcp add threads --env THREADS_ACCESS_TOKEN=your_token -- npx -y threads-mcp-serverClaude Desktop (claude_desktop_config.json) and other clients that use the same format:
{
"mcpServers": {
"threads": {
"command": "npx",
"args": ["-y", "threads-mcp-server"],
"env": {
"THREADS_ACCESS_TOKEN": "your_long_lived_token"
}
}
}
}Requires Node.js 20 or newer.
3. Check the setup
Ask the assistant to run validate_setup. It confirms the token works, shows when it expires, and lists missing scopes together with the tools they unlock.
Related MCP server: Enterprise Threads MCP Server
Configuration
Variable | Required | Description |
| yes | Long-lived Threads user token |
| no | Your Threads user ID; skips one |
| no | Enables |
| no |
|
| no | How long a publish call waits for media processing before returning the pending container (default 45) |
| no | Where scheduled posts are stored (default |
| no | Graph API version (default |
| no | Graph host (default |
Configuration is read only from the environment your MCP client passes in. A .env file in the working directory is intentionally ignored, because clients often launch servers inside projects you may not trust.
Tools
Account
Tool | What it does |
| Your profile: username, name, bio, avatar, verification |
| Token check, expiry, granted vs. missing scopes |
| 24-hour quota usage for posts (250), replies (1,000), deletes (100), location searches (500) |
| Extend a long-lived token by 60 days and use it for the session |
| Swap a short-lived token for a long-lived one (needs |
Publishing
Tool | What it does |
| Text, image or video post. Text posts can add a link preview, a poll (2–4 options), a GIPHY GIF, a long-form text attachment (up to 10,000 characters) or be a 24-hour ghost post. Every post can set spoiler ranges, a topic tag, reply control, location, country allowlist, reply approvals and Instagram Story cross-sharing. |
| 2–20 images and/or videos with alt text |
| Reply to a post, with the same options as |
| Quote another post |
| Multi-part thread; every part is validated before the first one goes live, and a failure tells you where to resume |
| Repost a post |
| Delete one of your posts |
| Inspect and publish a container later (drafts, or slow videos) |
Video and image processing can take a while. Each publish call waits up to 45 seconds in total (so it finishes before typical MCP client timeouts) and sends progress notifications while it waits. If media is still processing after that, it returns the pending container_id instead of failing, and publish_container finishes the job; a thread chain returns the parts it published and where to resume. Cancelling a request stops it before anything further is published.
Scheduling
The Threads API has no native scheduling, so schedule_post saves the post locally and this server publishes it at the requested time. The server has to be running then; anything overdue is published as soon as it starts. Media containers are created at publish time, since they expire after 24 hours.
Tool | What it does |
| Schedule a post, reply, quote or carousel for an ISO 8601 time |
| Pending, published, failed and cancelled posts with their results |
| Cancel a pending post |
Reading
Tool | What it does |
| Your posts, with date filters |
| One post by ID |
| Find text in your own posts |
| Public posts that mention you |
| Your ghost posts |
| Options, vote percentages and expiry of a poll |
| Public profiles and their posts, by username |
| Embed HTML for a post |
| A threads.com link that opens a prefilled composer or a follow prompt — for things the API can't do, like following |
Replies
Tool | What it does |
| Top-level replies to a post |
| The whole conversation, flattened |
| Replies you posted |
| Hide or unhide a reply |
| Review replies on posts published with reply approvals |
Insights
Tool | What it does |
| Views, likes, replies, reposts, quotes and shares for a post |
| Account views (per day), likes, replies, reposts, quotes, link clicks and follower count |
| Followers by country, city, age or gender (100+ followers) |
| Totals, averages, engagement rate, results by media type and top posts over a window, from real per-post insights |
| Weekdays and hours when your own posts performed best, in your timezone |
Search and locations
Tool | What it does |
| Keyword or topic-tag search, TOP or RECENT, filtered by media type, author and date |
| Your recent searches |
| Find location IDs to tag |
Permissions
Scope | Unlocks |
| Every tool |
| Posts, carousels, quotes, reposts, thread chains |
| Publishing replies, hiding replies, reply approvals |
| Reading replies and conversations |
| Insights, demographics, reports |
| Mentions |
| Searching beyond your own posts |
| Deleting posts |
| Location search and tagging |
| Public profile lookup |
| Cross-sharing to Instagram Stories |
Until Meta approves an advanced permission, some tools only see your own or your testers' data — for example, search returns only your posts and profile lookup works only for official Meta accounts.
What the Threads API can't do
There are no endpoints for liking, following, blocking, listing followers, listing likers, trending feeds, direct messages, editing posts, uploading files (media must be public URLs) or undoing a repost. This server doesn't pretend otherwise. For following, create_web_intent_link gives you a link to click.
Migrating from v5
v5 tool | v6 |
| Removed — no API endpoint. Like counts are in |
| Removed — no API endpoint. Use |
| Removed — not supported by the API |
| Use |
|
|
|
|
|
|
|
|
|
|
|
|
| Removed — they were keyword heuristics; your assistant does this better directly |
|
|
|
|
|
|
| Still accepted; prefer |
|
|
Development
npm install
npm run typecheck
npm test # unit and tool tests against a mocked Threads API, no token needed
npm run build
npm run dev # run from source with tsxThe code is split into src/threads (HTTP client, publishing flow, errors) and src/tools (one module per tool group). See CONTRIBUTING.md.
License
MIT
Available Tools
44 toolsanalyze_best_posting_timesC
AI-driven analysis of optimal posting times based on engagement
Inputs: timezone, content_type, analysis_period.
auto_hashtag_suggestionsC
AI-powered hashtag suggestions based on content analysis
Inputs: content (required), media_url, suggestion_settings.
block_userC
Block a user
Inputs: user_id (required).
bulk_post_managementD
Manage multiple posts with bulk operations and analytics
Inputs: action (required), filters, bulk_operations.
content_optimization_analysisC
Advanced content analysis with optimization recommendations
Inputs: content (required), analysis_type, target_audience, optimization_goals.
create_carousel_postC
Create multi-media carousel posts with up to 20 items (September 2024 update)
Inputs: text (required), media_urls (required), alt_texts, carousel_settings.
create_post_with_restrictionsC
Create post with advanced reply and audience restrictions
Inputs: text (required), hashtags, mentions, media_url, +4 more.
create_replyC
Reply to a specific thread/post
Inputs: text (required), reply_to_id (required), media_url, media_type, +1 more.
create_thread_chainB
Create a thread chain (multiple connected replies)
Inputs: replies (required), parent_thread_id (required).
delete_threadB
Delete one of your threads
Inputs: thread_id (required).
follow_userC
Follow a user
Inputs: user_id (required).
get_audience_demographicsC
Get detailed audience demographic analysis
Inputs: period, breakdown_by.
get_content_performance_reportC
Comprehensive performance report across all content
Inputs: period, metrics, report_type, include_comparisons.
get_engagement_trendsC
Analyze engagement patterns and trends over time
Inputs: metrics, timeframe, granularity.
get_enhanced_insightsC
Get advanced analytics including views, clicks, shares, and demographics
Inputs: since, until, period, metrics, +2 more.
get_follower_growth_analyticsC
Track follower growth patterns and projections
Inputs: period, include_projections.
get_mentionsB
Get threads where you are mentioned
Inputs: limit, fields.
get_my_insightsC
Get analytics and insights for your account
Inputs: metrics (required), since, until, period.
get_my_profileA
Get your own Threads profile information
Inputs: fields.
get_my_threadsB
Get your own threads/posts
Inputs: limit, since, until, fields.
get_post_likesB
Get list of users who liked a post
Inputs: post_id (required), limit.
get_publishing_limitA
Check your current publishing quotas and limits
Inputs: no named parameters.
get_thread_insightsC
Get performance metrics for your specific thread
Inputs: metrics (required), thread_id (required), period.
get_thread_repliesA
Get replies to your specific thread
Inputs: thread_id (required), fields.
get_trending_postsC
Get trending/popular posts in various categories
Inputs: limit, category, timeframe.
get_user_followersB
Get followers list for a user
Inputs: limit, user_id.
get_user_followingC
Get following list for a user
Inputs: limit, user_id.
like_postC
Like a thread/post
Inputs: post_id (required).
manage_replyB
Hide or show replies to your threads
Inputs: hide (required), reply_id (required).
publish_threadC
Create and publish a new thread
Inputs: text (required), media_url, media_type, location_name.
quote_postB
Quote another thread/post with your own text
Inputs: text (required), quoted_post_id (required), media_url, media_type, +1 more.
repost_threadC
Repost/share another thread
Inputs: post_id (required).
schedule_postC
Schedule posts with advanced automation and optimal timing
Inputs: text (required), timezone, media_url, schedule_time, +1 more.
search_by_hashtagsC
Search for posts by hashtag or topic tags
Inputs: hashtags (required), limit, search_type.
search_by_topicsC
Search for posts by topic tags
Inputs: topics (required), limit, search_type.
search_mentionsB
Search for posts that mention you or specific users
Inputs: limit, since, until, user_id.
search_my_threadsB
Search within your own threads using keywords
Inputs: query (required), limit.
search_postsC
Search for posts using keywords
Inputs: query (required), limit, since, until, +1 more.
search_usersA
Search for users by username or display name
Inputs: query (required), limit.
unfollow_userB
Unfollow a user
Inputs: user_id (required).
unlike_postA
Remove like from a thread/post
Inputs: post_id (required).
unrepost_threadA
Remove a repost you previously shared
Inputs: post_id (required).
validate_setupA
Validate access token, check scopes, and verify business account setup
Inputs: check_scopes, required_scopes.
website_integration_setupC
Setup Threads integration for websites and external platforms
Inputs: integration_type (required), website_config, automation_settings.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 44 tools
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 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.
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.
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
Related MCP Connectors
Publish, reply, moderate, search and read insights on your Threads (threads.com) account.
Threads scheduler for AI agents: write, schedule and publish posts, review replies, read insights.
Schedule, publish, and analyze social posts on TikTok, Instagram, YouTube, X, Threads, LinkedIn.
Threads analytics and posts in your Govir workspace: read stats, draft, schedule and publish.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceManage Threads and Bluesky social media from AI assistants. Schedule posts, check analytics, and automate follow-up replies.3MIT
- AlicenseCqualityDmaintenanceEnables professional Threads management with advanced analytics, AI-powered content optimization, and automation features.4571 npmMIT
- AlicenseBqualityCmaintenanceEnables posting and managing Threads content via Meta Threads API, including text, image, video, carousel, and replies.971 npmMIT
- FlicenseAqualityCmaintenanceEnables AI agents to interact with Meta Threads by fetching profile details, recent posts, post and account analytics, and conversation reply trees, as well as exporting posts as JSON for archiving or embedding.7-