# Curl MCP Server for Docker
This is a Model Context Protocol (MCP) server that provides curl functionality with full network access.
## Features
- Execute curl commands with all options and flags
- Host network mode for accessing local network devices (like your FortiGate at 192.168.1.1)
- Supports HTTPS with self-signed certificates (-k flag)
- Custom headers and authentication
- 5-minute timeout for long-running requests
## Installation
### Option 1: Using Docker Compose (Recommended)
1. Navigate to this directory:
```bash
cd curl-mcp-server
```
2. Build and start the container:
```bash
docker-compose up -d --build
```
3. Check if it's running:
```bash
docker-compose ps
```
### Option 2: Using Docker CLI
1. Build the image:
```bash
docker build -t curl-mcp-server .
```
2. Run the container with host networking:
```bash
docker run -d --name curl-mcp-server --network host curl-mcp-server
```
## Configuration with Claude Desktop
To use this MCP server with Claude Desktop, add the following to your MCP settings configuration file:
**On macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**On Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"curl": {
"command": "docker",
"args": ["exec", "-i", "curl-mcp-server", "python", "/app/server.py"]
}
}
}
```
After adding this configuration:
1. Restart Claude Desktop
2. The curl tool should now be available
## Usage Examples
Once configured, you can use curl commands in Claude:
```
curl -k https://192.168.1.1
```
```
curl -k -H "Authorization: Bearer YOUR_API_KEY" https://192.168.1.1/api/v2/monitor/system/status
```
```
curl -X POST https://api.example.com/endpoint -d '{"key":"value"}'
```
## Network Access
This container uses `network_mode: host` which gives it direct access to:
- Your local network (192.168.x.x addresses)
- The internet
- All network interfaces on your host machine
## Troubleshooting
### Container not starting
```bash
docker-compose logs
```
### Test the container manually
```bash
docker exec -it curl-mcp-server curl -k https://192.168.1.1
```
### Rebuild after changes
```bash
docker-compose down
docker-compose up -d --build
```
### Check if container has network access
```bash
docker exec -it curl-mcp-server curl https://google.com
docker exec -it curl-mcp-server curl -k https://192.168.1.1
```
## Stopping the Server
```bash
docker-compose down
```
## Security Notes
- This server has full network access due to host networking mode
- Be careful with the commands you execute
- The container can access all devices on your local network
- Consider firewall rules if you're concerned about security