# Toto Fetch MCP Server
An MCP server that fetches URL content, converts it to Markdown, and optionally processes it with a local LLM (LaMini-Flan-T5). Returns data in [TOON](https://toonformat.dev) format.
## Features
- **Fetch & Clean**: Fetches HTML, extracts main content using `@mozilla/readability`, and converts to Markdown with `turndown`.
- **Local AI Processing**: Optional local LLM processing using `@huggingface/transformers` (running `Xenova/LaMini-Flan-T5-248M`).
- **TOON Output**: Returns structured data in Token-Oriented Object Notation, optimized for agent consumption.
## Installation
```bash
npm install
```
## Build
```bash
npm run build
```
## Usage
### As an MCP Server
Add to your MCP client configuration (e.g., Claude Desktop config):
```json
{
"mcpServers": {
"toon-fetch": {
"command": "npx",
"args": ["toon-fetch"]
}
}
}
```
### Tool: `fetch_url`
**Arguments:**
- `url` (string, required): The URL to fetch.
- `prompt` (string, optional): Instruction for the local LLM.
- Example: "Summarize this article"
- Example: "Extract all dates and events"
- If omitted, the raw Markdown content is returned.
**Output (TOON):**
```toon
title: Page Title
content: "Markdown content..."
metadata:
url: "https://example.com"
excerpt: "..."
optimized: true
```
## Development
### Workflow
1. **Install dependencies**: `npm install`
2. **Run tests**: `npm test` (uses Vitest)
3. **Build**: `npx tsc`
4. **Verify**: You can use the `src/verify.ts` script (requires build first or ts-node).
### Testing
Run unit tests:
```bash
npx vitest
```
## License
MIT