Publishes content and manages comments, insights, hashtags and messages through the Instagram Graph and Threads APIs.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add meta --env INSTAGRAM_ACCESS_TOKEN='<INSTAGRAM_ACCESS_TOKEN>' --env INSTAGRAM_MESSAGING_ACCESS_TOKEN='<INSTAGRAM_MESSAGING_ACCESS_TOKEN>' --env THREADS_ACCESS_TOKEN='<THREADS_ACCESS_TOKEN>' --env META_APP_SECRET='<META_APP_SECRET>' --env INSTAGRAM_USER_ID='<INSTAGRAM_USER_ID>' --env INSTAGRAM_PAGE_ID='<INSTAGRAM_PAGE_ID>' --env THREADS_USER_ID='<THREADS_USER_ID>' -- npx -y @mikusnuz/meta-mcp~/.codex/config.toml
[mcp_servers.meta]
command = "npx"
args = ["-y", "@mikusnuz/meta-mcp"]
env = { INSTAGRAM_ACCESS_TOKEN = "<INSTAGRAM_ACCESS_TOKEN>", INSTAGRAM_MESSAGING_ACCESS_TOKEN = "<INSTAGRAM_MESSAGING_ACCESS_TOKEN>", THREADS_ACCESS_TOKEN = "<THREADS_ACCESS_TOKEN>", META_APP_SECRET = "<META_APP_SECRET>", INSTAGRAM_USER_ID = "<INSTAGRAM_USER_ID>", INSTAGRAM_PAGE_ID = "<INSTAGRAM_PAGE_ID>", THREADS_USER_ID = "<THREADS_USER_ID>" }
# codex mcp add meta --env INSTAGRAM_ACCESS_TOKEN='<INSTAGRAM_ACCESS_TOKEN>' --env INSTAGRAM_MESSAGING_ACCESS_TOKEN='<INSTAGRAM_MESSAGING_ACCESS_TOKEN>' --env THREADS_ACCESS_TOKEN='<THREADS_ACCESS_TOKEN>' --env META_APP_SECRET='<META_APP_SECRET>' --env INSTAGRAM_USER_ID='<INSTAGRAM_USER_ID>' --env INSTAGRAM_PAGE_ID='<INSTAGRAM_PAGE_ID>' --env THREADS_USER_ID='<THREADS_USER_ID>' -- npx -y @mikusnuz/meta-mcp~/.cursor/mcp.json
{
"mcpServers": {
"meta": {
"command": "npx",
"args": [
"-y",
"@mikusnuz/meta-mcp"
],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "<INSTAGRAM_ACCESS_TOKEN>",
"INSTAGRAM_MESSAGING_ACCESS_TOKEN": "<INSTAGRAM_MESSAGING_ACCESS_TOKEN>",
"THREADS_ACCESS_TOKEN": "<THREADS_ACCESS_TOKEN>",
"META_APP_SECRET": "<META_APP_SECRET>",
"INSTAGRAM_USER_ID": "<INSTAGRAM_USER_ID>",
"INSTAGRAM_PAGE_ID": "<INSTAGRAM_PAGE_ID>",
"THREADS_USER_ID": "<THREADS_USER_ID>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"meta": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mikusnuz/meta-mcp"
],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "<INSTAGRAM_ACCESS_TOKEN>",
"INSTAGRAM_MESSAGING_ACCESS_TOKEN": "<INSTAGRAM_MESSAGING_ACCESS_TOKEN>",
"THREADS_ACCESS_TOKEN": "<THREADS_ACCESS_TOKEN>",
"META_APP_SECRET": "<META_APP_SECRET>",
"INSTAGRAM_USER_ID": "<INSTAGRAM_USER_ID>",
"INSTAGRAM_PAGE_ID": "<INSTAGRAM_PAGE_ID>",
"THREADS_USER_ID": "<THREADS_USER_ID>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"meta": {
"command": "npx",
"args": [
"-y",
"@mikusnuz/meta-mcp"
],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "<INSTAGRAM_ACCESS_TOKEN>",
"INSTAGRAM_MESSAGING_ACCESS_TOKEN": "<INSTAGRAM_MESSAGING_ACCESS_TOKEN>",
"THREADS_ACCESS_TOKEN": "<THREADS_ACCESS_TOKEN>",
"META_APP_SECRET": "<META_APP_SECRET>",
"INSTAGRAM_USER_ID": "<INSTAGRAM_USER_ID>",
"INSTAGRAM_PAGE_ID": "<INSTAGRAM_PAGE_ID>",
"THREADS_USER_ID": "<THREADS_USER_ID>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"meta": {
"command": "npx",
"args": [
"-y",
"@mikusnuz/meta-mcp"
],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "<INSTAGRAM_ACCESS_TOKEN>",
"INSTAGRAM_MESSAGING_ACCESS_TOKEN": "<INSTAGRAM_MESSAGING_ACCESS_TOKEN>",
"THREADS_ACCESS_TOKEN": "<THREADS_ACCESS_TOKEN>",
"META_APP_SECRET": "<META_APP_SECRET>",
"INSTAGRAM_USER_ID": "<INSTAGRAM_USER_ID>",
"INSTAGRAM_PAGE_ID": "<INSTAGRAM_PAGE_ID>",
"THREADS_USER_ID": "<THREADS_USER_ID>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"meta": {
"command": "npx",
"args": [
"-y",
"@mikusnuz/meta-mcp"
],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "<INSTAGRAM_ACCESS_TOKEN>",
"INSTAGRAM_MESSAGING_ACCESS_TOKEN": "<INSTAGRAM_MESSAGING_ACCESS_TOKEN>",
"THREADS_ACCESS_TOKEN": "<THREADS_ACCESS_TOKEN>",
"META_APP_SECRET": "<META_APP_SECRET>",
"INSTAGRAM_USER_ID": "<INSTAGRAM_USER_ID>",
"INSTAGRAM_PAGE_ID": "<INSTAGRAM_PAGE_ID>",
"THREADS_USER_ID": "<THREADS_USER_ID>"
}
}
}
}Environment variables
INSTAGRAM_ACCESS_TOKENINSTAGRAM_MESSAGING_ACCESS_TOKENTHREADS_ACCESS_TOKENMETA_APP_SECRETINSTAGRAM_USER_IDINSTAGRAM_PAGE_IDTHREADS_USER_ID
Replace the placeholders with your own credentials and keep them out of version control.