# Installation Guide This guide covers different installation methods for mcp-claude-code and how to configure it with Claude Desktop. ## Requirements - Python 3.12 or later - Claude Desktop application - Optional: [ripgrep](https://github.com/BurntSushi/ripgrep) for enhanced search performance ## Installation Methods ### Method 1: Using uvx (Recommended) The simplest way to use mcp-claude-code is with `uvx`, which runs the package without permanent installation: ```bash uvx --from mcp-claude-code claudecode --install ``` > I highly recommend that you set projects one by one to gain more efficient system prompt generation experience. This command will automatically configure Claude Desktop for you. For manual configuration: ```json { "mcpServers": { "claude-code": { "command": "uvx", "args": [ "--from", "mcp-claude-code", "claudecode", "--allow-path", "/path/allow", "--project", "/path/project1", "--project", "/path/project2" ] } } } ``` ### Method 2: Using pip/uv Install the package globally or in a virtual environment: ```bash # Using pip pip install mcp-claude-code # Using uv (recommended) uv pip install mcp-claude-code ``` Then use the automatic installer: ```bash claudecode --install --allow-path /path/allow ``` Or configure Claude Desktop manually: ```json { "mcpServers": { "claude-code": { "command": "claudecode", "args": ["--allow-path", "/path/allow"] } } } ``` ### Method 3: Development Installation For development or local modifications: ```bash # Clone the repository git clone https://github.com/SDGLBL/mcp-claude-code.git cd mcp-claude-code # Create virtual environment and install make venv make install-dev # Activate virtual environment source .venv/bin/activate # On macOS/Linux # .venv\Scripts\activate # On Windows # Use the installer claudecode --install --allow-path /path/allow ``` Or use Python module syntax: ```json { "mcpServers": { "claude-code": { "command": "python", "args": ["-m", "mcp_claude_code.cli", "--allow-path", "/path/allow"] } } } ``` ## Configuration Options ### Basic Configuration The minimum required configuration: ```json { "mcpServers": { "claude-code": { "command": "claudecode", "args": ["--allow-path", "/path/allow"] } } } ``` ### Advanced Configuration Full configuration with all available options: ```json { "mcpServers": { "claude-code": { "command": "claudecode", "args": [ "--allow-path", "/path/to/project1", "--allow-path", "/path/to/project2", "--project", "/path/to/project1", "--project", "/path/to/project2", "--name", "custom-claude-code", "--transport", "stdio", "--command-timeout", "180", "--enable-agent-tool", "--agent-model", "openai/gpt-4o", "--agent-max-tokens", "100000", "--agent-api-key", "your-api-key-here", "--agent-base-url", "http://localhost:1234/v1", "--agent-max-iterations", "10", "--agent-max-tool-uses", "30" ] } } } ``` ### Configuration Parameters | Parameter | Type | Default | Description | | ------------------------ | ------- | ----------------- | ----------------------------------------------------------------------------------------- | | `--allow-path` | string | current directory | Directory path to allow access (can be specified multiple times) | | `--project` | string | - | Project path for prompt generation (can be specified multiple times **Highly Recommend**) | | `--name` | string | "claude-code" | Name of the MCP server | | `--transport` | choice | "stdio" | Transport protocol ("stdio" or "sse") | | `--command-timeout` | float | 120.0 | Default timeout for command execution in seconds | | `--enable-agent-tool` | flag | false | Enable the agent tool functionality | | `--agent-model` | string | - | Model name in LiteLLM format (e.g., "openai/gpt-4o") | | `--agent-max-tokens` | integer | - | Maximum tokens for agent responses | | `--agent-api-key` | string | - | API key for the LLM provider | | `--agent-base-url` | string | - | Base URL for the LLM provider API endpoint | | `--agent-max-iterations` | integer | 10 | Maximum number of iterations for agent | | `--agent-max-tool-uses` | integer | 30 | Maximum number of total tool uses for agent | ### Project Paths vs Allow Paths - **`--allow-path`**: Controls which directories the server can access for file operations - **`--project`**: Generates project-specific prompts with git info, directory structure, and environment details The `--project` argument enables automatic generation of comprehensive system prompts that include: - Git repository information (current branch, recent commits, status) - Directory structure overview - Operating system details - Project-specific context for better assistance You can specify multiple projects to generate prompts for each one. ## Agent Tool Configuration The agent tool allows Claude to delegate tasks to specialized sub-agents. It's disabled by default and requires additional configuration. ### Enabling Agent Tool To enable the agent tool, you need: 1. Add `--enable-agent-tool` to your configuration 2. Configure an LLM provider with API key ### Supported LLM Providers The agent tool uses LiteLLM format for model specification: #### OpenAI Models ```bash --agent-model "openai/gpt-4o" --agent-model "openai/gpt-4o-mini" --agent-api-key "your-openai-api-key" ``` #### Anthropic Models ```bash --agent-model "anthropic/claude-3-5-sonnet-20241022" --agent-api-key "your-anthropic-api-key" ``` #### Google Models (via OpenRouter) ```bash --agent-model "openrouter/google/gemini-2.0-flash-exp" --agent-api-key "your-openrouter-api-key" ``` #### Local/Custom Models ```bash --agent-model "openai/gpt-4o" # or any compatible model name --agent-base-url "http://localhost:1234/v1" --agent-api-key "local-key" # often not needed for local ``` ### Environment Variables Instead of command-line arguments, you can use environment variables: | Environment Variable | Description | | -------------------- | ------------------------------------ | | `AGENT_MODEL` | Default model name | | `AGENT_PROVIDER` | Default provider prefix | | `AGENT_MAX_TOKENS` | Maximum tokens for model responses | | `OPENAI_API_KEY` | OpenAI API key | | `ANTHROPIC_API_KEY` | Anthropic API key | | `AGENT_TEMPERATURE` | Model temperature (default: 0.7) | | `AGENT_API_TIMEOUT` | API timeout in seconds (default: 60) | ## Claude Desktop Configuration Locations The configuration file locations vary by operating system: - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` - **Linux**: `~/.config/claude/claude_desktop_config.json` ## Performance Optimization ### Install ripgrep For faster file searches, install [ripgrep](https://github.com/BurntSushi/ripgrep): ```bash # macOS brew install ripgrep # Ubuntu/Debian sudo apt install ripgrep # Windows (using Chocolatey) choco install ripgrep # Or download from: https://github.com/BurntSushi/ripgrep/releases ``` ### Timeout Configuration Adjust command timeout for large operations: ```json { "mcpServers": { "claude-code": { "command": "claudecode", "args": ["--command-timeout", "300", "--allow-path", "/path/to/project"] } } } ``` ## Troubleshooting ### Common Issues 1. **Permission Errors**: Ensure the specified paths in `--allow-path` exist and are accessible 2. **Command Not Found**: Make sure the installation method puts `claudecode` in your PATH 3. **Agent Tool Not Working**: Verify the API key and model name are correct 4. **Claude Desktop Not Recognizing Server**: Restart Claude Desktop after configuration changes ### Verification Test your installation: ```bash # Check if the command works claudecode --help # Test with a simple allowed path claudecode --allow-path /tmp ``` ### Debug Mode For troubleshooting, you can run the server directly: ```bash # Run with verbose output python -m mcp_claude_code.cli --allow-path /path/to/project --transport stdio ``` ## Development and Testing For development work: ```bash # Install development dependencies make install-dev # Run tests make test # Run with coverage make test-cov # Lint code make lint # Format code make format ``` ## Next Steps After installation: 1. Restart Claude Desktop 2. Verify the server appears in Claude Desktop's MCP servers list 3. Test basic functionality by asking Claude to list files in your project