Connect AI agents to Social Champ: manage channels, posts, AI content, queue, and approvals.
A Model Context Protocol (MCP) server for the Social Champ platform. It exposes the full Social Champ tool catalog to MCP-compatible AI clients such as Claude Desktop, Claude Code, and Cursor: scheduling and managing posts, managing connected channels and workspaces, labels, queues, recycling, shareable calendars, agency approval workflows, and the AI content wizard.
This server mirrors the live Social Champ MCP tool catalog. Channels are
connected social profiles; workspaces group channels and shareable calendars.
The tool definitions are generated from tools.schema.json, a snapshot of the
live server's catalog, so the full set of tools, argument names, and
descriptions stays in parity with the hosted server.
Tools are grouped by domain:
Each tool is annotated with ToolAnnotations so clients can apply the right
confirmation behavior. Read-only tools carry readOnlyHint=True; destructive
tools (delete_post, delete_shareable_calendar, bulk_delete, queue_clear)
carry destructiveHint=True. Agency tools require the caller token to also
carry the manage_team scope; this is noted in each tool's description.
For the full per-tool list with required arguments and scopes, see
tools.schema.json here, or api/mcp/IMPLEMENTED.md in the auth repo.
read_profile and manage_post.With uv:
uv pip install socialchamp-mcp
With pip:
pip install socialchamp-mcp
From source:
git clone https://github.com/socialchamp/socialchamp-mcp.git
cd socialchamp-mcp
pip install -e ".[dev]"
Set configuration through environment variables.
| Variable | Required | Default | Purpose |
|---|---|---|---|
SOCIALCHAMP_API_KEY | yes | none | Bearer token: a Social Champ API key or OAuth2 access token |
SOCIALCHAMP_API_BASE_URL | no | https://mcp.socialchamp.com/mcp | Override the hosted MCP endpoint (for example a local test server) |
SOCIALCHAMP_TIMEOUT | no | 30 | Request timeout in seconds |
SOCIALCHAMP_TRANSPORT | no | stdio | stdio, sse, or streamable-http |
SOCIALCHAMP_MCP_PROTOCOL_VERSION | no | 2025-06-18 | MCP protocol version sent on initialize |
Copy .env.example to .env for local use. Never commit .env.
Add the server to claude_desktop_config.json:
{
"mcpServers": {
"socialchamp": {
"command": "socialchamp-mcp",
"env": {
"SOCIALCHAMP_API_KEY": "your-api-key"
}
}
}
}
If the console script is not on your PATH, use "command": "python" with
"args": ["-m", "socialchamp_mcp"].
claude mcp add socialchamp --env SOCIALCHAMP_API_KEY=your-api-key -- socialchamp-mcp
The default transport is stdio, which is what Claude Desktop and Claude Code
use. To run over HTTP instead, set SOCIALCHAMP_TRANSPORT:
SOCIALCHAMP_TRANSPORT=streamable-http SOCIALCHAMP_API_KEY=your-api-key socialchamp-mcp
sse is also supported. Point your client at the resulting HTTP endpoint.
The tools forward to the hosted Social Champ MCP server over JSON-RPC. The live
tools are implemented in the auth backend (api/mcp/handlers.ts) and reach
champ through internal service routes that an external API key cannot call
directly, so the only surface a user's token can reach for the full catalog is
the hosted MCP server. src/socialchamp_mcp/client.py is the only file that
makes HTTP calls: it speaks JSON-RPC 2.0 (initialize, tools/list,
tools/call) to the endpoint in SOCIALCHAMP_API_BASE_URL.
src/socialchamp_mcp/server.py is generated from tools.schema.json, a
snapshot of the live server's api/mcp/tools.ts. To refresh after the live
catalog changes:
tools.schema.json (the live
tools.ts array, as JSON).python scripts/generate_server.py.The base URL and Bearer authentication are confirmed from the Social Champ authentication guide.
socialchamp-mcp/
├── tools.schema.json # snapshot of the live tool catalog (source for codegen)
├── scripts/
│ └── generate_server.py # regenerates server.py from tools.schema.json
├── src/
│ └── socialchamp_mcp/
│ ├── __init__.py
│ ├── __main__.py # python -m socialchamp_mcp
│ ├── config.py # settings from the environment
│ ├── client.py # the only file that makes HTTP calls (JSON-RPC)
│ └── server.py # GENERATED: FastMCP instance and tool definitions
└── tests/
└── test_server.py
Tools are generated, not hand-written. Add the tool to the live api/mcp/tools.ts
in the auth repo, refresh tools.schema.json, then run
python scripts/generate_server.py. The generator maps each tool to a
@mcp.tool function that forwards to call_tool, picks a ToolAnnotations
preset (READ, WRITE, UPDATE, DESTRUCTIVE), and writes the docstring from
the tool description. Update the classification sets in scripts/generate_server.py
when adding a destructive or read-only tool.
See CONTRIBUTING.md for the full checklist.
pip install -e ".[dev]"
pytest
To confirm the server starts over stdio:
SOCIALCHAMP_API_KEY=dummy SOCIALCHAMP_TIMEOUT=5 socialchamp-mcp
It waits for input on stdin rather than exiting. Stop it with Ctrl+C.
.env or your client's secret store. Never commit it. The
.gitignore excludes .env.delete_post, delete_shareable_calendar, bulk_delete, queue_clear)
carry destructiveHint=True so clients can confirm before running them.manage_team scope. Tokens
without it cannot invoke them.MIT. See LICENSE.
This listing does not have a supported local package template. Use the maintainer’s documentation for its hosted endpoint, authentication, and client-specific setup. No install command has been inferred.