A Python library for programmatically managing Claude Desktop's configurations.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_desktop_config-0.2.1.tar.gz.
File metadata
- Download URL: claude_desktop_config-0.2.1.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f80638871bfbcb1089e1facd79b1c2bbc4017c6652d706cf5f9d6c3233b76801
|
|
| MD5 |
ffdd9ada619ef425f510c1faeff4e0c0
|
|
| BLAKE2b-256 |
5a34c72cdf566afd0b4bb9b8c62d7b16e25f265b28c05367218bebd796f4686c
|
File details
Details for the file claude_desktop_config-0.2.1-py3-none-any.whl.
File metadata
- Download URL: claude_desktop_config-0.2.1-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6d430dd44c7576bfefa6a65a3bb8ba82e0b4673113ea5fd3361f37ab18fd327
|
|
| MD5 |
d6a54fc4cca50c30b65856dac4113aea
|
|
| BLAKE2b-256 |
4c375ffda702bd87ce4312ec81dc1f2ed75bf942f58b64949e908704e16905db
|