# ihyee-mcp

MCP (Model Context Protocol) server for the [ihyee](https://pypi.org/project/ihyee/) web intelligence API. Gives AI assistants like Claude, Cursor, and other MCP clients the ability to search the web, fetch pages, and render JavaScript-heavy sites.

## Tools

| Tool | Description |
|------|-------------|
| `ihyee_search` | Search the web and return extracted, summarized content from top results |
| `ihyee_fetch` | Fetch and extract content from specific web page URLs |
| `ihyee_render` | Force full browser rendering of a JavaScript-heavy web page |

## Install

```bash
pip install ihyee-mcp
```

## Configure

Set your ihyee API key as an environment variable:

```bash
export IHYEE_API_KEY="your_api_key_here"
```

Get an API key at [ihyee.delta-telematics.ca](https://ihyee.delta-telematics.ca).

## Usage

### With Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "ihyee": {
      "command": "ihyee-mcp",
      "env": {
        "IHYEE_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

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`

### With Claude Code

```bash
claude mcp add ihyee -- ihyee-mcp
```

Then set the API key in your environment or pass it via the MCP config.

### With Cursor

Add to your Cursor MCP settings (`.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "ihyee": {
      "command": "ihyee-mcp",
      "env": {
        "IHYEE_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

### Direct (stdio)

```bash
IHYEE_API_KEY=your_key ihyee-mcp
```

The server communicates over stdin/stdout using the MCP protocol.

## Tool Details

### ihyee_search

Search the web and return extracted content from top results.

**Parameters:**
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `query` | string | Yes | | Search query |
| `max_results` | integer | No | 5 | Number of results (1-10) |
| `content_mode` | string | No | "both" | "both", "full_text", or "summary" |
| `render` | boolean | No | false | Use browser rendering |
| `before` | string | No | | Results before date (YYYY-MM-DD) |
| `after` | string | No | | Results after date (YYYY-MM-DD) |
| `must_have` | string | No | | Required exact phrase |

### ihyee_fetch

Fetch and extract content from specific URLs.

**Parameters:**
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `urls` | string[] | Yes | | URLs to fetch (max 10) |
| `content_mode` | string | No | "both" | "both", "full_text", or "summary" |
| `render` | boolean | No | false | Use browser rendering |

### ihyee_render

Force browser rendering for JavaScript-heavy pages.

**Parameters:**
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | string | Yes | | URL to render |
| `wait_for` | string | No | "networkidle" | "networkidle", "domcontentloaded", or "load" |
| `wait_selector` | string | No | | CSS selector to wait for |
| `timeout_ms` | integer | No | 30000 | Max wait time in ms |

## Development

```bash
git clone https://github.com/aizukanne/ihyee-mcp.git
cd ihyee-mcp
pip install -e ".[dev]"
pytest
```

## License

MIT
