Skip to main content
Glama

MCP Clipboard Server

Go Version License: MIT MCP Compatible

A high-performance, lock-free Model Context Protocol (MCP) server that provides clipboard access for AI assistants. Specifically designed to solve the VSCode + WSL2 image clipboard limitation when using Claude.

๐ŸŽฏ Problem Solved

VSCode + WSL2 + Claude Image Clipboard Issue: When running Claude in VSCode on Windows with WSL2, pasting images from the clipboard doesn't work due to the sandboxed environment. This MCP server provides a bridge to access Windows clipboard content (including images) from within the WSL2 environment.

โœจ Features

  • ๐Ÿ”’ Lock-free concurrent design - High performance with zero race conditions

  • ๐Ÿ–ผ๏ธ Image clipboard support - PNG, JPEG, GIF, WebP, BMP detection and handling

  • ๐Ÿ›ก๏ธ WSL2 compatibility - Seamless Windows clipboard access from WSL2

  • ๐Ÿ“ Large content handling - Automatic temp file creation for content >25KB

  • ๐Ÿ”„ Real-time monitoring - Clipboard change notifications

  • ๐Ÿงน Smart cleanup - TTL-based temp file management

  • ๐Ÿš€ Race condition free - Comprehensive atomic operations and CAS loops

  • ๐Ÿ” Rich debugging - Detailed error context and optional debug logging

๐Ÿš€ Quick Start

NPM Installation (Recommended)

npm install -g @standardbeagle/mcp-clip

Go Installation

go install github.com/standardbeagle/mcp-clip@latest

Manual Installation

git clone https://github.com/standardbeagle/mcp-clip.git cd mcp-clip go build -o mcp-clip sudo cp mcp-clip /usr/local/bin/

๐Ÿ“‹ Claude Desktop Configuration

Add to your Claude Desktop claude_desktop_config.json:

{ "mcpServers": { "clipboard": { "command": "mcp-clip", "args": [] } } }

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

๐Ÿ”ง VSCode + WSL2 Setup

1. Install in WSL2

# In your WSL2 terminal npm install -g @standardbeagle/mcp-clip

2. Configure Claude Code Extension

Add to your VSCode settings or workspace .vscode/settings.json:

{ "claude-dev.mcpServers": { "clipboard": { "command": "mcp-clip", "args": [] } } }

3. WSL2 PowerShell Access

Ensure PowerShell is accessible from WSL2:

# Test PowerShell access /mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command "Get-Clipboard"

๐Ÿ› ๏ธ Available Tools

read_clipboard

Reads current clipboard content with automatic format detection.

Example usage in Claude:

"Read my clipboard and analyze the content"

Supported formats:

  • Plain text

  • Images (PNG, JPEG, GIF, WebP, BMP)

  • Binary data (base64 encoded)

Large content handling:

  • Content >25KB automatically saved to temp files

  • Images always saved as files with proper extensions

  • File paths provided for external access

๐Ÿ“Š Resource Notifications

The server sends real-time notifications when clipboard content changes:

{ "method": "notifications/resources/updated", "params": { "uri": "clipboard://current" } }

This allows Claude to proactively know when new content is available without polling.

โš™๏ธ Configuration

Environment Variables

  • MCP_DEBUG=1 - Enable detailed debug logging

  • MCP_CLEANUP_TTL=2h - Set temp file cleanup TTL (default: 1h)

Debug Mode

MCP_DEBUG=1 mcp-clip

Shows detailed information about:

  • Clipboard monitoring status

  • Temp file creation and cleanup

  • WSL2 PowerShell integration

  • Race condition fallbacks (extremely rare)

๐Ÿงช Testing

Test Installation

mcp-clip test

Development Testing

# Run tests with race detector go test -race -v ./... # Build with race detector go build -race .

๐Ÿ—๏ธ Architecture

Lock-Free Design

  • Atomic operations for all shared state

  • Compare-and-swap loops with retry limits

  • Zero mutexes in hot paths

  • Race-condition free under all loads

Concurrency Safety

  • Atomic clipboard state updates

  • Thread-safe session file tracking

  • Graceful shutdown with cleanup

  • TOCTOU-safe temp file creation

Platform Integration

  • WSL2: PowerShell bridge for Windows clipboard

  • Linux: Direct clipboard integration via atotto/clipboard

  • macOS: Native clipboard support

  • Windows: Native clipboard support

๐Ÿ”ง Troubleshooting

WSL2 Issues

PowerShell not found:

# Install Windows PowerShell in WSL2 sudo apt update && sudo apt install powershell

Permission denied:

# Add Windows PowerShell to PATH echo 'export PATH="/mnt/c/Windows/System32/WindowsPowerShell/v1.0:$PATH"' >> ~/.bashrc source ~/.bashrc

Clipboard empty in WSL2:

# Test Windows clipboard access powershell.exe "Get-Clipboard"

General Issues

MCP connection failed:

  • Verify mcp-clip is in your PATH

  • Check Claude Desktop config JSON syntax

  • Restart Claude Desktop after config changes

Large images not working:

  • Check available disk space in temp directory

  • Verify temp directory permissions

  • Enable debug mode: MCP_DEBUG=1

Performance issues:

  • Monitor with debug mode enabled

  • Check for antivirus interference

  • Verify WSL2 resource allocation

๐Ÿ“ Development

Building from Source

git clone https://github.com/standardbeagle/mcp-clip.git cd mcp-clip go mod download go build -race .

Running Tests

go test -race -v ./...

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Run tests: go test -race -v ./...

  4. Submit a pull request

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™ Acknowledgments

๐Ÿ”— Links

-
security - not tested
A
license - permissive license
-
quality - not tested

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/standardbeagle/mcp-clip'

If you have feedback or need assistance with the MCP directory API, please join our Discord server