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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb68514a6cb598ec26079c4f3999b93c6a63a782f2c9117e55f7f2ae253693a2
|
|
| MD5 |
a1f526baaa50646de9ff0b48215ce5d4
|
|
| BLAKE2b-256 |
abccdfaacbccbecded8fe04016e8481a90f4945105bf22f00914a5b89f1cab12
|
Provenance
The following attestation bundles were made for tablestakes-0.1.2.tar.gz:
Publisher:
release.yml on oborchers/tablestakes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tablestakes-0.1.2.tar.gz -
Subject digest:
fb68514a6cb598ec26079c4f3999b93c6a63a782f2c9117e55f7f2ae253693a2 - Sigstore transparency entry: 1165280531
- Sigstore integration time:
-
Permalink:
oborchers/tablestakes@7b74346857cb8e0a992d09e7c4df396a66eac492 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/oborchers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7b74346857cb8e0a992d09e7c4df396a66eac492 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63beda746e632d62232d7a5ade2bc3a3df6b6a3d992832746ac6b9be47fd05fa
|
|
| MD5 |
b2c6a45719f0b4911051c37d292a2f99
|
|
| BLAKE2b-256 |
20b19af8488e25d1981d4de27c765393a37bf02ed20c8703fdc6246a8e13fd23
|
Provenance
The following attestation bundles were made for tablestakes-0.1.2-py3-none-any.whl:
Publisher:
release.yml on oborchers/tablestakes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tablestakes-0.1.2-py3-none-any.whl -
Subject digest:
63beda746e632d62232d7a5ade2bc3a3df6b6a3d992832746ac6b9be47fd05fa - Sigstore transparency entry: 1165280610
- Sigstore integration time:
-
Permalink:
oborchers/tablestakes@7b74346857cb8e0a992d09e7c4df396a66eac492 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/oborchers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7b74346857cb8e0a992d09e7c4df396a66eac492 -
Trigger Event:
release
-
Statement type: