Skip to main content
Glama
spences10

MCP JinaAI Reader Server

by spences10
README.md
# mcp-jinaai-reader
---

## ⚠️ Notice

**This repository is no longer maintained.**

The functionality of this tool is now available in [mcp-omnisearch](https://github.com/spences10/mcp-omnisearch), which combines multiple MCP tools in one unified package.

Please use [mcp-omnisearch](https://github.com/spences10/mcp-omnisearch) instead.

---

A Model Context Protocol (MCP) server for integrating Jina.ai's Reader
API with LLMs. This server provides efficient and comprehensive web
content extraction capabilities, optimized for documentation and web
content analysis.

<a href="https://glama.ai/mcp/servers/a75afsx9cx">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/a75afsx9cx/badge" />
</a>

## Features

- 📚 Advanced web content extraction through Jina.ai Reader API
- 🚀 Fast and efficient content retrieval
- 📄 Complete text extraction with preserved structure
- 🔄 Clean format optimized for LLMs
- 🌐 Support for various content types including documentation
- 🏗️ Built on the Model Context Protocol

## Configuration

This server requires configuration through your MCP client. Here are
examples for different environments:

### Cline Configuration

Add this to your Cline MCP settings:

```json
{
	"mcpServers": {
		"jinaai-reader": {
			"command": "node",
			"args": ["-y", "mcp-jinaai-reader"],
			"env": {
				"JINAAI_API_KEY": "your-jinaai-api-key"
			}
		}
	}
}
```

### Claude Desktop with WSL Configuration

For WSL environments, add this to your Claude Desktop configuration:

```json
{
	"mcpServers": {
		"jinaai-reader": {
			"command": "wsl.exe",
			"args": [
				"bash",
				"-c",
				"JINAAI_API_KEY=your-jinaai-api-key npx mcp-jinaai-reader"
			]
		}
	}
}
```

### Environment Variables

The server requires the following environment variable:

- `JINAAI_API_KEY`: Your Jina.ai API key (required)

## API

The server implements a single MCP tool with configurable parameters:

### read_url

Convert any URL to LLM-friendly text using Jina.ai Reader.

Parameters:

- `url` (string, required): URL to process
- `no_cache` (boolean, optional): Bypass cache for fresh results.
  Defaults to false
- `format` (string, optional): Response format ("json" or "stream").
  Defaults to "json"
- `timeout` (number, optional): Maximum time in seconds to wait for
  webpage load
- `target_selector` (string, optional): CSS selector to focus on
  specific elements
- `wait_for_selector` (string, optional): CSS selector to wait for
  specific elements
- `remove_selector` (string, optional): CSS selector to exclude
  specific elements
- `with_links_summary` (boolean, optional): Gather all links at the
  end of response
- `with_images_summary` (boolean, optional): Gather all images at the
  end of response
- `with_generated_alt` (boolean, optional): Add alt text to images
  lacking captions
- `with_iframe` (boolean, optional): Include iframe content in
  response

## Development

### Setup

1. Clone the repository
2. Install dependencies:

```bash
npm install
```

3. Build the project:

```bash
npm run build
```

4. Run in development mode:

```bash
npm run dev
```

### Publishing

1. Update version in package.json
2. Build the project:

```bash
npm run build
```

3. Publish to npm:

```bash
npm publish
```

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- Built on the
  [Model Context Protocol](https://github.com/modelcontextprotocol)
- Powered by [Jina.ai Reader API](https://jina.ai)

TDQS

B3.4/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool's purpose is clearly defined and distinct by default.

Naming Consistency5/5

A single tool inherently has perfect naming consistency, as there are no other tools to compare against. The tool name 'read_url' follows a clear verb_noun pattern.

Tool Count2/5

One tool is too few for a server with a purpose that could reasonably support more operations, such as handling different URL types or providing metadata extraction. This minimal set feels thin and under-scoped for the domain.

Completeness2/5

The server's domain appears to be URL content reading, but the single tool only covers basic text conversion. There are obvious gaps, such as no tools for handling errors, extracting structured data, or managing different content formats, which limits agent effectiveness.

Maintenance

ActivityInactive
ResponsivenessNo issues