Welcome! This guide will help you set up your environment for contributing to the CIPP-MCP project. Please follow the steps below to ensure a smooth development experience.
Install the following tools using winget (run commands in PowerShell):
-
Visual Studio Code
winget install --exact vscode
-
PowerShell 7
winget install --exact Microsoft.PowerShell
-
Git
winget install --exact Git.Git
-
Node.js v22.x LTS
winget install --exact OpenJS.NodeJS.LTS --version 22.13.0 winget pin add OpenJS.NodeJS.LTS --version 22.13.* --force -
.NET SDK 8
winget install --exact Microsoft.DotNet.SDK.8
-
.NET SDK 9
winget install --exact Microsoft.DotNet.SDK.9
-
Python 3
winget install --exact Python.Python.3.13
Some npm packages need to be installed globally. You may need to run these commands as Administrator if you encounter permission issues.
npm install --global azure-functions-core-tools@4 --unsafe-perm true
npm install --global azuriteYou’ll need both the CIPP-MCP and CIPP-API repositories as siblings in a parent folder, for example:
CIPP-Project/
├── CIPP-MCP/
└── CIPP-API/
Clone your forks into the same parent directory.
Tip:
A Git repository is a.git/folder inside a project. It tracks all changes made to files in the project. Changes are committed to the repository, building up a history of the project.
Install UV - Python package and project manager Install FastMCP - Python based Framework for local testing of MCP
pip install uv
pip install fastmcpNote: If you're on Windows ARM64 and building from source is problematic, try installing precompiled wheels:
pip install --only-binary=:all: fastmcp
- Depending on your system, you may need to run some commands as administrator.
- For more information on forking repositories, see GitHub’s guide.
CIPP-MCP runs as a Streamable HTTP MCP endpoint (remote server). This allows integration with clients that support HTTP-based MCP communication.
However, some clients—such as Claude—only communicate via stdio (standard input/output) and do not support HTTP endpoints directly. To enable local development and testing with these clients, a FastMCP Proxy is provided in the Proxy folder of this project.
- Open a terminal and navigate to the
Proxyfolder in this repository. - Make sure you can start the proxy with the following command:
python .\cipp.local_mcp.py - Press Ctrl-C to exit. Claude will invoke the proxy when it starts.
To use CIPP-MCP with Claude Desktop (or other stdio-based MCP clients), you need to configure Claude to launch the FastMCP Proxy as a custom MCP server.
- Install Claude Desktop if you haven't already.
- Edit your
claude_desktop_config.jsonfile to add a new MCP server entry that launches the FastMCP Proxy. You can get to the file via File -> Settings -> Developer -> Edit Config.
Example configuration:
{
"mcpServers": {
"CIPP-MCP Proxy": {
"command": "uv",
"args": [
"run",
"python",
"C:/path/to/your/CIPP-Project/CIPP-MCP/Proxy/cipp.local_mcp.py"
]
}
}
}- Replace
C:/path/to/your/CIPP-Project/CIPP-MCP/Proxywith the actual path to your Proxy folder. - Save the file and restart Claude Desktop.
Claude will now use the FastMCP Proxy to communicate with the CIPP-MCP HTTP endpoint, allowing you to test and debug locally.
Happy contributing!