Skip to main content

MCP server for reading and editing HTML/Markdown tables in GitBook-synced documents

Project description

tablestakes

MCP server for reading and editing HTML/Markdown tables in GitBook-synced documents.

Overview

GitBook's bidirectional sync collapses complex tables into single-line HTML in Markdown files, making them unreadable for LLMs. tablestakes acts as a transparent intermediary: LLMs see clean pipe tables, files on disk stay in their original format.

Supports three table formats:

  • GFM pipe tables (native Markdown)
  • GitBook collapsed HTML (single-line <table> blocks with width/data-* attributes)
  • General HTML tables

Installation

uvx tablestakes

Client Configuration

Claude Code

Add to .claude/settings.json:

{
  "mcpServers": {
    "tablestakes": {
      "command": "uvx",
      "args": ["tablestakes"]
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "tablestakes": {
      "command": "uvx",
      "args": ["tablestakes"]
    }
  }
}

Tools

Discovery & Read

Tool Purpose
list_tables(file_path, preview_rows=1) Scan file, return all tables with metadata + preview
read_table(file_path, table_index) Full table in normalized format + version hash

Cell Operations

Tool Purpose
update_cells(file_path, table_index, version, updates) Batch {row, column, value} patches

Row Operations

Tool Purpose
insert_row(file_path, table_index, version, position, values) Insert row at position (-1 to append)
delete_row(file_path, table_index, version, row_index) Remove row by index

Column Operations

Tool Purpose
add_column(file_path, table_index, version, name, default_value, position) Add column
delete_column(file_path, table_index, version, column) Remove column
rename_column(file_path, table_index, version, old_name, new_name) Rename header

Full Table Operations

Tool Purpose
replace_table(file_path, table_index, version, new_content) Full replacement from pipe table input

Column Addressing

Columns can be referenced by:

  • Letter: "A", "B", "AA" (bijective base-26, like Excel)
  • Name: "Priority" (must be unique)
  • Composite: "B:Priority" (for disambiguation)
  • Index: "0", "1" (0-based)

Concurrency Model

All write tools require a version hash from read_table. The server re-reads the file on every write, verifies the hash, and rejects stale writes with a STALE_READ error. No state is cached between calls.

Development

uv sync --group dev
uv run pytest tests/ -x -v
uv run ruff check src tests
uv run mypy src

License

Apache-2.0


mcp-name: io.github.oborchers/tablestakes

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tablestakes-0.1.2.tar.gz (144.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tablestakes-0.1.2-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file tablestakes-0.1.2.tar.gz.

File metadata

  • Download URL: tablestakes-0.1.2.tar.gz
  • Upload date:
  • Size: 144.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tablestakes-0.1.2.tar.gz
Algorithm Hash digest
SHA256 fb68514a6cb598ec26079c4f3999b93c6a63a782f2c9117e55f7f2ae253693a2
MD5 a1f526baaa50646de9ff0b48215ce5d4
BLAKE2b-256 abccdfaacbccbecded8fe04016e8481a90f4945105bf22f00914a5b89f1cab12

See more details on using hashes here.

Provenance

The following attestation bundles were made for tablestakes-0.1.2.tar.gz:

Publisher: release.yml on oborchers/tablestakes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tablestakes-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: tablestakes-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tablestakes-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 63beda746e632d62232d7a5ade2bc3a3df6b6a3d992832746ac6b9be47fd05fa
MD5 b2c6a45719f0b4911051c37d292a2f99
BLAKE2b-256 20b19af8488e25d1981d4de27c765393a37bf02ed20c8703fdc6246a8e13fd23

See more details on using hashes here.

Provenance

The following attestation bundles were made for tablestakes-0.1.2-py3-none-any.whl:

Publisher: release.yml on oborchers/tablestakes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page