ihyee-mcp
# 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
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: ihyee_fetch for direct URL content extraction, ihyee_render for JavaScript-heavy pages requiring full browser rendering, and ihyee_search for web search with result extraction. There is no overlap or ambiguity between these functions.
All tool names follow a consistent 'ihyee_' prefix with descriptive suffixes (fetch, render, search) in snake_case. The naming pattern is uniform and predictable across all tools.
Three tools is a reasonable count for a web content extraction server, covering core scenarios (direct fetch, JS rendering, search). It might feel slightly thin if advanced features like batch processing or filtering are expected, but it's well-scoped for the apparent purpose.
The toolset covers key web content extraction workflows: fetching from URLs, handling JavaScript-heavy pages, and searching the web. Minor gaps might include operations like caching, content filtering, or handling specific formats (e.g., PDFs), but the core domain is adequately addressed.