Skip to main content
Glama

kindle-mcp

An MCP (Model Context Protocol) server that turns your Kindle highlights into structured personal book memory summaries saved directly to Notion.

Zero external AI API calls. All reasoning is performed by the host model (Claude Desktop) in its own context window. The server parses files, builds prompts, and writes to Notion — nothing else.


What it does

  1. You share a Kindle highlight export file in Claude Desktop

  2. Claude parses your highlights, generates a personal memory summary, and saves it to your Notion database

  3. You get back a Notion page URL — nothing else shown in chat

All automatic. No copy-pasting. No manual steps.


Related MCP server: vault-mcp-server

Requirements


Installation

1. Get a Notion API key

2. Add to Claude Desktop config

Open your Claude Desktop config file:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the following inside "mcpServers":

"kindle-mcp": {
  "command": "npx",
  "args": ["-y", "kindle-mcp"],
  "env": {
    "NOTION_API_KEY": "secret_..."
  }
}

3. Restart Claude Desktop

Fully quit (Cmd+Q on Mac) and reopen. You should see the tools available via the hammer icon in the chat input.


First-time use

On first run, the server needs a Notion page to create the Kindle Book Summaries database under. If you also have the Notion MCP running, this happens automatically — Claude will create the page and database without asking you anything.

If you don't have the Notion MCP, create any page in Notion and connect your integration to it first:

  1. Open a Notion page → click ... top right → Connections → select your integration

After the first run, the database ID is saved locally at ~/.kindle-mcp/config.json and never needs to be set up again.


Usage

In Claude Desktop:

  1. Attach your Kindle export file (.html from the Kindle app, or My Clippings.txt from a Kindle device)

  2. Say: "Use the process_kindle_export tool on this file"

  3. Claude processes everything and returns your Notion page URL


Supported Kindle export formats

Format

How to get it

HTML

Kindle app (iOS/Android/Mac) → open book → Notes → Export

Plain text

My Clippings.txt on Kindle device via USB

Both formats are auto-detected — no configuration needed.


Summary output structure

Each book gets a Notion page with:

Field

Description

personal_thesis

One sentence capturing the core insight from your highlights

core_themes

3–5 recurring themes

key_ideas

5–8 distinct ideas drawn from your highlights

actionable_takeaways

3–5 concrete actions implied by your highlights

reflection_questions

3–5 questions your highlights raise

memory_capsule

A 3–4 sentence personal narrative distilling everything

Summaries are generated only from your highlights — the model uses no external knowledge about the book.


Tools

Tool

Description

process_kindle_export

Primary tool. Parses a Kindle file and orchestrates the full flow

initialize_notion_database

Creates the Notion database on first run (called automatically)

push_to_notion

Pushes a generated summary to Notion as a structured page

parse_kindle_clippings

Parses a Kindle file and returns raw highlights grouped by book

generate_personal_summary

Builds a prompt package for the host model to generate a summary


Notion database schema

The Kindle Book Summaries database is created automatically with:

Property

Type

Name

Title

Author

Rich Text

Title

Rich Text

All summary content (thesis, themes, ideas, etc.) is written as page body blocks.


License

MIT

Available Tools

5 tools
generate_personal_summaryA

Builds a prompt package for the host model to generate a personal book memory summary from highlights alone. Use this when processing a single book manually.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
authorYes
highlightsYes

TDQS

A3.8/5.0
Behavior3/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 adds crucial context that the tool builds a 'prompt package' rather than generating the summary directly, which prevents confusion about return values. However, it lacks details about the prompt structure, caching behavior, or what the output format looks like given the absence of an output schema.

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 consists of two efficient sentences with zero waste. The first sentence front-loads the core functionality (building prompt packages), while the second provides usage constraints, making it easy for an agent to quickly grasp both purpose and context.

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?

For a tool with three parameters and no output schema, the description adequately explains the high-level mechanism but remains incomplete regarding input requirements and return values. Given the complexity of 'prompt package' construction, additional details about the output structure or parameter interactions would strengthen completeness.

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?

The schema has 0% description coverage, requiring the description to compensate significantly. While the text mentions 'highlights alone,' implying the highlights parameter, it does not explicitly document the title or author parameters or describe expected formats (e.g., whether highlights should be raw strings or formatted text). This leaves substantial gaps in parameter understanding.

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 tool 'builds a prompt package for the host model to generate a personal book memory summary,' specifying the verb (builds), resource (prompt package), and scope (from highlights alone). This effectively distinguishes it from siblings like parse_kindle_clippings and push_to_notion, which handle parsing and external system integration rather than summary generation.

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

Usage Guidelines4/5

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

The description provides explicit usage context with 'Use this when processing a single book manually,' which helps identify when to select this tool over bulk-processing siblings like process_kindle_export. However, it does not explicitly name alternatives or state exclusion criteria (e.g., 'do not use for batch processing').

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

initialize_notion_databaseA

Creates the Kindle Book Summaries database in Notion under a given parent page. Call this automatically when process_kindle_export returns status='setup_required', using the page ID created by the Notion MCP tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
parentPageIdYesThe Notion page ID to create the database under

TDQS

A4.3/5.0
Behavior3/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. It specifies the database name ('Kindle Book Summaries') which hints at schema intent, but fails to disclose idempotency behavior, required permissions, what happens if the database already exists, or what the tool returns. It meets minimum expectations for a creation tool but lacks safety/reversibility details.

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?

Two sentences with zero waste: first states the action, second states the trigger condition and input source. Information is front-loaded with the core purpose, followed by procedural context. Every word serves the agent's decision-making process.

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 no output schema exists, the description should ideally disclose return values (likely the database ID needed for subsequent push_to_notion calls). The workflow integration is well-explained, but the missing output specification leaves a gap for an agent orchestrating the full pipeline from initialization to content pushing.

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

Parameters4/5

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

With 100% schema coverage, the baseline is 3. The description adds value by specifying the semantic source of the parentPageId ('created by the Notion MCP tool'), guiding the agent on which specific ID to use rather than accepting any arbitrary page ID. This contextualizes the parameter beyond the schema's technical definition.

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 uses a specific verb ('Creates') with a specific resource ('Kindle Book Summaries database') and location context ('under a given parent page'). It clearly distinguishes from siblings like push_to_notion or parse_kindle_clippings by establishing this as the structural initialization step rather than content processing.

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

Usage Guidelines5/5

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

Provides explicit conditional guidance: 'Call this automatically when process_kindle_export returns status='setup_required''. This establishes a clear workflow trigger and prerequisite condition. It also specifies the parameter source ('page ID created by the Notion MCP tool'), guiding the agent on how to obtain valid input.

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

parse_kindle_clippingsA

Parse a Kindle HTML export or My Clippings.txt and return highlights grouped by book. Use this when you only need the raw highlights without generating summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawTextYesFull raw content of the Kindle file

TDQS

A4.7/5.0
Behavior4/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 successfully explains the grouping logic (by book) and the raw/unprocessed nature of the output. It could explicitly state this is a read-only/idempotent operation, but 'Parse' implies this adequately for a single string input tool.

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?

Two sentences with zero waste: the first states purpose and I/O, the second provides usage guidance. Information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

For a single-parameter parsing tool with no output schema, the description is complete. It compensates for the missing output schema by describing the return structure ('highlights grouped by book') and clarifies the input domain despite the schema already documenting the parameter.

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

Parameters4/5

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

Schema coverage is 100%, establishing a baseline of 3. The description adds value by specifying the two acceptable file formats ('HTML export' vs 'My Clippings.txt') for the rawText parameter, helping the agent understand what content to provide beyond the generic schema description.

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 uses a specific verb ('Parse') with clear resources ('Kindle HTML export or My Clippings.txt') and output format ('highlights grouped by book'). It effectively distinguishes from sibling 'generate_personal_summary' by explicitly stating this returns 'raw highlights without generating summaries', clarifying its scope.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance ('Use this when you only need the raw highlights without generating summaries'), implicitly identifying when NOT to use it and naming the alternative (generate_personal_summary). This gives the agent clear decision criteria for tool selection.

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

process_kindle_exportA

PRIMARY TOOL. Given the raw content of a Kindle HTML export or My Clippings.txt file, parses all highlights and returns prompt packages plus explicit instructions. After calling this tool, you MUST follow the returned instructions exactly: generate each summary internally then immediately call push_to_notion for each book. Do not display summaries in chat — only report the Notion page URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
rawTextYesFull raw content of the Kindle HTML export file or My Clippings.txt

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden of behavioral disclosure. It explains that the tool returns 'prompt packages plus explicit instructions' rather than final data, and mandates a specific multi-step workflow (generate internally → push to Notion). Lacks details on error handling or malformed input 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?

Three sentences with zero waste. Front-loaded with 'PRIMARY TOOL' to establish hierarchy among siblings. Each sentence serves distinct purposes: (1) capability definition, (2) mandatory workflow instructions, (3) output constraints. Efficient and actionable.

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

Completeness5/5

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

Despite missing annotations and output schema, the description provides sufficient context for an AI agent to execute correctly. It compensates for the lack of structured output description by explaining the return type (prompt packages + instructions) and the critical post-call orchestration sequence involving sibling tools.

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 coverage is 100% for the single 'rawText' parameter, which is well-described in the schema itself. The description essentially restates the schema's content ('Given the raw content...'), meeting the baseline expectation for high-coverage schemas without adding significant semantic depth.

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?

Description uses specific verbs (parses, returns) and clearly identifies the resource (Kindle HTML export or My Clippings.txt). It distinguishes from sibling 'parse_kindle_clippings' by explicitly handling both formats (HTML and txt), positioning itself as the comprehensive option.

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

Usage Guidelines5/5

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

Provides explicit workflow instructions: 'After calling this tool, you MUST follow the returned instructions exactly' and mandates subsequent calls to sibling 'push_to_notion'. Includes clear exclusions: 'Do not display summaries in chat — only report the Notion page URLs', defining exactly when and how to use the tool.

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

push_to_notionA

Push a generated book summary to a Notion database as a structured page. Call this once per book after generating each summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
notionDatabaseIdYesThe Notion database ID (provided by process_kindle_export)
summaryYesThe generated summary object including title and author

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. 'Push' implies write/create operation, and 'structured page' hints at the data format. However, lacks disclosure on failure modes, authentication requirements, whether it overwrites existing pages, or rate limiting 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?

Two sentences with zero waste. First sentence front-loads the core action (what), second sentence provides critical workflow timing (when). Every word earns its place in a compact, scannable format.

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

Completeness4/5

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

Given the complex nested summary object and lack of output schema, the description adequately establishes the tool's role in the workflow pipeline. Missing explicit success/failure behavior disclosure, but the tight integration with sibling tool references (process_kindle_export, generate_personal_summary) provides sufficient context for invocation.

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%, providing detailed structure for the summary object and noting notionDatabaseId is provided by process_kindle_export. Description adds workflow context but no additional parameter syntax or validation rules beyond schema.

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?

Specific verb 'Push' + resource 'Notion database' + format 'structured page' clearly defines the operation. The phrase 'generated book summary' distinguishes this from sibling parse_kindle_clippings (raw data) and aligns with generate_personal_summary (content creation step).

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

Usage Guidelines4/5

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

Explicit sequencing guidance 'Call this once per book after generating each summary' establishes workflow order relative to generate_personal_summary. Mentions 'once per book' implying idempotency expectation. Lacks explicit 'when not to use' or alternative export paths.

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 updatesv1.0.3
    • First observedgenerate_personal_summary
    • First observedinitialize_notion_database
    • First observedparse_kindle_clippings
    • First observedprocess_kindle_export
    • First observedpush_to_notion

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation4/5

Tools have distinct purposes clearly marked in descriptions (e.g., 'PRIMARY TOOL', 'Use this when...'), though `parse_kindle_clippings` and `process_kindle_export` both parse exports, and `generate_personal_summary` overlaps with the internal generation step of the primary workflow.

Naming Consistency5/5

Excellent consistency: all five tools use snake_case with imperative verb_noun structure (generate_, initialize_, parse_, process_, push_). The pattern is predictable and readable throughout.

Tool Count5/5

Five tools is ideal for this focused scope: parsing (2 variants), summary generation, Notion database setup, and Notion publishing. Each tool earns its place without bloat.

Completeness4/5

Covers the full Kindle-to-Notion lifecycle including setup, parsing, generation, and publishing. Minor gap: no update or delete operations for existing Notion entries, requiring agents to only create new summaries.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers