Skip to main content
Glama

Kindle MCP Dashboard

An MCP-controlled, server-rendered e-ink dashboard for the Amazon Kindle Paperwhite EY21 (Paperwhite 1, 2012). The renderer targets its 758×1024, 16-level grayscale display and deliberately sends the Kindle a simple PNG.

The Kindle is a display client, not the MCP host:

Claude / Pi / another MCP client
             │ MCP tools
             ▼
   dashboard state + renderer ──── HTTP ────► Kindle EY21

This separation keeps API keys and integrations off the old device. MCP clients can design screens and push weather, hardware, home automation, or agent-control plane state. Live host time and hardware utilization are resolved when the PNG is rendered.

Features

  • Named screens with an active-screen switch

  • Regions positioned on a normalized 1000×1000 canvas

  • text, metric, status, progress, list, and local image widgets

  • Built-in monochrome icons: weather/cloud, cpu, memory, disk, agent

  • Atomic JSON persistence shared by the MCP and HTTP processes

  • Live sources: system.time, system.date, system.hostname, system.cpu_percent, system.memory_percent, system.disk_percent, system.load, and system.uptime

  • Browser mode with cache-free periodic refresh

  • Optional jailbroken-device wget + eips refresh script

Related MCP server: Send to Kindle MCP Server

Install and run

cd kindle-mcp-dashboard
python -m venv .venv
.venv/bin/pip install -e .
.venv/bin/kindle-dashboard init
.venv/bin/kindle-dashboard preview
.venv/bin/kindle-dashboard serve --host 0.0.0.0 --port 8787 --refresh 60

Port 8787 is the direct dashboard-server port. Find the computer's LAN address with ip -br address. Most clients can open this plain-HTTP URL in the Experimental Browser:

http://COMPUTER_LAN_IP:8787/kindle

For the first-generation EY21 on firmware 5.6.1.1, the Experimental Browser and the jailbroken device client were tested successfully through standard HTTP port 80 instead. Configure a reverse proxy from port 80 to the dashboard's 8787 port, then use:

http://COMPUTER_LAN_IP/kindle

Store connectivity and Amazon registration are not required. The browser only needs working local Wi-Fi. If the browser itself cannot open local HTTP pages, use the optional jailbroken client described below.

Connect an MCP client

The MCP server uses stdio. Example Claude Code registration:

claude mcp add kindle-dashboard -- \
  /absolute/path/to/kindle-mcp-dashboard/.venv/bin/kindle-dashboard-mcp

Example Codex registration:

codex mcp add kindle-dashboard -- \
  /absolute/path/to/kindle-mcp-dashboard/.venv/bin/kindle-dashboard-mcp

Equivalent generic MCP client configuration:

{
  "mcpServers": {
    "kindle-dashboard": {
      "command": "/absolute/path/to/kindle-mcp-dashboard/.venv/bin/kindle-dashboard-mcp"
    }
  }
}

Then ask the agent, for example:

Update the Kindle overview weather region to show Lisbon, 21 °C, partly cloudy. Replace the agent list with Codex running, Claude idle, and CI healthy.

The MCP tools are:

  • get_dashboard

  • list_screens

  • activate_screen

  • upsert_screen

  • update_region

  • push_updates

  • render_preview

For layout changes, use upsert_screen. Coordinates are normalized: {x: 0, y: 0, w: 500, h: 500} is the top-left quarter regardless of device pixels. Content-only updates should use update_region or atomic push_updates. Image regions use an absolute local file path in their image field; the image must be available on the machine running the renderer. Set trim: true to remove white margins before fitting a logo or other scanned asset.

Example update arguments:

{
  "screen_id": "overview",
  "updates": [
    {
      "region_id": "weather",
      "fields": {"value": "21 °C · partly cloudy", "icon": "cloud"}
    },
    {
      "region_id": "agents",
      "fields": {
        "items": [
          {"text": "Codex · running tests", "status": "running"},
          {"text": "Claude · idle", "status": "idle"},
          {"text": "CI · healthy", "status": "healthy"}
        ]
      }
    }
  ]
}

Optional jailbroken EY21 mode

This device is confirmed as firmware 5.6.1.1, build 2689890035. See the firmware-specific deployment notes. Its B024 serial prefix confirms the Wi-Fi Paperwhite 1 variant. The current KindleModding compatibility data selects WinterBreak2 for this model and firmware, without a registration or lock-screen-ad prerequisite.

B024 is a non-unique model-family prefix used only for compatibility lookup; the dashboard never needs or stores a complete Kindle serial number. Users with a different device should select or create a matching profile rather than publishing their full serial.

Once the EY21 is already jailbroken with shell access, copy kindle/refresh.sh to it, make it executable, and change DASHBOARD_URL to the server's LAN address. For this firmware, use the port-80 /screen.png URL from the supplied dashboard.conf; the direct :8787 endpoint was not reliable on the device. The script disables the screensaver, downloads the current PNG, and draws it using the Kindle's built-in eips command.

The original Paperwhite is also supported by the legacy kindle build of KOReader, which can be useful as a launcher on an already-jailbroken device.

State and operation

State defaults to:

~/.local/state/kindle-mcp-dashboard/dashboard.json

Override it for both processes with KINDLE_DASHBOARD_STATE. Run the HTTP server and MCP server under the same Unix user so they share the same file.

The browser refresh interval defaults to 60 seconds. E-ink panels ghost when updated too often, so intervals below 30 seconds are discouraged. The HTTP server enforces a minimum browser refresh of 10 seconds.

The HTTP display server has no authentication. When bound to 0.0.0.0, its screen image and /api/state are readable by other devices that can reach the port. Run it only on a trusted LAN or restrict access with a host firewall.

Development

.venv/bin/pip install pytest
.venv/bin/pytest

Available Tools

7 tools
activate_screenB

Make a configured screen visible on the Kindle.

ParametersJSON Schema
NameRequiredDescriptionDefault
screen_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/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 only states the intended outcome but does not disclose side effects such as what happens to the previously visible screen, whether the change is pushed to the device, whether activation is reversible, or what failure behavior looks like.

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?

A single sentence with no padding; it front-loads the core action and requires no unnecessary detail. It is appropriately concise for a one-parameter tool.

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 simple one-parameter schema and presence of an output schema, the description is minimally adequate. However, because there are no annotations, the description omits important context around prerequisites, side effects on the existing displayed screen, and how activation interacts with sibling tools, leaving notable contextual gaps.

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 provides no parameter description, so schema_description_coverage is 0%, but the single parameter 'screen_id' is fairly self-explanatory and the description's 'configured screen' gives minimal context linking the ID to a screen. Still, the description does not explain how to obtain screen_id, expected format, or any implicit constraints beyond the field name.

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 uses a specific verb-resource pair ('Make a configured screen visible on the Kindle') and clearly indicates the action targets a screen on a device. However, it does not explicitly differentiate this from related sibling tools like render_preview, push_updates, or render/display workflows.

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?

No guidance is given about when to use activate_screen versus sibling alternatives such as push_updates, render_preview, or list_screens. The word 'configured' implies a prerequisite prerequisite, but there is no explicit statement of prerequisites, exclusions, or when-not-to-use instructions.

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

get_dashboardB

Return the complete dashboard configuration and current content.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'Return' signals a read-only operation, and 'complete' and 'current content' clarify the scope of what is fetched, but the description does not mention caching, permissions, or whether the result is a live snapshot.

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, front-loaded sentence with no filler or redundancy. It is appropriately sized for a zero-argument getter and communicates the essential scope without unnecessary detail.

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 simple zero-parameter getter with an output schema, the description covers the core purpose and return scope. However, it lacks any indication of how get_dashboard relates to sibling tools like list_screens, leaving some routing ambiguity for the agent.

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?

The tool takes zero parameters, so the schema fully documents the input side; this is the baseline case for a 0-parameter tool. The description reinforces that no arguments are needed by emphasizing that it returns the complete configuration and current content.

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 uses a specific verb ('Return') and identifies the resource ('dashboard configuration and current content'), with 'complete' defining the scope. It clearly states what the tool does, though it does not explicitly distinguish it from sibling tools such as list_screens.

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?

There is no guidance on when to use this tool versus sibling tools like list_screens, render_preview, or update_region. The read-oriented wording implies retrieval, but no context, prerequisites, or exclusions are provided.

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

list_screensA

List screens, their names, region IDs, and which screen is active.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the full behavioral burden. 'List' implies a read-only operation and the active-screen detail adds useful state awareness, but the description does not explicitly state that it has no side effects, requires no permissions, or how the active screen is determined. The output schema covers return shape.

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 front-loaded sentence that states the action, resource, and return fields without repetition or filler. Every word contributes to the agent's understanding.

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?

For a zero-parameter list tool with an output schema, the description is mostly sufficient. The only minor ambiguity is the phrase 'which screen is active' — it does not clarify whether active is global or per region — but the output schema likely resolves this.

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?

The tool has zero parameters and the input schema is already empty, so there is nothing meaningful left to explain about parameters. Per the zero-parameter baseline, this is appropriately handled.

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 uses a specific verb and resource: 'List screens' and names the exact returned information (names, region IDs, active screen). It separates itself from mutation siblings like activate_screen and upsert_screen, though it does not explicitly contrast itself with the retrieval sibling get_dashboard.

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 verb 'List' implies when to use the tool, but the description gives no explicit context about when to prefer it over alternatives or how it fits into workflows with siblings like update_region or get_dashboard. A stronger description would say 'use this to view current screens before updating a region' or similar.

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

push_updatesB

Atomically apply content updates. Each item needs region_id and fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes
screen_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The word 'Atomically' discloses an all-or-nothing behavior, and 'apply content updates' makes the write nature explicit. However, with no annotations, the description still omits auth requirements, failure/rollback semantics, and what happens to existing content.

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 the action front-loaded and no filler. The second sentence earns its place by clarifying the freeform update items.

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 mutation tool with a freeform updates object and no annotations, this is too sparse. Missing screen_id semantics, what fields are valid, and how this relates to update_region; the atomicity note and item hint are not enough.

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 0%, so the description must compensate. It does add meaning for the updates array ('Each item needs region_id and fields'), but it leaves screen_id unexplained and 'fields' underspecified, so compensation is only partial.

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 opens with a specific action ('Atomically apply content updates'), clearly stating the tool's verb and resource. It doesn't explicitly contrast with sibling tools like update_region or upsert_screen, but 'content updates' combined with atomicity is reasonably distinctive.

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?

There is no guidance on when to choose push_updates over update_region, render_preview, or upsert_screen. The only usage hint is the per-item requirement, which is parameter-level rather than selection context.

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

render_previewA

Render the current screen to a 758x1024 PNG and return its absolute path.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNopreview.png

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The description discloses the core behavior, output format, dimensions, and return value, but no annotations are provided to cover safety or side effects. It does not mention file overwrite behavior, filesystem side effects, authentication needs, or what 'current screen' requires, leaving behavioral gaps.

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?

A single sentence with no filler, front-loading the action and output details. Every word contributes necessary information, and the structure is easy to parse quickly.

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 simple one-parameter tool, the description covers the main action and return value, but with no annotations and no parameter explanation it leaves open important details: whether the file overwrites existing content, how the output path is resolved, and whether any screen state must be active. This is adequate but not fully complete.

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% and the description never mentions output_path, so the sole parameter is left to inference from its name and default. The phrase 'return its absolute path' hints at output handling but does not clarify how output_path relates to the returned path or what happens when it is omitted.

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 names a specific verb ('Render'), a clear resource ('the current screen'), and a precise output ('758x1024 PNG'). It also states the return value ('absolute path'), making the tool's purpose unambiguous and distinct from siblings like list_screens or activate_screen.

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 when a preview of the current screen is needed, but it provides no explicit when-to-use or when-not-to-use guidance and does not compare against sibling tools. An agent must infer the appropriate context from the verb and resource.

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

update_regionC

Update region content such as value, label, items, status, icon, unit, size or invert.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes
region_idYes
screen_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states that content is updated but does not explain whether the update is partial or full, whether unspecified fields are preserved, what validation applies to arbitrary fields, or what side effects occur. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. The list of updatable content types is useful, though it is somewhat long; still, it earns its place by conveying the tool's scope.

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 mutation tool with no annotations, arbitrary nested fields, and zero parameter descriptions, this is under-specified. The presence of an output schema reduces the need to describe return values, but the description still omits usage conditions, field semantics, and behavioral guarantees.

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%, so the description must compensate for the schema's lack of parameter documentation. It adds some meaning by listing possible keys inside 'fields', but it does not explain screen_id, region_id, or the semantics of the fields object. The description only partially fills the documentation gap.

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 uses a specific verb and resource: 'Update region content', and enumerates representative field names such as value, label, items, status, icon, unit, size, and invert. This makes the tool's purpose reasonably clear, though it does not explicitly differentiate it from siblings like upsert_screen or push_updates.

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?

No guidance is given about when to use this tool versus alternatives such as push_updates or upsert_screen. The word 'update' implies a use case, but there are no stated conditions, prerequisites, or exclusions.

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

upsert_screenB

Create or replace a screen. Region coordinates use a normalized 1000x1000 canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
screenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior itself. It states the mutation ('Create or replace') and adds a useful coordinate-system constraint ('normalized 1000x1000 canvas'), but it does not explain what 'replace' destroys (e.g., existing regions) or any side effects.

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 short sentences, both substantive, with the core operation front-loaded. No filler or redundant restatement of the tool name.

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 mutation tool with no annotations and an opaque nested parameter, the description is too thin. An agent still cannot tell what a valid screen object looks like, how replacement is identified, or how this relates to update_region/push_updates.

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 only parameter, screen, is an opaque object with additionalProperties true and 0% schema coverage. The description contributes one meaningful hint about region coordinates, but it does not describe the screen object's fields, required identifiers, or how replacement is keyed.

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 opens with a concrete operation and resource: 'Create or replace a screen.' This is unambiguous and clearly distinguishes it from region-level operations like update_region and activate_screen, though it does not explicitly name a sibling.

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?

No guidance is given on when to choose upsert_screen over siblings such as update_region or push_updates. The description does not state prerequisites, intended call context, or exclusions.

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. 7 tool updatesv0.1.0
    • First observedactivate_screen
    • First observedget_dashboard
    • First observedlist_screens
    • First observedpush_updates
    • First observedrender_preview
    • First observedupdate_region
    • First observedupsert_screen

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation4/5

Most tools are clearly distinct, covering screen management, activation, preview, and content updates. The main ambiguity is between update_region and push_updates, but their descriptions clarify single-region vs atomic batch updates.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: update, push, render, get, list, activate, upsert. There are no mixed conventions or vague placeholder names.

Tool Count5/5

Seven tools is well-scoped for a Kindle dashboard server, covering screen CRUD, content updates, preview, and activation without unnecessary bloat. Each tool appears necessary to the workflow.

Completeness4/5

The core dashboard lifecycle is covered: create/replace screens, update regions, push updates, preview, list, and activate. A delete_screen tool is the most obvious missing operation, but it is not a blocking gap for typical dashboard management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for accessing local Kindle library data, exposing tools to query profile, health, and book metadata.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that delivers research papers to your e-reader, using Zotero as the source of truth. Allows searching, queuing, and sending papers to Kindle, PocketBook, or Kobo.
    14
    7
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI agents to build freeform dashboards for e-ink panels by listing widgets and devices, laying out a canvas, rendering a preview, and pushing to the panel.
    18
    AGPL 3.0