Skip to main content
Glama
README.md
# Web2MCP

**Turn any website into a standalone MCP server.**

**AI Agent Auto-Install:** Point your agent to this repo and say "install web2mcp" — it will read this README, detect your MCP client (Kilo/Claude Desktop), and configure itself automatically.

## Features

- **Discovery** - Analyze websites: JSON-LD, API endpoints, HTML forms, headings, links
- **OpenAPI Detection** - Auto-detect and parse OpenAPI/Swagger specs
- **Code Generation** - Generate complete MCP server projects from any website
- **Credential Management** - Encrypted storage for API keys, tokens, cookies, OAuth
- **Multi-Protocol** - Works with any HTTP API (REST, GraphQL, etc.)

## Quick Install (AI Agent)

If you're an AI agent installing this for a user:

```bash
# Detect OS and MCP client, then auto-configure
git clone https://github.com/Xzeroone/web2mcp.git /tmp/web2mcp
cd /tmp/web2mcp

# Install Python package
pip install -e .

# Detect MCP client and configure
if [ -f ~/.config/kilo/kilo.jsonc ]; then
  # Kilo config - add web2mcp entry
  cat >> ~/.config/kilo/kilo.jsonc << 'EOF'
,
    "web2mcp": {
      "type": "local",
      "command": ["python", "-m", "web2mcp"],
      "enabled": true
    }
EOF
elif [ -f ~/Library/Application\ Support/Claude/claude_desktop_config.json ]; then
  # Claude Desktop config
  echo '{"mcpServers": {"web2mcp": {"command": "python", "args": ["-m", "web2mcp"]}}}' >> ~/Library/Application\ Support/Claude/claude_desktop_config.json
fi
```

## Manual Install

### Prerequisites

- Python 3.10+
- pip

### Option 1: pip (No build required)

```bash
pip install web2mcp
```

### Option 2: Local Install from Source

```bash
git clone https://github.com/Xzeroone/web2mcp.git
cd web2mcp
pip install -e .
```

### Option 3: pip install from git

```bash
pip install git+https://github.com/Xzeroone/web2mcp.git
```

Then configure your MCP client:

**Kilo (Recommended)**
```jsonc
// ~/.config/kilo/kilo.jsonc
{
  "mcp": {
    "web2mcp": {
      "type": "local",
      "command": ["python", "-m", "web2mcp"],
      "enabled": true
    }
  }
}
```

**Claude Desktop**
```json
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "web2mcp": {
      "command": "python",
      "args": ["-m", "web2mcp"]
    }
  }
}
```

## Available Tools

| Tool | Description |
|------|-------------|
| `web2mcp_discover` | Analyze a website |
| `web2mcp_request` | Make HTTP requests with auto-injected auth |
| `web2mcp_auth_store` | Manage credentials (save/load/list/delete) |
| `web2mcp_auth_oauth` | OAuth 2.0 flow helper |
| `web2mcp_api_spec` | Parse OpenAPI/Swagger specs |
| `web2mcp_schema` | Infer JSON schema from endpoints |
| `web2mcp_sitemap` | Parse sitemap.xml |
| `web2mcp_forms` | Extract HTML forms |
| `web2mcp_readme` | Fetch GitHub READMEs |
| `web2mcp_generate` | **Generate a standalone MCP server** |

## Usage

### As an MCP Server (stdio)

```bash
web2mcp
# or
python -m web2mcp
```

### Generate an MCP Server for Any Site

```bash
# Generate an MCP server for GitHub
web2mcp_generate url=https://api.github.com name=mcp-github

# Generate an MCP server for Stripe
web2mcp_generate url=https://api.stripe.com name=mcp-stripe

# Output to specific directory
web2mcp_generate url=https://api.example.com output_dir=./my-mcps
```

### Store Credentials

```bash
# Save API key
web2mcp_auth_store domain=api.github.com action=save headers='{"Authorization": "Bearer ghp_xxx"}'

# Save OAuth token
web2mcp_auth_store domain=api.stripe.com action=save oauth_token=sk_live_xxx oauth_type=Bearer

# List stored credentials
web2mcp_auth_store action=list
```

## How It Works

1. **Discover** - Web2MCP analyzes the target website
2. **Detect** - Looks for OpenAPI specs at standard locations (`/openapi.json`, `/swagger.json`, etc.)
3. **Generate** - Creates a complete MCP server project with typed tools per endpoint
4. **Use** - Install, build, and run the generated MCP server

## Generated MCP Servers

The generated MCP servers:
- Are standalone Python projects
- Share web2mcp's credential store (auth set up once works everywhere)
- Auto-inject credentials for every request
- Include typed tools for each API endpoint (if OpenAPI spec found)
- Fall back to generic HTTP tools if no spec available

## Development

```bash
pip install -e ".[dev]"
python -m web2mcp
```

## License

MIT