# MCP Server for Social Media Posting

OmniSocials provides an MCP (Model Context Protocol) server so AI assistants and tools can manage your social media directly. The server is available in two forms:

1. **Remote MCP endpoint** at `https://mcp.omnisocials.com`, for clients that speak MCP over HTTP (claude.ai, ChatGPT, Notion, OpenClaw)
2. **npm package** [`@omnisocials/mcp-server`](https://www.npmjs.com/package/@omnisocials/mcp-server), for clients that spawn local MCP servers over stdio (Claude Desktop, Cursor, Windsurf, Claude Code, OpenClaw)

Both expose the same tools and use your OmniSocials API key. Pick whichever your client supports.

## Dedicated client guides

These clients have their own walkthroughs with screenshots and exact config paths:

- [Claude (claude.ai, Desktop, Code)](/integrations/claude)
- [ChatGPT](/integrations/chatgpt)
- [Notion Agents](/integrations/notion)
- [OpenClaw](/integrations/openclaw)

For every other MCP-compatible client, use one of the setups below.

## Remote MCP URL (hosted)

For clients that support remote MCP over HTTP:

```
https://mcp.omnisocials.com?API_KEY=omsk_live_<YOUR_KEY>
```

Or, for clients that support Bearer token authentication, use the URL without the query parameter and pass the key as `Authorization: Bearer omsk_live_<YOUR_KEY>`.

## npm package (local stdio)

For clients that spawn MCP servers as local subprocesses:

```bash
npx -y @omnisocials/mcp-server
```

Pass the API key via environment variable:

```bash
export OMNISOCIALS_API_KEY=omsk_live_<YOUR_KEY>
```

The generic MCP config shape most clients accept:

```json
{
  "mcpServers": {
    "omnisocials": {
      "command": "npx",
      "args": ["-y", "@omnisocials/mcp-server"],
      "env": {
        "OMNISOCIALS_API_KEY": "omsk_live_<YOUR_KEY>"
      }
    }
  }
}
```

Config file location varies by client:

| Client | Config path |
|--------|-------------|
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
| Cursor | `.cursor/mcp.json` (in the project) or `~/.cursor/mcp.json` (global) |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
| Claude Code | Managed via `claude mcp add` command |

## Available tools

The MCP server exposes the public API as structured tools:

| Category | Tools |
|----------|-------|
| Posts | `list_posts`, `get_post`, `create_post`, `create_and_publish_post`, `update_post`, `delete_post`, `publish_post`, `get_recent_platform_posts`, `search_locations` |
| Media | `list_media`, `upload_media`, `update_media`, `check_media_compatibility` |
| Folders | `list_folders`, `create_folder` |
| Hashtag Sets | `list_hashtag_sets`, `create_hashtag_set`, `update_hashtag_set`, `delete_hashtag_set` |
| Accounts | `list_accounts`, `get_account` |
| Analytics | `get_post_analytics`, `get_posts_analytics`, `get_analytics_overview`, `get_account_analytics`, `get_best_times` |
| Webhooks | `list_webhooks`, `get_webhook`, `create_webhook`, `update_webhook`, `delete_webhook`, `rotate_webhook_secret` |
| Workspaces | `list_workspaces`, `switch_workspace` |

Each tool accepts the same parameters as the corresponding REST endpoint. `create_post` and `update_post` support the full post feature set, including per-platform automatic first comments and PDF-to-carousel uploads. The MCP server handles validation, retries, and response shaping so the assistant gets clean structured output.

## Scopes

The MCP server respects your API key's scopes. A key without `posts:write` will see `create_post` in the tool list but calling it will return `403 Forbidden`. Give the key exactly the scopes it needs for the task, and no more.

## Alternative: Agent Skills

If your AI tool does not support MCP (e.g. GitHub Copilot, Codex, Gemini CLI), use [Agent Skills](/integrations/agent-skills) instead. Agent Skills work via a CLI + markdown instruction file and support any tool that can run shell commands.
