Circle MCP Server & CLI
A free, open source Circle MCP server and CLI that lets Claude Code, Codex, Cursor and other AI agents manage your members and spaces, draft posts, and run events and courses.
0.0(0 ratings)- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
claude mcp add circle \
-e CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN \
-- npx -y @thenavidm/circle-mcp-cli@latest - 2
In Claude Code, type /mcp. Circle should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
claude mcp add circle -e CIRCLE_API_TOKEN="YOUR_ADMIN_V2_TOKEN" -- npx -y @thenavidm/circle-mcp-cli@latest - 2
In Claude Code, type /mcp. Circle should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
claude mcp add circle \
-e CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN \
-- npx -y @thenavidm/circle-mcp-cli@latest - 2
In Claude Code, type /mcp. Circle should show as connected.
/mcp
- 1Download the extension
Download the Claude Desktop extension.
- 2
Double-click it, and Claude Desktop installs it.
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
codex mcp add circle \
--env CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN \
-- npx -y @thenavidm/circle-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
codex mcp add circle --env CIRCLE_API_TOKEN="YOUR_ADMIN_V2_TOKEN" -- npx -y @thenavidm/circle-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
codex mcp add circle \
--env CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN \
-- npx -y @thenavidm/circle-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 2
Add the server.
Put your own Admin V2 token in place of the example.
{
"mcpServers": {
"circle": {
"command": "npx",
"args": ["-y", "@thenavidm/circle-mcp-cli@latest"],
"env": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
} - 3
Open the MCP tab again. It should show 170 tools.
- 1
Open the Command Palette and run MCP: Open User Configuration.
- 2
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers. Put your own Admin V2 token in place of the example.
{
"servers": {
"circle": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/circle-mcp-cli@latest"],
"env": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
}
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
copilot mcp add circle \
--env CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN \
-- npx -y @thenavidm/circle-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get circle
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
copilot mcp add circle --env CIRCLE_API_TOKEN="YOUR_ADMIN_V2_TOKEN" -- npx -y @thenavidm/circle-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get circle
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
copilot mcp add circle \
--env CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN \
-- npx -y @thenavidm/circle-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get circle
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own Admin V2 token in place of the example.
{
"mcpServers": {
"circle": {
"command": "npx",
"args": ["-y", "@thenavidm/circle-mcp-cli@latest"],
"env": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
%USERPROFILE%\.gemini\settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own Admin V2 token in place of the example.
{
"mcpServers": {
"circle": {
"command": "npx",
"args": ["-y", "@thenavidm/circle-mcp-cli@latest"],
"env": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own Admin V2 token in place of the example.
{
"mcpServers": {
"circle": {
"command": "npx",
"args": ["-y", "@thenavidm/circle-mcp-cli@latest"],
"env": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own Admin V2 token in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"circle": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/circle-mcp-cli@latest"],
"enabled": true,
"environment": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
%USERPROFILE%\.config\opencode\opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own Admin V2 token in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"circle": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/circle-mcp-cli@latest"],
"enabled": true,
"environment": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own Admin V2 token in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"circle": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/circle-mcp-cli@latest"],
"enabled": true,
"environment": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
} - 3
Restart OpenCode.
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
openclaw mcp add circle \
--command npx \
--arg -y \
--arg @thenavidm/circle-mcp-cli@latest \
--env CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN - 2
Check that it starts and lists its tools.
openclaw mcp doctor circle --probe
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
openclaw mcp add circle --command npx --arg -y --arg @thenavidm/circle-mcp-cli@latest --env CIRCLE_API_TOKEN="YOUR_ADMIN_V2_TOKEN" - 2
Check that it starts and lists its tools.
openclaw mcp doctor circle --probe
- 1
Add it with a single command in a terminal.
Put your own Admin V2 token in place of the example.
openclaw mcp add circle \
--command npx \
--arg -y \
--arg @thenavidm/circle-mcp-cli@latest \
--env CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN - 2
Check that it starts and lists its tools.
openclaw mcp doctor circle --probe
- 1
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 2
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers. Put your own Admin V2 token in place of the example.
{
"mcpServers": {
"circle": {
"command": "npx",
"args": ["-y", "@thenavidm/circle-mcp-cli@latest"],
"env": {
"CIRCLE_API_TOKEN": "YOUR_ADMIN_V2_TOKEN"
}
}
}
}
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own Admin V2 token in place of the example.
mcp_servers:
circle:
command: "npx"
args: ["-y", "@thenavidm/circle-mcp-cli@latest"]
env:
CIRCLE_API_TOKEN: "YOUR_ADMIN_V2_TOKEN"
- 1
Open your Hermes config.
%USERPROFILE%\.hermes\config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own Admin V2 token in place of the example.
mcp_servers:
circle:
command: "npx"
args: ["-y", "@thenavidm/circle-mcp-cli@latest"]
env:
CIRCLE_API_TOKEN: "YOUR_ADMIN_V2_TOKEN"
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own Admin V2 token in place of the example.
mcp_servers:
circle:
command: "npx"
args: ["-y", "@thenavidm/circle-mcp-cli@latest"]
env:
CIRCLE_API_TOKEN: "YOUR_ADMIN_V2_TOKEN"
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.claude/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Claude Code to use circle-cli.
Running circle-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.claude\skills\circle" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\circle-mcp-cli\SKILL.md" "$HOME\.claude\skills\circle\" - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Claude Code to use circle-cli.
Running circle-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.claude/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Claude Code to use circle-cli.
Running circle-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.agents/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Codex to use circle-cli.
Running circle-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.agents\skills\circle" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\circle-mcp-cli\SKILL.md" "$HOME\.agents\skills\circle\" - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Codex to use circle-cli.
Running circle-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.agents/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Codex to use circle-cli.
Running circle-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Cursor to use circle-cli.
Running circle-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Cursor to use circle-cli.
Running circle-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Cursor to use circle-cli.
Running circle-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask VS Code to use circle-cli.
Running circle-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask VS Code to use circle-cli.
Running circle-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask VS Code to use circle-cli.
Running circle-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.copilot/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Copilot CLI to use circle-cli.
Running circle-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.copilot\skills\circle" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\circle-mcp-cli\SKILL.md" "$HOME\.copilot\skills\circle\" - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Copilot CLI to use circle-cli.
Running circle-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.copilot/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask Copilot CLI to use circle-cli.
Running circle-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Gemini CLI to use circle-cli.
Running circle-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Gemini CLI to use circle-cli.
Running circle-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Gemini CLI to use circle-cli.
Running circle-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.config/opencode/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask OpenCode to use circle-cli.
Running circle-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.config\opencode\skills\circle" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\circle-mcp-cli\SKILL.md" "$HOME\.config\opencode\skills\circle\" - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask OpenCode to use circle-cli.
Running circle-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.config/opencode/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask OpenCode to use circle-cli.
Running circle-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.openclaw/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask OpenClaw to use circle-cli.
Running circle-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.openclaw\skills\circle" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\circle-mcp-cli\SKILL.md" "$HOME\.openclaw\skills\circle\" - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask OpenClaw to use circle-cli.
Running circle-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/circle
cp "$(npm root -g)/@thenavidm/circle-mcp-cli/SKILL.md" ~/.openclaw/skills/circle/ - 3
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 5
Ask OpenClaw to use circle-cli.
Running circle-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Antigravity to use circle-cli.
Running circle-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Antigravity to use circle-cli.
Running circle-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Antigravity to use circle-cli.
Running circle-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Hermes to use circle-cli.
Running circle-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Hermes to use circle-cli.
Running circle-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
Ask Hermes to use circle-cli.
Running circle-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
List every command, then try one.
circle-cli
circle-cli list-spaces
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
setx CIRCLE_API_TOKEN "YOUR_ADMIN_V2_TOKEN" - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
List every command, then try one.
circle-cli
circle-cli list-spaces
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/circle-mcp-cli@latest - 2
Save your Circle details, so every new session has them.
Put your own Admin V2 token in place of the example.
echo 'export CIRCLE_API_TOKEN=YOUR_ADMIN_V2_TOKEN' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
circle-cli doctor - 4
List every command, then try one.
circle-cli
circle-cli list-spaces
Needs Node 22 or newer and a Circle Admin V2 token, on the Business plan or higher. Make one in a minute.
It's free and open source. If it saves you time, star it on GitHub, so more people find it.
This free Circle MCP server and CLI gives your AI real access to your Circle community: members, spaces, posts, events, courses, paywalls and workflows. It reads and manages members and their access, drafts posts and comments, runs events and courses, reads form submissions, and handles paywalls, messages and workflows.
It's one install with two ways in. Claude, Codex, Cursor or any other MCP app calls its 170 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.
In this guide, I'll show you:
- What the Circle MCP server & CLI is, and what you can ask it
- How to install it and check that it works
- When to use the MCP server, and when the CLI
- Every tool, and how to keep your account safe
Every tool on this page comes from the server itself, and every cost was measured in Claude Code.
Key takeaways
What is the Circle MCP server & CLI?
The Circle MCP server & CLI is a free, open source program that lets AI agents manage your Circle community for you, in two ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.
You ask in plain language. Your AI picks the right tool, and the server makes the call to Circle's own API.
The CLI is the same program as commands. circle-cli list-spaces runs the same code your AI runs when you ask which spaces you have, whether an agent like Claude Code runs it or you do.
In an AI OS, the layer that connects your AI to your context, your data and your tools, a server like this is how your AI reaches Circle. I explain how the parts fit together in how to build an AI operating system, and here's how I use AI myself.
What can you ask it?
Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:
Try askingWhich posts this week have no replies yet?
Draft a welcome post for the Introductions space, and leave it unpublished.
Find jane@example.com and add them to the VIP access group.
Who's registered for Thursday's event?
How far along are members in the first section of my course?
Which members are top of the leaderboard this month?
The first one shows why this is useful. Your AI reads every new post and finds the questions nobody answered, so no member is left waiting.
It works well next to my Teachable MCP server and Kit MCP server, so your AI can enroll students in Teachable and email your members in the same chat. Every server I've made is on my MCP servers page.
For your courses, my free online course platform comparison and course platform finder help too. Circle is my pick for a community under your own brand in the best online course platforms.
How to install the Circle MCP server
Pick your app in the box at the top of this page. Each one is a single command or a pasted block, and they all run through npx, so there's nothing to install first.
Windsurf, Zed and Cline take the same server, though they don't have a tab in the box yet. Follow the box's Cursor tab, and put its block here instead:
| App | Where the block goes |
|---|---|
| Windsurf | In the Cascade panel, open the Actions menu (…) and choose Open MCP config file, then paste the block. |
| Cline | Click the MCP Servers icon in the Cline panel, open the Configure tab, click Configure MCP Servers, and paste the block. |
| Zed | Go to Settings, then AI, then MCP Servers, and choose Add Server, then Add Local Server. Enter the block's command, arguments and variables, and Zed saves them under context_servers. |
Watch out: Circle counts every API request against a monthly allowance, starting at 5,000 on the Business plan, and every page of a long list counts. Ask for what you need, not everything.
Set up your Circle community
It takes a minute.
CIRCLE_API_TOKEN in the command for your app, in place of the example.The token belongs to your community, and it can do anything an admin can. Your usage shows in the same Developers tab:
| Plan | Admin API requests a month |
|---|---|
| Business | 5,000 |
| Enterprise and Circle Plus | 30,000 |
| Circle Plus Platform | 250,000 |
The server sends the token the way Circle's API schema shows. If every request fails with 401, set CIRCLE_AUTH_SCHEME to Bearer, the way Circle's quick start shows.
To keep the token out of your app's config, save it alone in a file only you can read, and point CIRCLE_TOKEN_FILE at that file's full path instead.
Check that it works
Run the doctor with --network. It checks your settings, then reads your community's details to prove the token works. It never invites, posts or changes billing.
npx -y @thenavidm/circle-mcp-cli doctor --networkWhen every line has a check mark, restart your app and ask it which spaces you have. If every request fails with 401, try CIRCLE_AUTH_SCHEME=Bearer.
In Claude Code, /mcp also shows whether the Circle server is connected. It's one of the Claude Code commands worth knowing.
Use the Circle CLI
The CLI is the same 170 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.
Every tool name becomes a command with dashes, so list_spaces runs as circle-cli list-spaces.
npm install -g @thenavidm/circle-mcp-cli
circle-cli
circle-cli list-spaces --per-page 5
circle-cli list-posts --space-id YOUR_SPACE_ID --per-page 10
circle-cli search-member --email jane@example.com
circle-cli get-leaderboardThe bare circle-cli lists every command, circle-cli which <words> finds the command for a task, and circle-cli <command> --help shows what a command takes. Every change, invite, message and export needs --confirm, the terminal's version of your approval.
circle-cli install <app> adds the server to Claude Code, Codex, Claude Desktop, Cursor, VS Code or Gemini CLI, in each app's own format.
These are the flags you'll use most:
| Flag | What it does |
|---|---|
--json | Prints JSON |
--compact | Prints the JSON on one line |
--select a,b.c | Keeps only those fields, and a dotted path goes deeper |
--agent | Machine mode: compact JSON, no prompts, and it never confirms anything |
--confirm | Lets a write that asks first go ahead |
--dry-run | Shows what a write would do, without doing it |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | It worked |
| 1 | Something unexpected went wrong |
| 2 | The command was typed wrong, or a write needed --confirm |
| 3 | It wasn't found |
| 4 | Circle rejected the credentials |
| 5 | Circle failed or couldn't be reached |
| 7 | You hit a rate limit, so wait and try again |
| 10 | Nothing is set up yet |
MCP server or CLI: which one?
Both are the same program with the same 170 tools. The difference is when your AI pays for them, in the tokens it reads.
- MCP server
- 84,400 tokens
- CLI
- Nothing
- MCP server
- 2,500 tokens
- CLI
- Nothing
- MCP server
- Nothing more, or in Claude Code the tools it picks
- CLI
- 950 tokens, once
- MCP server
- 1,688,000 tokens
- CLI
- 950 tokens
- MCP server
- Yes
- CLI
- No, there's no terminal there
- MCP server
- No
- CLI
- Yes
An app that loads every tool up front sends the full list with every message, whether you mention Circle or not. Claude Code doesn't by default: its tool search sends only the tool names and the server's instructions, and loads a tool's full definition when your AI reaches for it.
The CLI costs nothing until Circle comes up. Then your agent reads its skill file once and runs the commands it needs. With the skill added, Claude Code also lists its one-line description with every message, about 40 tokens.
When the whole conversation is about Circle, the gap closes. Then the MCP server is the better experience, because you ask in plain language and your AI never has to look up a command.
How to spend less
In Claude Code, leave tool search on, which it is unless you've set ENABLE_TOOL_SEARCH=false.
Turn the server off when you aren't working on your community. In Claude Code that's the /mcp panel, and every AI app has its own switch. CIRCLE_READ_ONLY=1 cuts it to the 66 reading tools.
Or install the CLI and connect the server later, on the days it earns its place. Every tool stays in reach, and the standing cost drops to nothing.
Every number here was measured on October 5, 2026 in Claude Code 2.1.286 with Claude Opus 5.5. It's the same one-line prompt with and without the server connected, once with tool search off so every tool loads, and once with Claude Code's default. The skill was measured the same way, and other apps and models count tokens a little differently.
Drafts, members and paid features
A new post starts as a draft. Its text is a Tiptap document, the format Circle's editor uses, so your AI writes it in that shape, and publishing is a separate change you approve.
Adding a member sends an invitation unless you skip it. Deactivating a member and deleting one are different tools, and deleting can't be undone.
Messages, comments, event reminders and workflows can all reach people, so each one asks first. Workflows use their own long IDs, which your AI reads from the workflow list.
Paywalls, charges, refunds and affiliate payouts are real money. Your AI reads them freely, and every change waits for you.
create_direct_upload only gets an upload slot. You upload the file to the link it returns, and the server never sends your token there.
Watch out: Circle allows 2,000 requests every 5 minutes, and every page of a list counts against your monthly allowance. A list with --all-pages stops at 1,000 items unless you set more.
Every Circle tool
The tables below list all 170 tools, grouped by what they're for. Of these, 66 only read, and 104 change something in your Circle community.
Members, tags and segments
create_lead- What it does
- Adds a contact who isn't a member.
- Kind
- Asks first
delete_lead- What it does
- Deletes a contact who isn't a member.
- Kind
- Asks first
list_member_spaces- What it does
- Lists the spaces a member belongs to.
- Kind
- Reads
list_member_access_groups- What it does
- Lists a member's access groups.
- Kind
- Reads
ban_community_member- What it does
- Bans a community member.
- Kind
- Asks first
create_member- What it does
- Adds a member, with an invitation unless you skip it.
- Kind
- Asks first
list_members- What it does
- Lists community members.
- Kind
- Reads
delete_community_member- What it does
- Deletes a member for good.
- Kind
- Asks first
remove_member- What it does
- Deactivates a member.
- Kind
- Asks first
get_member- What it does
- Shows a community member.
- Kind
- Reads
update_member- What it does
- Updates a community member.
- Kind
- Asks first
search_member- What it does
- Finds a member by email.
- Kind
- Reads
create_community_segment- What it does
- Creates a community segment.
- Kind
- Asks first
list_segments- What it does
- Lists community segments.
- Kind
- Reads
delete_community_segment- What it does
- Deletes a community segment.
- Kind
- Asks first
update_community_segment- What it does
- Updates a community segment.
- Kind
- Asks first
duplicate_community_segment- What it does
- Duplicates a community segment.
- Kind
- Asks first
create_contact_note- What it does
- Creates a contact note.
- Kind
- Asks first
list_contact_notes- What it does
- Lists contact notes.
- Kind
- Reads
get_filter_configuration- What it does
- Reads the filters shown on the member directory or a member space.
- Kind
- Reads
create_filter_control- What it does
- Creates a member filter control.
- Kind
- Asks first
list_filter_controls- What it does
- Lists the filters on the member directory and member spaces.
- Kind
- Reads
delete_filter_control- What it does
- Deletes a filter control.
- Kind
- Asks first
get_filter_control- What it does
- Reads a filter control.
- Kind
- Reads
update_filter_control- What it does
- Changes a member directory or member space filter.
- Kind
- Asks first
create_member_tag- What it does
- Creates a member tag.
- Kind
- Asks first
list_member_tags- What it does
- Lists member tags.
- Kind
- Reads
delete_member_tag- What it does
- Deletes a member tag.
- Kind
- Asks first
get_member_tag- What it does
- Shows a member tag's details.
- Kind
- Reads
update_member_tag- What it does
- Updates a member tag.
- Kind
- Asks first
list_page_profile_fields- What it does
- Reads page profile fields.
- Kind
- Reads
archive_profile_field- What it does
- Archives a profile field.
- Kind
- Asks first
create_profile_field- What it does
- Creates a profile field.
- Kind
- Asks first
list_profile_fields- What it does
- Lists your profile fields.
- Kind
- Reads
delete_profile_field- What it does
- Deletes a profile field.
- Kind
- Asks first
update_profile_field- What it does
- Updates a profile field.
- Kind
- Asks first
unarchive_profile_field- What it does
- Unarchives a profile field.
- Kind
- Asks first
tag_member- What it does
- Tags a member.
- Kind
- Asks first
untag_member- What it does
- Takes a tag off a member.
- Kind
- Asks first
list_tagged_members- What it does
- Lists tagged members.
- Kind
- Reads
get_tagged_member- What it does
- Reads one member's tag.
- Kind
- Reads
Access groups and invitations
add_to_access_group- What it does
- Adds a member to access group.
- Kind
- Asks first
remove_from_access_group- What it does
- Removes an access group member.
- Kind
- Asks first
list_access_group_community_members- What it does
- Lists access group community members.
- Kind
- Reads
get_access_group_community_member- What it does
- Shows an access group community member.
- Kind
- Reads
create_access_group- What it does
- Creates an access group.
- Kind
- Asks first
list_access_groups- What it does
- Lists access groups.
- Kind
- Reads
archive_access_group- What it does
- Archives an access group.
- Kind
- Asks first
update_access_group- What it does
- Updates an access group.
- Kind
- Asks first
unarchive_access_group- What it does
- Unarchives an access group.
- Kind
- Asks first
create_invitation- What it does
- Creates an invitation link.
- Kind
- Asks first
list_invitations- What it does
- Lists invitation links.
- Kind
- Reads
delete_invitation_link- What it does
- Deletes an invitation link.
- Kind
- Asks first
update_invitation_link- What it does
- Updates an invitation link.
- Kind
- Asks first
revoke_invitation_link- What it does
- Revokes an invitation link.
- Kind
- Asks first
Spaces and topics
create_space_group_member- What it does
- Creates a space group member.
- Kind
- Asks first
delete_space_group_member- What it does
- Removes a member from a space group.
- Kind
- Asks first
list_space_group_members- What it does
- Lists space group members.
- Kind
- Reads
get_space_group_member- What it does
- Shows a space group member.
- Kind
- Reads
create_space_group- What it does
- Creates a space group.
- Kind
- Asks first
list_space_groups- What it does
- Lists space groups.
- Kind
- Reads
delete_space_group- What it does
- Deletes a space group.
- Kind
- Asks first
get_space_group- What it does
- Shows a space group.
- Kind
- Reads
update_space_group- What it does
- Updates a space group.
- Kind
- Asks first
add_space_member- What it does
- Adds a space member.
- Kind
- Asks first
remove_space_member- What it does
- Removes a space member.
- Kind
- Asks first
list_space_members- What it does
- Lists space members.
- Kind
- Reads
get_space_member- What it does
- Shows a space member.
- Kind
- Reads
get_space_ai_summaries- What it does
- Reads an AI summary of a space.
- Kind
- Reads
create_space- What it does
- Creates a space.
- Kind
- Asks first
list_spaces- What it does
- Lists spaces.
- Kind
- Reads
delete_space- What it does
- Deletes a space.
- Kind
- Asks first
get_space- What it does
- Shows a space.
- Kind
- Reads
update_space- What it does
- Updates a space.
- Kind
- Asks first
create_topic- What it does
- Creates a topic.
- Kind
- Asks first
list_topics- What it does
- Lists topics.
- Kind
- Reads
delete_topic- What it does
- Deletes a topic.
- Kind
- Asks first
get_topic- What it does
- Shows topic details.
- Kind
- Reads
update_topic- What it does
- Updates a topic.
- Kind
- Asks first
Posts, comments and search
search- What it does
- Searches your whole community.
- Kind
- Reads
create_comment- What it does
- Creates a comment.
- Kind
- Asks first
list_comments- What it does
- Lists comments.
- Kind
- Reads
delete_comment- What it does
- Deletes a comment.
- Kind
- Asks first
get_comment- What it does
- Shows a comment.
- Kind
- Reads
create_direct_upload- What it does
- Gets an upload slot for a file, which you then upload yourself.
- Kind
- Asks first
create_embed- What it does
- Creates an embed.
- Kind
- Asks first
get_embed- What it does
- Reads an embed.
- Kind
- Reads
report_flagged_content- What it does
- Reports content for review.
- Kind
- Asks first
list_flagged_content- What it does
- Lists flagged contents.
- Kind
- Reads
create_image_post- What it does
- Creates an image post, as a draft unless you publish it.
- Kind
- Asks first
list_image_posts- What it does
- Lists image posts.
- Kind
- Reads
delete_image_post- What it does
- Deletes an image post.
- Kind
- Asks first
get_image_post- What it does
- Shows an image post.
- Kind
- Reads
duplicate_image_post- What it does
- Duplicates an image post.
- Kind
- Asks first
unfollow_post- What it does
- Unfollows a post.
- Kind
- Asks first
create_post- What it does
- Creates a basic post, as a draft unless you publish it.
- Kind
- Asks first
list_posts- What it does
- Lists basic posts.
- Kind
- Reads
delete_post- What it does
- Deletes a basic post.
- Kind
- Asks first
get_post- What it does
- Shows a basic post.
- Kind
- Reads
update_post- What it does
- Updates a basic post.
- Kind
- Asks first
get_post_summary- What it does
- Reads a post summary.
- Kind
- Reads
Messages, chat and live rooms
update_chat_preferences- What it does
- Updates chat preferences.
- Kind
- Asks first
import_chat_room_message- What it does
- Imports a chat room message.
- Kind
- Asks first
list_live_rooms- What it does
- Lists live rooms.
- Kind
- Reads
list_live_room_transcripts- What it does
- Lists live room transcripts.
- Kind
- Reads
send_message- What it does
- Sends a direct message to a member or a chat room.
- Kind
- Asks first
Events
create_event_attendee- What it does
- Creates an event attendee.
- Kind
- Asks first
delete_event_attendee- What it does
- Deletes an event attendee.
- Kind
- Asks first
list_event_attendees- What it does
- Lists event attendees.
- Kind
- Reads
create_event- What it does
- Creates an event.
- Kind
- Asks first
list_events- What it does
- Lists events.
- Kind
- Reads
delete_event- What it does
- Deletes an event.
- Kind
- Asks first
get_event- What it does
- Reads an event.
- Kind
- Reads
update_event- What it does
- Updates an event.
- Kind
- Asks first
duplicate_event- What it does
- Duplicates an event.
- Kind
- Asks first
Courses
update_course_progress- What it does
- Updates a member's progress in a lesson.
- Kind
- Asks first
create_course_lesson- What it does
- Creates a course lesson.
- Kind
- Asks first
list_course_lessons- What it does
- Lists course lessons.
- Kind
- Reads
delete_course_lesson- What it does
- Deletes a course lesson.
- Kind
- Asks first
get_course_lesson- What it does
- Shows a course lesson.
- Kind
- Reads
update_course_lesson- What it does
- Updates a course lesson.
- Kind
- Asks first
reorder_course_lessons- What it does
- Reorders course lessons.
- Kind
- Asks first
create_course_section- What it does
- Creates a course section.
- Kind
- Asks first
list_course_sections- What it does
- Lists course sections.
- Kind
- Reads
delete_course_section- What it does
- Deletes a course section.
- Kind
- Asks first
get_course_section- What it does
- Shows a course section.
- Kind
- Reads
update_course_section- What it does
- Updates a course section.
- Kind
- Asks first
Forms and the leaderboard
delete_form- What it does
- Deletes a form.
- Kind
- Asks first
get_form- What it does
- Shows a form.
- Kind
- Reads
update_form- What it does
- Updates a form.
- Kind
- Asks first
duplicate_form- What it does
- Duplicates a form.
- Kind
- Asks first
list_forms- What it does
- Lists forms.
- Kind
- Reads
create_form_submission- What it does
- Creates a form submission.
- Kind
- Asks first
get_form_submissions- What it does
- Lists form submissions.
- Kind
- Reads
get_leaderboard- What it does
- Shows a leaderboard.
- Kind
- Reads
Paywalls, payments and affiliates
export_community_member_charges- What it does
- Exports member charges.
- Kind
- Asks first
list_charges- What it does
- Lists member charges.
- Kind
- Reads
refund_community_member_charge- What it does
- Refunds a member charge.
- Kind
- Asks first
cancel_community_member_subscription- What it does
- Cancels a member's subscription.
- Kind
- Asks first
export_community_member_subscriptions- What it does
- Exports member subscriptions.
- Kind
- Asks first
list_subscriptions- What it does
- Lists member subscriptions.
- Kind
- Reads
resume_community_member_subscription- What it does
- Resumes a member's subscription.
- Kind
- Asks first
get_payment_method_settings- What it does
- Reads your community's payment method settings.
- Kind
- Reads
export_paywall_affiliate_payouts- What it does
- Exports paywall affiliate payouts.
- Kind
- Asks first
mark_paywall_affiliate_payouts_paid- What it does
- Marks affiliate payouts as paid.
- Kind
- Asks first
start_paywall_affiliate_payouts- What it does
- Starts paying out your affiliates.
- Kind
- Asks first
list_paywall_affiliates- What it does
- Lists your paywall affiliates.
- Kind
- Reads
invite_paywall_affiliates- What it does
- Invites paywall affiliates.
- Kind
- Asks first
update_paywall_affiliate- What it does
- Updates a paywall affiliate.
- Kind
- Asks first
delete_paywall_coupon- What it does
- Deletes a paywall coupon.
- Kind
- Asks first
create_paywall_group- What it does
- Creates a subscription group.
- Kind
- Asks first
update_paywall_group- What it does
- Updates a subscription group.
- Kind
- Asks first
search_paywalls- What it does
- Searches paywalls.
- Kind
- Reads
delete_paywall- What it does
- Deletes a paywall.
- Kind
- Asks first
archive_paywall- What it does
- Archives a paywall.
- Kind
- Asks first
publish_paywall- What it does
- Publishes a paywall.
- Kind
- Asks first
unarchive_paywall- What it does
- Unarchives a paywall.
- Kind
- Asks first
get_tax_settings- What it does
- Reads tax settings.
- Kind
- Reads
update_tax_settings- What it does
- Updates tax settings.
- Kind
- Asks first
Workflows
activate_workflow- What it does
- Turns on a workflow, which can start messaging people.
- Kind
- Asks first
deactivate_workflow- What it does
- Turns off a workflow.
- Kind
- Asks first
duplicate_workflow- What it does
- Duplicates a workflow.
- Kind
- Asks first
list_workflows- What it does
- Lists your workflows.
- Kind
- Reads
get_workflow- What it does
- Reads a workflow.
- Kind
- Reads
Community settings and your accounts
get_community- What it does
- Reads community details.
- Kind
- Reads
update_community- What it does
- Updates a community.
- Kind
- Asks first
search_locations- What it does
- Searches locations.
- Kind
- Reads
get_connect_settings- What it does
- Reads connect settings.
- Kind
- Reads
update_connect_settings- What it does
- Updates connect settings.
- Kind
- Asks first
list_accounts- What it does
- Lists the communities you've set up, without their tokens.
- Kind
- Reads
Is the Circle MCP server safe?
A post, an invite or a message reaches real members, and paywall changes touch real money. So 104 tools ask first: every change to members, access, spaces, posts, events, courses, forms, paywalls and workflows, and every message and export. They're the ones marked "Asks first" in the tool tables above.
Reading your community never asks, because it changes nothing, though each read still counts against your monthly allowance.
When your AI calls one of them, the call needs a yes first. Where you use it decides who gives it:
- Claude Code (2.1.246 and later) asks you before every call, in every one of its permission modes.
- An app that can show forms asks you in a form.
- Any other app takes your AI's
confirm: trueas the yes, so tell your AI to check with you first. - An agent with no person to ask needs
CIRCLE_CONFIRM=model, so itsconfirm: truecounts in every app. - In a terminal, you add
--confirmto the command.
If the answer is no, nothing reaches Circle.
Make it read-only
Set CIRCLE_READ_ONLY=1 and every tool that asks first disappears from the tool list, leaving 66 reading tools.
Keep a log of every write
Set CIRCLE_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked, with what it was about to do and who approved it.
Watch out: Posts, comments and messages are written by your members, and one can try to give your AI orders. Treat them as data, and use CIRCLE_READ_ONLY=1 for an agent working on its own.
Your data
Your requests go straight to Circle, with no server of ours in between and no tracking. Your token stays in your app's config, your shell or your token file.
Members, charges and form submissions are personal data, so keep exports and their download links private.
To cut access, revoke the token under Developers, then Tokens, and remove the server from your app's config.
Connect more than one Circle community
Each token belongs to one community, so each community is its own account here. Set CIRCLE_ACCOUNTS to a JSON list with a name and a token, or a token file, for each community, and CIRCLE_DEFAULT_ACCOUNT to the one that acts when a tool names none. Every tool takes an optional account.
A community never borrows another one's token, so a change meant for one can't land in the other.
Circle MCP server settings
Every setting is an environment variable, in your app's config or your shell.
CIRCLE_API_TOKEN- Default
- none
- What it does
- Holds your Admin V2 token
CIRCLE_TOKEN_FILE- Default
- none
- What it does
- Points at a private file holding the token, instead
CIRCLE_AUTH_SCHEME- Default
Token- What it does
Bearersends the token the way Circle's quick start shows
CIRCLE_ACCOUNTS- Default
- none
- What it does
- Lists several communities, as JSON
CIRCLE_DEFAULT_ACCOUNT- Default
- the first one
- What it does
- Picks the community that acts when a tool names none
CIRCLE_REQUEST_TIMEOUT_MS- Default
30000- What it does
- Gives up on a Circle request after this many milliseconds
CIRCLE_MIN_REQUEST_INTERVAL_MS- Default
200- What it does
- Waits this many milliseconds between requests
CIRCLE_MAX_RETRIES- Default
2- What it does
- Retries a rate-limited read this many times, and never a write
CIRCLE_READ_ONLY- Default
- off
- What it does
1hides every tool that changes something
CIRCLE_ALLOW_DESTRUCTIVE- Default
- on
- What it does
0refuses the tools that ask first
CIRCLE_AUDIT_LOG- Default
- none
- What it does
- Names a file that gets one line per attempted write
CIRCLE_SURFACE- Default
full- What it does
searchlists three tools that find, describe and run the rest
CIRCLE_TOOL_TIMEOUT_MS- Default
- none
- What it does
- Gives up on any tool after this many milliseconds
CIRCLE_CONFIRM- Default
human- What it does
modellets your AI'sconfirm: trueapprove on its own, for an agent with no person to ask
CIRCLE_HTTP_PORT- Default
8787- What it does
- Sets the port for
--http
CIRCLE_HTTP_HOST- Default
127.0.0.1- What it does
- Sets the address for
--http, and any other needs a token
CIRCLE_HTTP_TOKEN- Default
- none
- What it does
- Sets the bearer token every
--httprequest needs
CIRCLE_HTTP_ALLOWED_ORIGINS- Default
- none
- What it does
- Lists other websites allowed to call
--http, comma separated
CIRCLE_DEBUG- Default
- off
- What it does
1prints debug lines
Troubleshooting
Run the doctor first. It names the step that failed and the fix.
| What you see | What to do |
|---|---|
| Every request fails with 401 | Set CIRCLE_AUTH_SCHEME=Bearer, and check that the token is an Admin V2 token |
| A 403 error | Your plan or your admin role doesn't allow that tool |
| A post or message is refused | A post needs a Tiptap document, and a message needs exactly one recipient: an email, a list of emails or a chat room |
| A workflow ID is refused | Workflows use their long IDs from the workflow list, not numbers |
| A 429 error | You're over 2,000 requests in 5 minutes, or past your monthly allowance. Wait, and read fewer pages |
| An upload didn't finish | The upload slot is only the first step. Upload the file to the link it returned |
| "…so it will not run without confirm: true" | That's the safety check working. Approve it when your app asks |
If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.
More free tools for your community
Teach your courses on Teachable, or email your members with Kit.
Free tools
FAQs about the Circle MCP server & CLI
Here are the questions people ask most about the Circle MCP server and CLI.
The Circle MCP server & CLI is a free, open source program that lets an AI app like Claude, Codex or Cursor manage your Circle community.
It has 170 tools for members, spaces, posts, events, courses, paywalls, messages and workflows, and the same tools run as a CLI that agents like Claude Code and Codex use, or that you type yourself.
An MCP server is a standard way to give an AI app real access to a tool, so it can act instead of guessing.
MCP stands for Model Context Protocol, and Claude, Codex, Cursor and many other AI apps speak it.
Every server I've made is on my MCP servers page.
The Circle CLI is the same program as the Circle MCP server, run as commands.
AI agents like Claude Code, Codex and OpenCode run them for you, and you can type them in a terminal or a script.
One npm package installs both.
Use the Circle MCP server in an AI app with no terminal, like Claude Desktop's chat, and the CLI in a terminal, a script or a cron job.
In an AI app that can run commands, like Claude Code, Codex or Cursor, the CLI is the lighter choice, because it costs nothing until it runs.
Yes, the Circle MCP server is free and open source under the AGPL-3.0-or-later license.
Circle's Admin API comes with its Business plan and up, with a monthly request allowance that grows with the plan.
You need the Business plan or higher, because Circle's Admin API comes with those plans.
Business includes 5,000 requests a month, and higher plans include more.
No, a new post starts as a draft, and publishing it is a separate change that asks first.
Yes, adding a member sends an invitation unless you skip it.
Messages, comments and event reminders can reach people too, so they all ask first.
Yes, the Circle MCP server connects as many communities as you set up in CIRCLE_ACCOUNTS, each with its own token.
Every tool takes an optional account, and a community never borrows another one's token.
To disconnect the Circle MCP server, revoke its token under Developers, then Tokens, which cuts access right away.
Then remove the server from your AI app's config.
The Circle MCP server works with any app that speaks MCP.
That includes Claude Code, Claude Desktop, Codex, Cursor, VS Code, Windsurf, Zed, Cline, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Antigravity and Hermes.
I did.
I'm Navid Moazzez, and I made the Circle MCP server & CLI as one of my free tools on navid.me.
You can read more about me.
The code is on GitHub under the AGPL-3.0-or-later license, and the package is on npm.
More MCP servers & CLIs
Related free tools
Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Read the affiliate disclaimer.
On this page
The most actionable AI newsletter for founders
Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.
No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.
P.S. Sign up now to get free access to my ultimate AI tools guide for creators.
