MCP server for CIPP (CyberDrain Improved Partner Portal) — M365 multi-tenant management, users, security, and standards for MSPs
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add cipp --env CIPP_API_URL='<CIPP_API_URL>' --env CIPP_CLIENT_ID='<CIPP_CLIENT_ID>' --env CIPP_CLIENT_SECRET='<CIPP_CLIENT_SECRET>' -- docker run -i --rm -e CIPP_API_URL -e CIPP_CLIENT_ID -e CIPP_CLIENT_SECRET ghcr.io/wyre-ai/cipp-mcp:v1.11.1~/.codex/config.toml
[mcp_servers.cipp]
command = "docker"
args = ["run", "-i", "--rm", "-e", "CIPP_API_URL", "-e", "CIPP_CLIENT_ID", "-e", "CIPP_CLIENT_SECRET", "ghcr.io/wyre-ai/cipp-mcp:v1.11.1"]
env = { CIPP_API_URL = "<CIPP_API_URL>", CIPP_CLIENT_ID = "<CIPP_CLIENT_ID>", CIPP_CLIENT_SECRET = "<CIPP_CLIENT_SECRET>" }
# codex mcp add cipp --env CIPP_API_URL='<CIPP_API_URL>' --env CIPP_CLIENT_ID='<CIPP_CLIENT_ID>' --env CIPP_CLIENT_SECRET='<CIPP_CLIENT_SECRET>' -- docker run -i --rm -e CIPP_API_URL -e CIPP_CLIENT_ID -e CIPP_CLIENT_SECRET ghcr.io/wyre-ai/cipp-mcp:v1.11.1~/.cursor/mcp.json
{
"mcpServers": {
"cipp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CIPP_API_URL",
"-e",
"CIPP_CLIENT_ID",
"-e",
"CIPP_CLIENT_SECRET",
"ghcr.io/wyre-ai/cipp-mcp:v1.11.1"
],
"env": {
"CIPP_API_URL": "<CIPP_API_URL>",
"CIPP_CLIENT_ID": "<CIPP_CLIENT_ID>",
"CIPP_CLIENT_SECRET": "<CIPP_CLIENT_SECRET>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"cipp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CIPP_API_URL",
"-e",
"CIPP_CLIENT_ID",
"-e",
"CIPP_CLIENT_SECRET",
"ghcr.io/wyre-ai/cipp-mcp:v1.11.1"
],
"env": {
"CIPP_API_URL": "<CIPP_API_URL>",
"CIPP_CLIENT_ID": "<CIPP_CLIENT_ID>",
"CIPP_CLIENT_SECRET": "<CIPP_CLIENT_SECRET>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"cipp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CIPP_API_URL",
"-e",
"CIPP_CLIENT_ID",
"-e",
"CIPP_CLIENT_SECRET",
"ghcr.io/wyre-ai/cipp-mcp:v1.11.1"
],
"env": {
"CIPP_API_URL": "<CIPP_API_URL>",
"CIPP_CLIENT_ID": "<CIPP_CLIENT_ID>",
"CIPP_CLIENT_SECRET": "<CIPP_CLIENT_SECRET>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"cipp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CIPP_API_URL",
"-e",
"CIPP_CLIENT_ID",
"-e",
"CIPP_CLIENT_SECRET",
"ghcr.io/wyre-ai/cipp-mcp:v1.11.1"
],
"env": {
"CIPP_API_URL": "<CIPP_API_URL>",
"CIPP_CLIENT_ID": "<CIPP_CLIENT_ID>",
"CIPP_CLIENT_SECRET": "<CIPP_CLIENT_SECRET>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"cipp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CIPP_API_URL",
"-e",
"CIPP_CLIENT_ID",
"-e",
"CIPP_CLIENT_SECRET",
"ghcr.io/wyre-ai/cipp-mcp:v1.11.1"
],
"env": {
"CIPP_API_URL": "<CIPP_API_URL>",
"CIPP_CLIENT_ID": "<CIPP_CLIENT_ID>",
"CIPP_CLIENT_SECRET": "<CIPP_CLIENT_SECRET>"
}
}
}
}Environment variables
CIPP_API_URLCIPP_CLIENT_IDCIPP_CLIENT_SECRET
Replace the placeholders with your own credentials and keep them out of version control.