MCP Server
What it is
If you want an AI agent to post to Facebook or Instagram for you, this is the sfeed entry point. sfeed works as an MCP (Model Context Protocol) server, so agents like Claude, Codex, and OpenCode can call real posting and scheduling tools instead of guessing.
sfeed handles auth, posting, scheduling, previews, and the hosted queue. The agent still needs the actual post content from you or from its own workflow.
The shortest MCP setup
sfeed auth facebook
sfeed mcp You do not need MCP for direct terminal posting. Use MCP when you want an agent to call structured tools instead of running CLI commands.
After that, connect your agent to the MCP server and ask it to inspect status, choose a Page, and post or schedule something.
If the user only wants Instagram posting, the setup is still the same. Instagram publishing requires a professional Instagram account linked to a Facebook Page.
Start the server
sfeed mcp This starts the MCP server on stdio. You typically do not run this manually. Configure your AI tool to launch it when the agent session starts.
Configure Codex
codex mcp add sfeed -- sfeed mcp Configure Claude Code
claude mcp add sfeed -- sfeed mcp Configure OpenCode
opencode mcp add Choose a local MCP server and use sfeed mcp as the command.
Configure Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"sfeed": {
"command": "sfeed",
"args": ["mcp"]
}
}
} Agent skills
If your agent supports installable skills, start with the main sfeed skill. It gives the agent a clearer setup and posting workflow before it reaches for MCP tools.
npx skills add nem035/sfeed --skill sfeed There are narrower skills too, facebook-posting, instagram-posting, and social-scheduling, but the main sfeed skill is the right default.
Available tools
sfeed_status-- full overview of accounts, schedule, and subscriptionsfeed_auth_status-- check authenticated platformssfeed_pages-- list connected page IDs and Instagram linkagesfeed_post-- post to platformssfeed_schedule_status-- queue counts, next scheduled posts, and recent failuressfeed_schedule_dashboard_url-- return a signed browser URL for the hosted queue UI, with optional view, filter, month, date, and expanded-post paramssfeed_schedule_preview_url-- return a signed browser preview URL for one scheduled post-
sfeed_schedule_list-- list scheduled postsSupportsformat: "json"andstatus: "pending" | "failed" | "posted" | "all". sfeed_schedule_reschedule-- move a pending scheduled post to a new timesfeed_schedule_duplicate-- copy a scheduled post into a new pending jobsfeed_schedule_cancel-- cancel a scheduled post
Typical agent workflow
- Agent calls
sfeed_statusto check what is connected and what is already scheduled - If more than one Page is connected, the agent calls
sfeed_pagesand chooses the rightpage_id - Agent drafts the post based on the user's request
- Agent shows the draft for approval
- Agent calls
sfeed_postto publish or schedule it
sfeed_post accepts local files or public URLs in media. sfeed stages local files automatically when the post needs a public media URL.
Supported post shapes are straightforward. Facebook supports text-only, single-image, multi-image, and single-video posts. Instagram supports single-image, single-video, and image-only carousels up to 10 items.
If the user wants a browser view of scheduled posts, the agent can call sfeed_schedule_dashboard_url and open the returned link. If it needs a browser preview for one job, it can call sfeed_schedule_preview_url.