rows.page MCP server
Commit Oct 9, 2026Allows an AI agent to push CSV, JSON, or Parquet data to a web-based interface for human exploration, filtering, and SQL querying.
Also known as bitgate/rows-page-mcp, rows-page-mcp
- Stars
- 0
- Tools
- 6
- Downloads, 30 days
- —
- Latest version
- 1.0.0
- Last commit
- Oct 9, 2026
- License
- MIT
What is rows.page MCP?
rows.page allows an AI agent to push CSV, JSON, or Parquet data to a web-based interface for human exploration, filtering, and SQL querying. It exposes 6 tools, such as push, pin_finding, get_dataset.
Summary generated from the project's README
About rows.page MCP server
Sending structured data from an AI agent to a web interface for human review is what rows.page enables. Developers can use this remote MCP server to push CSV, TSV, JSON, JSONL, or Parquet data directly to a platform where people can filter, chart, and run SQL queries on the results. It works via streamable HTTP and stateless JSON-RPC, making it compatible with clients like Claude Desktop, Cursor, VS Code, and Windsurf without requiring local installation.
Users can perform anonymous pushes for free, though these datasets expire after seven days. For persistent storage and access to the list_datasets tool, an API key is required. The push tool supports various formats including arrays of objects or URLs, and allows for pinning specific findings. While anonymous users are limited to 100 MB per file and 50 pushes per day, those with accounts can manage datasets through specific keys and track changes between versions using an id_column.
What you can do with it
- 1Visualizing evaluation resultsPush a CSV file of model evaluation results to a web link and pin specific failed rows for human inspection.
- 2Tracking data changesUpload nightly order data and compare it against the previous version to see how many rows were added or modified.
- 3Analyzing remote datasetsFetch a Parquet file from a URL and create a pinned view of high-value transactions sorted by amount.
Written from the project's README. Every use case is checked against a quote from it.
How to install rows.page MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall rows.page MCP in Claude Code
$ claude mcp add --transport http rows-page-mcp https://rows.page/mcpInstall rows.page MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"rows-page-mcp": {
"url": "https://rows.page/mcp"
}
}
}Install rows.page MCP in VS Code
.vscode/mcp.json
{
"servers": {
"rows-page-mcp": {
"type": "http",
"url": "https://rows.page/mcp"
}
}
}Install rows.page MCP in VS Code CLI
$ code --add-mcp '{"name":"rows-page-mcp","type":"http","url":"https://rows.page/mcp"}'Install rows.page MCP in Codex
$ codex mcp add rows-page-mcp --url https://rows.page/mcpInstall rows.page MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.rows-page-mcp] url = "https://rows.page/mcp"
Install rows.page MCP in Gemini CLI
$ gemini mcp add -s user --transport http rows-page-mcp https://rows.page/mcpInstall rows.page MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"rows-page-mcp": {
"url": "https://rows.page/mcp",
"type": "http"
}
}
}rows.page MCP tools 6
Detected from the READMEpushpin_findingget_datasetlist_datasetsdelete_datasetget_limits
| push | — | |
| pin_finding | — | |
| get_dataset | — | |
| list_datasets | — | |
| delete_dataset | — | |
| get_limits | — |
Automated checks
Ran Nov 15, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablebitgate/rows-page-mcp is public and reachablegithub.com/bitgate/rows-page-mcp ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-10-09github.com/bitgate/rows-page-mcp ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model6 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeinitialize answered with protocol 2025-06-18 in 85 msPass
README
View on GitHubrows.page MCP server
rows.page is a place for your rows. Your agent pushes CSV, TSV, JSON, JSONL or Parquet with one tool call and gets back a link a human can explore: filter, chart columns, run SQL, read pinned findings, and see what changed since the last push. Viewing is free, no signup needed. Anonymous datasets live 7 days unless someone keeps them.
The server is remote only: https://rows.page/mcp, streamable HTTP, stateless JSON-RPC. There is nothing to install. A GET on the endpoint returns the server card.
Connect
Claude Code
claude mcp add --transport http rows https://rows.page/mcp
Claude Desktop (claude_desktop_config.json, needs Node.js)
{
"mcpServers": {
"rows": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://rows.page/mcp"]
}
}
}
Cursor (.cursor/mcp.json)
{
"mcpServers": {
"rows": {
"url": "https://rows.page/mcp"
}
}
}
VS Code (.vscode/mcp.json)
{
"servers": {
"rows": {
"type": "http",
"url": "https://rows.page/mcp"
}
}
}
Windsurf (mcp_config.json)
{
"mcpServers": {
"rows": {
"serverUrl": "https://rows.page/mcp"
}
}
}
Codex CLI (~/.codex/config.toml)
[mcp_servers.rows]
url = "https://rows.page/mcp"
Gemini CLI (~/.gemini/settings.json)
{
"mcpServers": {
"rows": {
"url": "https://rows.page/mcp",
"type": "http"
}
}
}
API key (optional)
Anonymous pushes work. An API key (created at https://rows.page/account) pushes into your account, unlocks list_datasets, and lets you re-push by a stable key. Send it as Authorization: Bearer rpk_... or append ?apiKey=rpk_... to the URL.
claude mcp add --transport http rows https://rows.page/mcp --header "Authorization: Bearer rpk_..."
Tools
| Tool | What it does |
|---|---|
push |
Push csv, tsv, json, jsonl, rows (array of objects) or a url. Optional title, summary, key, id_column, findings[] and provenance (source, run, commit). Pass dataset + token for a new version. Returns the link plus next steps for your human. |
pin_finding |
Pin a saved view (title, note, q filter, sort, cols or SQL) to a dataset. The page opens on its findings. |
get_dataset |
Meta, versions, findings, columns and the first 20 rows. |
list_datasets |
Your datasets, newest first. Needs an API key. |
delete_dataset |
Delete a dataset you own. Its URL stops working immediately. |
get_limits |
Your plan, its caps and usage. |
Every push is an immutable version. Identical bytes return unchanged: true. Re-pushes report rows new, gone and changed (set id_column so changed rows can be matched) plus a diff URL. Finding filters use the rows.page query language (status:failed latency_ms:>2000, (country:NL OR country:BE) amount:>500) or SQL starting with SELECT.
Example prompts
Push results.csv to rows.page titled "Eval run 412", pin the failed rows as a finding with a one-line note on what they have in common, and give me the link.
Query the last 24h of orders, push them to rows.page with key nightly-orders and id_column order_id, then tell me how many rows changed since yesterday.
Fetch https://example.com/export.parquet, push it to rows.page, pin a finding for amount:>500 sorted by -amount, and hand me the owner link.
Limits
Anonymous: 100 MB per file (16 MB inline per MCP push, use url for bigger files), deleted 7 days after creation unless kept, 50 pushes and 1 GB per day per IP, 60 MCP calls per minute. Free, Pro and Max plans: https://rows.page/pricing.
Links
- Docs: https://rows.page/docs/mcp
- REST API: https://rows.page/docs/api
- OpenAPI: https://rows.page/openapi.json
- llms.txt: https://rows.page/llms.txt
- Official MCP registry name:
page.rows/rows
Made by Bitgate. MIT licensed.
rows.page MCP questions
How do I add rows.page MCP to Claude Code?
Run claude mcp add --transport http rows-page-mcp https://rows.page/mcp in your terminal. Add --scope user to make it available in every project.
How do I add rows.page MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does rows.page MCP provide?
It exposes 6 tools, including push, pin_finding, get_dataset, list_datasets, delete_dataset.
How do I share data with a human using this server?
Your agent can push data formats like CSV, TSV, JSON, JSONL, or Parquet and receive a link that a human can use to filter, chart, and run SQL.
Do I need to sign up to view datasets?
No, viewing datasets is free and does not require a signup.
How long do anonymous datasets last?
Anonymous datasets are deleted after 7 days unless they are kept by someone.
What are the file size limits for anonymous pushes?
Anonymous users can push up to 100 MB per file, though MCP pushes are limited to 16 MB inline; for larger files, you should use a URL.