Skip to main content
Glama

iReader MCP

A Model Context Protocol (MCP) server that provides tools for reading and extracting content from internet.

Installation

# Clone the repository
git clone https://github.com/zlatanpham/ireader-mcp.git
cd ireader-mcp

# Install dependencies
pnpm install

Related MCP server: ORZ MCP

Available Tools

Tool

Description

Parameters

get_webpage_markdown

Fetches the content of a webpage using Jina reader.

url: string - The URL of the webpage to fetch

get_youtube_transcript

Fetches the transcript of a YouTube video.

videoURL: string - The YouTube video ID or URL

get_tweet_thread

Fetches the thread of a tweet.

tweetURL: string - The tweet URL or ID

get_pdf

Extracts text content from a PDF file.

url: string - The URL of the PDF file

get_public_google_doc_markdown

Fetches the markdown content of a public Google Doc by URL.

url: string - The public Google Doc URL

Testing the Tools

Run the following command to test the tools:

pnpm dev

FAQ

How to use with Claude Desktop or MCP Clients?

Follow the guide https://modelcontextprotocol.io/quickstart/user and add the following configuration:

{
  "mcpServers": {
    "ireader": {
      "command": "npx",
      "args": ["-y", "@x-mcp/ireader@latest"]
    }
  }
}

or if you want to run the server locally, add the following configuration:

{
  "mcpServers": {
    "ireader": {
      "command": "npx",
      "args": ["tsx", "/PATH/TO/YOUR_PROJECT/src/index.ts"]
    }
  }
}

The server will start and listen for MCP client connections via stdio.

License

MIT

Available Tools

5 tools
get_pdfC

Extract text content from a PDF file

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the PDF file to extract text from

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Extract text content' implies a read operation, it doesn't specify whether authentication is required, rate limits apply, what happens with malformed PDFs, or what the output format looks like. For a tool that processes external files, this leaves significant behavioral questions unanswered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states exactly what the tool does without any unnecessary words. It's appropriately sized for a simple tool with one parameter and gets straight to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that processes external PDF files, the description is insufficiently complete. With no annotations, no output schema, and no information about authentication requirements, rate limits, error handling, or output format, an agent would lack crucial context to use this tool effectively. The description doesn't compensate for the lack of structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the single parameter 'url' clearly documented in the schema. The description adds no additional parameter information beyond what the schema already provides. This meets the baseline expectation when the schema does the heavy lifting for parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Extract text content') and resource ('from a PDF file'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling tools (like get_webpage_markdown or get_youtube_transcript) which perform similar extraction functions on different resource types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tools or specify scenarios where PDF text extraction is appropriate versus extracting from webpages, Google Docs, or other sources. There's no information about prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_public_google_doc_markdownB

Fetch the markdown content of a public Google Doc by URL

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe public Google Doc URL

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool fetches markdown content but lacks details on error handling (e.g., what happens with invalid URLs or non-public docs), rate limits, authentication needs, or output format. This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Fetch the markdown content') and includes essential qualifiers ('public Google Doc', 'by URL'). There is zero waste, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It lacks behavioral details like error conditions or output structure, which are important for an agent to use it correctly. The description meets basic needs but leaves gaps in operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'url' documented as 'The public Google Doc URL'. The description adds no additional meaning beyond this, such as URL format examples or validation rules. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Fetch'), resource ('markdown content of a public Google Doc'), and mechanism ('by URL'), distinguishing it from siblings like get_webpage_markdown (which handles general webpages) and get_pdf (which handles PDFs). It precisely defines the tool's scope without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., the document must be publicly accessible), exclusions (e.g., not for private docs), or comparisons to sibling tools like get_webpage_markdown for non-Google Doc content. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tweet_threadC

Fetch the thread of a tweet

ParametersJSON Schema
NameRequiredDescriptionDefault
tweetURLYesThe tweet ID or URL

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Fetch' implies a read operation, but it doesn't specify whether this requires authentication, rate limits, what format the thread is returned in, or if it includes replies. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core purpose, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what a 'thread' entails (e.g., parent tweet and replies), the return format, or any error conditions, which are crucial for a tool with no structured output documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'tweetURL' documented as 'The tweet ID or URL'. The description doesn't add any additional meaning beyond this, such as examples or format details, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Fetch the thread of a tweet' clearly states the action (fetch) and resource (tweet thread), making the purpose understandable. However, it doesn't differentiate this tool from its siblings (which handle PDFs, Google Docs, webpages, and YouTube transcripts), so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, constraints, or scenarios where this tool is preferred over others, leaving the agent with minimal usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_webpage_markdownB

Fetch the content of a url using jina reader

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'using jina reader' but doesn't disclose behavioral traits like rate limits, authentication needs, error handling, or output format (markdown as implied by name). For a tool with no annotations, this leaves significant gaps in understanding how it behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It front-loads the key action and resource, making it easy to scan. Every word earns its place, providing essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, and no output schema, the description is incomplete. It doesn't explain return values (e.g., markdown content, errors), behavioral aspects, or parameter details. For a tool fetching webpage content, more context on output and constraints is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, with one parameter 'url' undocumented in the schema. The description adds no meaning beyond the parameter name; it doesn't specify URL format constraints (e.g., must be valid HTTP/HTTPS), examples, or how jina reader processes it. With low coverage, the description fails to compensate adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Fetch') and resource ('content of a url'), specifying the method ('using jina reader'). It distinguishes from siblings by focusing on general webpages rather than PDFs, Google Docs, tweets, or YouTube transcripts. However, it doesn't explicitly contrast with siblings beyond the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching webpage content via jina reader, suggesting it's for general URLs. No explicit guidance on when to use this versus siblings (e.g., for PDFs use get_pdf) or exclusions (e.g., not for non-webpage resources). The context is clear but lacks direct alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_youtube_transcriptC

Fetch the transcript of a YouTube video

ParametersJSON Schema
NameRequiredDescriptionDefault
videoURLYesThe YouTube video ID or URL

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'fetch the transcript' but does not add any context about permissions, rate limits, error handling, or what the output looks like (e.g., format, language options). This is a significant gap for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It does not address behavioral aspects like how transcripts are retrieved, potential failures, or output format, which are crucial for a tool that fetches external content. This leaves gaps in understanding the tool's full context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'videoURL' documented as 'The YouTube video ID or URL'. The description does not add any additional meaning beyond this, such as examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('fetch') and resource ('transcript of a YouTube video'), making the purpose immediately understandable. However, it does not explicitly differentiate from sibling tools like 'get_webpage_markdown' or 'get_tweet_thread', which could also involve fetching content from different sources, so it lacks sibling differentiation for a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or context for choosing it over sibling tools like 'get_webpage_markdown' for other types of content, leaving usage decisions ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • First observedget_pdf
    • First observedget_public_google_doc_markdown
    • First observedget_tweet_thread
    • First observedget_webpage_markdown
    • First observedget_youtube_transcript

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting a specific content source and format: PDF extraction, Google Doc fetching, tweet thread retrieval, webpage content via Jina Reader, and YouTube transcript fetching. There is no overlap in functionality, and an agent can easily distinguish between them based on the source type and output format.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with 'get_' as the prefix, followed by a descriptive noun phrase (e.g., get_pdf, get_public_google_doc_markdown). This uniformity makes the tool set predictable and easy to understand, with no deviations in naming style.

Tool Count5/5

With 5 tools, the server is well-scoped for its purpose of content extraction from various sources. Each tool serves a distinct and necessary function, covering key content types (PDF, Google Docs, tweets, webpages, YouTube) without being overly broad or sparse, fitting typically within the 3-15 tool range for such a domain.

Completeness4/5

The tool set covers a broad range of common content sources (PDF, Google Docs, tweets, webpages, YouTube) with clear extraction capabilities, leaving no obvious dead ends. A minor gap might be the lack of tools for other formats like Word documents or private Google Docs, but the existing coverage is sufficient for most agent workflows in this domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables LLMs to retrieve and process web content by fetching URLs and converting HTML to markdown format. Supports chunked reading of large pages and can access both public websites and local networks.
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides web search capabilities across multiple engines and webpage content fetching to simplified Markdown. It enables AI assistants to access real-time internet information and extract text from specific URLs.
    2
    13
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to fetch clean text from any URL and repurpose it into platform-ready social media content for LinkedIn, Twitter, Reddit, and newsletters. It provides specialized tools for content extraction and structured prompt templates for various formats and tones.
    16
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 19 tools for web search, content fetching, and extraction, including DuckDuckGo search, YouTube transcripts, and webpage screenshots.
    1
    -