Configure MCP (Model Context Protocol) servers for Claude Code and Claude Desktop. Covers mcptools setup, Hugging Face integration, WSL path handling, and multi-client configuration. Use when setting up Claude Code to connect to R via mcptools, configuring Claude Desktop with MCP servers, adding Hugging Face or other remote MCP servers, or troubleshooting MCP connectivity between clients and servers.
Set up MCP server connections for Claude Code (WSL) and Claude Desktop (Windows).
For R (mcptools):
install.packages("remotes")
remotes::install_github("posit-dev/mcptools")
For Hugging Face:
npm install -g mcp-remote
Expected: mcptools installs from GitHub and loads in R without errors. mcp-remote is available globally via which mcp-remote or npm list -g mcp-remote.
On failure: For mcptools, ensure remotes is installed first. If GitHub rate-limits the install, set a GITHUB_PAT in ~/.Renviron. For mcp-remote, verify Node.js and npm are installed and on PATH.
R mcptools server:
claude mcp add r-mcptools stdio \
"/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe" \
-- -e "mcptools::mcp_server()"
Hugging Face server:
claude mcp add hf-mcp-server \
-e HF_TOKEN=your_token_here \
-- mcp-remote https://huggingface.co/mcp
Verify configuration:
claude mcp list
claude mcp get r-mcptools
Expected: claude mcp list shows both r-mcptools and hf-mcp-server (or whichever servers were added). claude mcp get r-mcptools displays the correct command and arguments.
On failure: If the server does not appear in the list, verify ~/.claude.json contains the correct entry. If the claude command is not found, add it to PATH: export PATH="$HOME/.claude/local/node_modules/.bin:$PATH".
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"r-mcptools": {
"command": "C:\\PROGRA~1\\R\\R-45~1.0\\bin\\x64\\Rscript.exe",
"args": ["-e", "mcptools::mcp_server()"]
},
"hf-mcp-server": {
"command": "mcp-remote",
"args": ["https://huggingface.co/mcp"],
"env": {
"HF_TOKEN": "your_token_here"
}
}
}
}
Important: Use 8.3 short paths for Windows directories with spaces (PROGRA~1 not Program Files). Use environment variables for tokens, not --header arguments.
Expected: The JSON config file at %APPDATA%\Claude\claude_desktop_config.json is valid JSON with the correct server entries. Claude Desktop shows MCP server indicators after restart.
On failure: Validate the JSON with a linter (e.g., jq . < config.json). Use 8.3 short paths (PROGRA~1) if Windows path spaces cause parsing errors. Ensure Claude Desktop is fully restarted (not just minimized).
Add to project .Rprofile:
if (requireNamespace("mcptools", quietly = TRUE)) {
mcptools::mcp_session()
}
This starts the MCP session automatically when opening the project in RStudio.
Expected: The .Rprofile file conditionally starts mcptools::mcp_session() when the project is opened in RStudio, making MCP tools available automatically.
On failure: If mcptools is not found at session start, verify it is installed in the library that RStudio uses (check .libPaths()). If using renv, ensure mcptools is in the renv library.
Test R MCP from WSL:
"/mnt/c/Program Files/R/R-4.5.0/bin/Rscript.exe" -e "mcptools::mcp_server()"
Test from within Claude Code:
Start Claude Code and use MCP tools — they should appear in the tool list.
Test Claude Desktop:
Restart Claude Desktop after configuration changes. Check for MCP server indicators in the UI.
Expected: Running Rscript with mcptools::mcp_server() produces output without errors. MCP tools appear in the Claude Code tool list during an active session. Claude Desktop shows server status after restart.
On failure: If the Rscript command fails, check the full path is correct (ls "/mnt/c/Program Files/R/" to verify R version). If tools don't appear in Claude Code, restart the session. For Claude Desktop, check firewall settings.
Both Claude Code and Claude Desktop support multiple MCP servers simultaneously:
# Claude Code: add multiple servers
claude mcp add r-mcptools stdio "/path/to/Rscript.exe" -- -e "mcptools::mcp_server()"
claude mcp add hf-mcp-server -e HF_TOKEN=token -- mcp-remote https://huggingface.co/mcp
claude mcp add custom-server stdio "/path/to/server" -- --port 3001
Expected: Multiple MCP servers configured and accessible simultaneously. claude mcp list shows all servers. Each server's tools are available in the same Claude Code session.
On failure: If servers conflict, check that each has a unique name in the configuration. If one server blocks others, verify servers use non-blocking I/O (stdio transport handles this automatically).
claude mcp list shows all configured servers--header "Authorization: Bearer token" fails due to parsing. Use environment variables instead.~/.claude.json vs %APPDATA%\Claude\)npx mcp-remote may fail in Claude Desktop context. Install globally with npm install -g mcp-remote.ellmer package as a dependency.build-custom-mcp-server - creating your own MCP servertroubleshoot-mcp-connection - debugging connection issuessetup-wsl-dev-environment - WSL setup prerequisiteSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer