Welcome to claude_desktop_config Documentation
claude_desktop_config is a Python library for programmatically managing Claude Desktop’s MCP (Model Context Protocol) server configurations. It provides a simple, Pythonic interface to add, update, and remove MCP servers in the claude_desktop_config.json file without manually editing JSON. The library handles platform-specific configuration paths automatically and ensures safe, atomic updates to maintain configuration integrity.
Usage Examples
Functional API - Add or Update an MCP Server
from claude_desktop_config.api import ClaudeDesktopConfig, enable_mcp_server
# Create config instance (auto-detects platform-specific path)
cdc = ClaudeDesktopConfig()
# Read current configuration
config = cdc.read()
# Add or update an MCP server
changed = enable_mcp_server(
config,
name="my-knowledge-base",
settings={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
)
# Write back if changed
if changed:
cdc.write(config)
Functional API - Remove an MCP Server
from claude_desktop_config.api import ClaudeDesktopConfig, disable_mcp_server
cdc = ClaudeDesktopConfig()
config = cdc.read()
# Remove a server (idempotent - no error if doesn't exist)
if disable_mcp_server(config, "my-knowledge-base"):
cdc.write(config)
Enum API - Declarative Server Management
from claude_desktop_config.api import ClaudeDesktopConfig, BaseMcpEnum, Mcp
# Define your MCP servers as an enum
class MyMcpServers(BaseMcpEnum):
filesystem = Mcp(
name="filesystem",
settings={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"]
}
)
github = Mcp(
name="github",
settings={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
)
memory = Mcp(
name="memory",
settings={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
)
# Apply desired state - this will:
# 1. Enable filesystem and github servers
# 2. Disable memory server (if it exists)
cdc = ClaudeDesktopConfig()
MyMcpServers.apply([MyMcpServers.filesystem, MyMcpServers.github], cdc)
Work with Custom Config Path
from pathlib import Path
# Use a custom configuration file path
cdc = ClaudeDesktopConfig(path=Path("/custom/path/config.json"))
# Read current configuration
current_config = cdc.read()
print(current_config)
Batch Operations with Functional API
from claude_desktop_config.api import ClaudeDesktopConfig, enable_mcp_server, disable_mcp_server
cdc = ClaudeDesktopConfig()
config = cdc.read()
# Track if any changes were made
changed = False
# Add multiple MCP servers
servers = {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
for name, settings in servers.items():
changed |= enable_mcp_server(config, name, settings)
# Remove unwanted servers
for name in ["old-server", "deprecated-server"]:
changed |= disable_mcp_server(config, name)
# Write once if any changes were made
if changed:
cdc.write(config)
Install
claude_desktop_config is released on PyPI, so all you need is to:
$ pip install claude-desktop-config
To upgrade to latest version:
$ pip install --upgrade claude-desktop-config
Metadata
Release files for claude-desktop-config 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| claude_desktop_config-0.2.1.tar.gz | 10.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| claude_desktop_config-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.2 kB
Release files / claude_desktop_config-0.2.1.tar.gz
| Download URL | claude_desktop_config-0.2.1.tar.gz |
|---|---|
| Size | 10.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f80638871bfbcb1089e1facd79b1c2bbc4017c6652d706cf5f9d6c3233b76801
|
|
BLAKE2b-256 checksum How to use checksums |
5a34c72cdf566afd0b4bb9b8c62d7b16e25f265b28c05367218bebd796f4686c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|
Release files / claude_desktop_config-0.2.1-py3-none-any.whl
| Download URL | claude_desktop_config-0.2.1-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a6d430dd44c7576bfefa6a65a3bb8ba82e0b4673113ea5fd3361f37ab18fd327
|
|
BLAKE2b-256 checksum How to use checksums |
4c375ffda702bd87ce4312ec81dc1f2ed75bf942f58b64949e908704e16905db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.8
|