An open API service indexing awesome lists of open source software.

https://github.com/kmizu/mcp-web-cam

A MCP server for using web camera
https://github.com/kmizu/mcp-web-cam

Last synced: 5 months ago
JSON representation

A MCP server for using web camera

Awesome Lists containing this project

README

          

# MCP Web Cam Server

A Model Context Protocol (MCP) server for controlling webcams. This server enables LLMs to capture photos, record videos, and manage camera settings through the MCP protocol.

## Installation as MCP Server

### For Claude Desktop App

#### Option 1: Using npx (Recommended)

Add to your Claude Desktop configuration:

**On macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**On Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
"mcpServers": {
"webcam": {
"command": "npx",
"args": [
"-y",
"@kmizu/mcp-web-cam"
]
}
}
}
```

Then restart Claude Desktop.

#### Option 2: Manual Installation

1. Install the dependencies and build:
```bash
git clone https://github.com/mizushima/mcp-web-cam.git
cd mcp-web-cam
npm install
npm run build
```

2. Add to your Claude Desktop configuration:

**On macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**On Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
"mcpServers": {
"webcam": {
"command": "node",
"args": ["/absolute/path/to/mcp-web-cam/dist/index.js"]
}
}
}
```

3. Restart Claude Desktop

### For Other MCP Clients

The server communicates via stdio, so you can run:

```bash
node /path/to/mcp-web-cam/dist/index.js
```

## Features

- **Photo Capture**: Take high-quality photos with customizable settings
- **Video Recording**: Record videos with various formats and codecs
- **Camera Management**: List available cameras and adjust settings
- **Image Processing**: Basic image manipulation capabilities
- **Cross-platform**: Supports Linux, Windows, and macOS

## Installation

### Global Installation (for use outside MCP)

```bash
npm install -g @kmizu/mcp-web-cam
```

### Local Development

```bash
npm install
npm run build
```

## Usage

### As an MCP Server

The server can be used with any MCP-compatible client:

```bash
npm start
```

### Development

```bash
npm run dev # Watch mode for development
npm run build # Build TypeScript
npm run typecheck # Type checking only
```

## Available Tools

### `select_camera`
Open a modern web UI to select from available cameras with live preview.

**Features:**
- Live preview of all connected cameras
- WebRTC-based preview when available
- Fallback to snapshot mode for compatibility
- Persistent camera selection

### `get_current_camera`
Get the currently selected camera device.

### `capture_photo`
Take a photo using the webcam.

**Parameters:**
- `width` (optional): Image width in pixels (320-3840)
- `height` (optional): Image height in pixels (240-2160)
- `quality` (optional): Image quality (1-100)
- `format` (optional): Image format ('jpeg', 'png', 'bmp')
- `return_type` (optional): How to return data ('location', 'buffer', 'base64')
- `device` (optional): Camera device ID

### `start_recording`
Start recording video from the webcam.

**Parameters:**
- `duration` (optional): Recording duration in seconds (1-3600)
- `fps` (optional): Frames per second (1-60)
- `format` (optional): Video format ('mp4', 'avi', 'mkv')
- `codec` (optional): Video codec (e.g., 'libx264', 'libx265')

### `stop_recording`
Stop the current video recording.

### `list_cameras`
List all available camera devices.

### `get_camera_settings`
Get current camera settings.

**Parameters:**
- `device` (optional): Camera device ID

### `set_camera_settings`
Adjust camera settings like brightness, contrast, etc.

**Parameters:**
- `device` (optional): Camera device ID
- `brightness` (optional): Brightness level (0-100)
- `contrast` (optional): Contrast level (0-100)
- `saturation` (optional): Saturation level (0-100)
- `hue` (optional): Hue adjustment (-180 to 180)
- `gamma` (optional): Gamma correction (1-500)
- `sharpness` (optional): Sharpness level (0-100)
- `whiteBalance` (optional): White balance in Kelvin (2000-10000)
- `exposure` (optional): Exposure compensation (-10 to 10)
- `gain` (optional): Gain level (0-100)
- `focus` (optional): Focus level (0-100, 0=auto)

## Resources

The server provides the following resources:

- `webcam://cameras`: List of available camera devices
- `webcam://captures`: List of captured photos
- `webcam://recordings`: List of video recordings

## Dependencies

### Required System Dependencies

#### Linux
```bash
# Ubuntu/Debian
sudo apt-get install v4l-utils ffmpeg

# CentOS/RHEL
sudo yum install v4l-utils ffmpeg
```

#### Windows
- FFmpeg (download from https://ffmpeg.org/)
- Windows Media Foundation

#### macOS
```bash
brew install ffmpeg
```

## File Structure

```
mcp-web-cam/
├── src/
│ ├── index.ts # Main MCP server
│ ├── webcam/
│ │ ├── controller.ts # Camera control logic
│ │ └── types.ts # TypeScript type definitions
│ ├── tools/ # MCP tool implementations
│ │ ├── capture.ts # Photo capture tool
│ │ ├── recording.ts # Video recording tools
│ │ └── camera.ts # Camera management tools
│ └── types/
│ └── node-webcam.d.ts # Type declarations
├── captures/ # Captured photos (auto-created)
├── recordings/ # Video recordings (auto-created)
└── dist/ # Compiled JavaScript
```

## License

MIT