This guide provides everything you need to install and start using MCP DevOps On-Premise with your AI assistant.
Before you begin, make sure the following are ready:
https://<server>/<organization>/<project>)First, check whether Python is already installed. Open a Command Prompt (cmd) or PowerShell and enter:
python --version
or the short form:
python -V
Both commands display the installed Python version. If Python 3.10 or later is shown, you can skip the installation below.
If Python is not installed or the version is too old, download it from python.org.
Windows: Check “Add Python to PATH” during installation.
pipis included with Python, so no separate install is needed.
uv is a fast Python package manager that powers the one-click installs and the ephemeral server launch.
Windows users: Open Command Prompt (
cmd) or PowerShell to run all commands in this guide.
First, check whether uv is already installed:
uv --version
This will return the version number if uv is already available. If the command is not found, install uv:
pip install uv
More info: uv documentation
The server supports three authentication methods. If you are unsure which one works in your environment, start with NTLM because it is the most common for on-prem/VPN setups. NTLM is usually the simplest first setup and is also the fallback if other methods do not work. Test the server with NTLM first, then switch to PAT or OAuth if your environment supports them.
| Method | When to use |
|---|---|
| NTLM (username + password) | Corporate network, VPN, Windows / Active Directory auth. Recommended for first setup and fallback. |
| PAT (Personal Access Token) | Use when PATs are enabled and allowed. Good when you do not want to store your account password in config. |
| OAuth Bearer Token | Advanced / CI/CD only; requires OAuth 2.0 configured on your DevOps Server |
Typical for on-premises Azure DevOps Server accessed via VPN or Windows Authentication.
| Variable | Value |
|---|---|
DEVOPS_USERNAME |
DOMAIN\your-username |
DEVOPS_PASSWORD |
Your Windows / Active Directory password |
PAT is simpler to configure but may not work if your on-prem server blocks token-based access or requires VPN + NTLM.
To create a PAT: open your DevOps profile → Personal access tokens → New token.
See: Microsoft docs: Create a PAT
Important PAT notes:
| Variable | Value |
|---|---|
DEVOPS_PAT |
Your personal access token |
DEVOPS_USERNAME |
(optional) Your username |
OAuth Bearer tokens work only if your on-prem Azure DevOps Server has OAuth 2.0 configured, which is uncommon in standard on-prem setups. This method is mainly useful for automated pipelines that receive short-lived tokens from an identity provider.
Where to get an OAuth bearer token:
If you do not know how to obtain this token in your environment, ask your DevOps administrator and use NTLM first.
| Variable | Value |
|---|---|
DEVOPS_TOKEN |
Your OAuth Bearer token |
If you are unsure whether OAuth is available in your environment, use NTLM or PAT instead.
Click one of the buttons below to install directly in your IDE. You will be prompted for credentials:
The following AI tools support manual MCP server configuration. Select your tool for step-by-step instructions:
In most cases you do not need to install the server separately because the IDE integrations above handle this automatically via uvx. If you need to run or test the server outside an IDE:
Ephemeral (recommended, no permanent install):
uvx mcp-devops-onpremise@latest
Permanent install:
pip install mcp-devops-onpremise
The DEVOPS_API_URL must point to your full project URL:
https://<your-devops-server>/<organization>/<project>
This server supports two connection interfaces:
| Interface | When to use it | Recommended for end users | How it is configured |
|---|---|---|---|
stdio |
Normal IDE or MCP client integration. The client starts the server process itself. | Yes | Configure command, args, and env |
streamable-http / http |
Local development, debugging, or manual testing when you want the server listening on a fixed host and port. | Usually no | Start the server separately, then configure the client with a URL |
For most users, use stdio. It is the default MCP deployment model and avoids managing a separate background server process.
Use HTTP only when you explicitly want to run the server yourself, for example while developing locally, testing with a fixed port, or inspecting traffic. For normal end-user IDE setup, HTTP adds an extra process to manage and is usually not necessary.
Authentication works the same way for both interfaces: the server process must receive the right DEVOPS_* environment variables. The difference is only where those variables are configured.
stdio with NTLMUse this for normal local IDE usage in on-prem or VPN environments.
{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_USERNAME": "DOMAIN\\your-username",
"DEVOPS_PASSWORD": "your-password"
}
}
}
}
stdio with PATUse this when PAT authentication is enabled in your environment.
{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_PAT": "your-personal-access-token"
}
}
}
}
stdio with OAuth bearer tokenUse this mainly for advanced automated environments where an OAuth token is already provided.
{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_TOKEN": "your-oauth-bearer-token"
}
}
}
}
Use this for local development or test only. Start the server yourself:
$env:DEVOPS_API_URL="https://your-devops-server/your-organization/your-project"
$env:DEVOPS_USERNAME="DOMAIN\your-username"
$env:DEVOPS_PASSWORD="your-password"
uv run --directory <project-dir> mcp-devops-onpremise --transport http --host 127.0.0.1 --port 8000
Then configure the MCP client to connect to that URL:
{
"servers": {
"DevOpsOnPremise": {
"type": "http",
"url": "http://127.0.0.1:8000"
}
}
}
Use the same HTTP client config, but start the server with PAT credentials in its environment:
$env:DEVOPS_API_URL="https://your-devops-server/your-organization/your-project"
$env:DEVOPS_PAT="your-personal-access-token"
uv run --directory <project-dir> mcp-devops-onpremise --transport http --host 127.0.0.1 --port 8000
Client configuration:
{
"servers": {
"DevOpsOnPremise": {
"type": "http",
"url": "http://127.0.0.1:8000"
}
}
}
Again, the client still only needs the URL. The token must exist in the server process environment:
$env:DEVOPS_API_URL="https://your-devops-server/your-organization/your-project"
$env:DEVOPS_TOKEN="your-oauth-bearer-token"
uv run --directory <project-dir> mcp-devops-onpremise --transport http --host 127.0.0.1 --port 8000
Client configuration:
{
"servers": {
"DevOpsOnPremise": {
"type": "http",
"url": "http://127.0.0.1:8000"
}
}
}
stdio.DEVOPS_* authentication variables where the server process is started, not in the MCP client URL configuration.stdio, put DEVOPS_* authentication variables in the MCP client server entry.stdio.{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_USERNAME": "DOMAIN\\your-username",
"DEVOPS_PASSWORD": "your-password"
}
}
}
}
{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_PAT": "your-personal-access-token"
}
}
}
}
{
"mcpServers": {
"devops-onprem": {
"command": "uvx",
"args": ["mcp-devops-onpremise@latest"],
"env": {
"DEVOPS_API_URL": "https://your-devops-server/your-organization/your-project",
"DEVOPS_TOKEN": "your-oauth-bearer-token"
}
}
}
}
If you used a permanent install, replace
"command": "uvx"with"command": "mcp-devops-onpremise"and remove the"args"line.
After saving your MCP configuration:
devops-onprem server appears in the available tools list.If tools are visible and respond, setup is complete.
uvx @latest)If you use uvx mcp-devops-onpremise@latest (the default for all quick-install and configuration examples in this guide), no action is needed. uvx checks PyPI for the latest version on every run and updates automatically.
pip install)If you installed the server permanently outside an IDE, update it with:
pip install --upgrade mcp-devops-onpremise
Visit the releases page on GitHub or the CHANGELOG.
NTLM authentication requires the MD4 hash algorithm, which is not included in all Python environments. If you encounter an MD4-related error, install pycryptodome:
pip install pycryptodome
Skip this step if you use PAT or OAuth.