MCP server for everyrow: agent ops at spreadsheet scale
Project description
everyrow MCP Server
MCP (Model Context Protocol) server for everyrow: agent ops at spreadsheet scale.
This server exposes everyrow's 5 core operations as MCP tools, allowing LLM applications to screen, rank, dedupe, merge, and run agents on CSV files.
All tools operate on local CSV files. Provide absolute file paths as input, and transformed results are written to new CSV files at your specified output path.
Installation
The server requires an everyrow API key. Get one at everyrow.io/api-key ($20 free credit).
Claude Desktop
Download the latest .mcpb bundle from the GitHub Releases page and double-click to install in Claude Desktop. You'll be prompted to enter your everyrow API key during setup. After installing the bundle, you can use everyrow from Chat, Cowork and Code within Claude Desktop.
Cursor
Set the environment variable in your terminal shell before opening cursor. You may need to re-open cursor from your shell after this. Alternatively, hardcode the api key within cursor settings instead of the hard-coded ${env:EVERYROW_API_KEY}
export EVERYROW_API_KEY=your_key_here
Manual Config
Either set the API key in your shell environment as mentioned above, or hardcode it directly in the config below. Environment variable interpolation may differ between MCP clients.
export EVERYROW_API_KEY=your_key_here
Add this to your MCP config. If you have uv installed:
{
"mcpServers": {
"everyrow": {
"command": "uvx",
"args": ["everyrow-mcp"],
"env": {
"EVERYROW_API_KEY": "${EVERYROW_API_KEY}"
}
}
}
}
Alternatively, install with pip (ideally in a venv) and use "command": "everyrow-mcp" instead of uvx.
Workflow
All operations follow an async pattern:
- Start - Call an operation tool (e.g.,
everyrow_agent) to start a task. Returns immediately with a task ID and session URL. - Monitor - Call
everyrow_progress(task_id)repeatedly to check status. The tool blocks ~12s to limit the polling rate. - Retrieve - Once complete, call
everyrow_results(task_id, output_path)to save results to CSV.
Available Tools
everyrow_screen
Filter CSV rows based on criteria that require judgment.
Parameters:
- task: Natural language description of screening criteria
- input_csv: Absolute path to input CSV
- response_schema: (optional) JSON schema for custom response fields
Example: Filter job postings for "remote-friendly AND senior-level AND salary disclosed"
everyrow_rank
Score and sort CSV rows based on qualitative criteria.
Parameters:
- task: Natural language instructions for scoring a single row
- input_csv: Absolute path to input CSV
- field_name: Name of the score field to add
- field_type: Type of the score field (float, int, str, bool)
- ascending_order: Sort direction (default: true)
- response_schema: (optional) JSON schema for custom response fields
Example: Rank leads by "likelihood to need data integration solutions"
everyrow_dedupe
Remove duplicate rows using semantic equivalence.
Parameters:
- equivalence_relation: Natural language description of what makes rows duplicates
- input_csv: Absolute path to input CSV
Example: Dedupe contacts where "same person even with name abbreviations or career changes"
everyrow_merge
Join two CSV files using intelligent entity matching (LEFT JOIN semantics).
Parameters:
- task: Natural language description of how to match rows
- left_csv: The table being enriched — all its rows are kept in the output
- right_csv: The lookup/reference table — its columns are appended to matches; unmatched left rows get nulls
- merge_on_left: (optional) Only set if you expect exact string matches on this column or want to draw agent attention to it. Fine to omit.
- merge_on_right: (optional) Only set if you expect exact string matches on this column or want to draw agent attention to it. Fine to omit.
- use_web_search: (optional) "auto" (default), "yes", or "no"
- relationship_type: (optional) "many_to_one" (default) — multiple left rows can match one right row. "one_to_one" — only when both tables have unique entities of the same kind.
Example: Match software products (left, enriched) to parent companies (right, lookup): Photoshop -> Adobe
everyrow_agent
Run web research agents on each row of a CSV.
Parameters:
- task: Natural language description of research task
- input_csv: Absolute path to input CSV
- response_schema: (optional) JSON schema for custom response fields
Example: "Find this company's latest funding round and lead investors"
everyrow_progress
Check progress of a running task.
Parameters:
- task_id: The task ID returned by an operation tool
Blocks ~12s before returning status. Call repeatedly until task completes.
everyrow_results
Retrieve and save results from a completed task.
Parameters:
- task_id: The task ID of the completed task
- output_path: Full absolute path to output CSV file (must end in .csv)
Only call after everyrow_progress reports status "completed".
Development
cd everyrow-mcp
uv sync
uv run pytest
For MCP registry publishing:
mcp-name: io.github.futuresearch/everyrow-mcp
License
MIT - See LICENSE.txt
Project details
Release history Release notifications | RSS feed
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 everyrow_mcp-0.3.4.tar.gz.
File metadata
- Download URL: everyrow_mcp-0.3.4.tar.gz
- Upload date:
- Size: 25.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
017173bbccaefeb3783c1a0069c1b33e24e2fe06b1047de9f4e1ad90b72669b6
|
|
| MD5 |
3670dea584388147af2aee3f3b4b8f45
|
|
| BLAKE2b-256 |
7bb64a2a18e1ff1f5dffbdd61d44dc0de053234886ca22724670365c430989a3
|
Provenance
The following attestation bundles were made for everyrow_mcp-0.3.4.tar.gz:
Publisher:
publish.yaml on futuresearch/everyrow-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
everyrow_mcp-0.3.4.tar.gz -
Subject digest:
017173bbccaefeb3783c1a0069c1b33e24e2fe06b1047de9f4e1ad90b72669b6 - Sigstore transparency entry: 971458725
- Sigstore integration time:
-
Permalink:
futuresearch/everyrow-sdk@19e2a6dec4ce7010f71186c230211b3d4985b0f6 -
Branch / Tag:
refs/tags/v0.3.4 - Owner: https://github.com/futuresearch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@19e2a6dec4ce7010f71186c230211b3d4985b0f6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file everyrow_mcp-0.3.4-py3-none-any.whl.
File metadata
- Download URL: everyrow_mcp-0.3.4-py3-none-any.whl
- Upload date:
- Size: 13.0 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 |
c06271261339349e92dd63f448677183f321dc9303ad673accf8b29e365bd494
|
|
| MD5 |
78a622a500363548460e87cc99cadb13
|
|
| BLAKE2b-256 |
4a35d11d5beb494aaf418dd3779ee9dbc7e3d850b4a01b86c2e439ed1a6cb38c
|
Provenance
The following attestation bundles were made for everyrow_mcp-0.3.4-py3-none-any.whl:
Publisher:
publish.yaml on futuresearch/everyrow-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
everyrow_mcp-0.3.4-py3-none-any.whl -
Subject digest:
c06271261339349e92dd63f448677183f321dc9303ad673accf8b29e365bd494 - Sigstore transparency entry: 971458791
- Sigstore integration time:
-
Permalink:
futuresearch/everyrow-sdk@19e2a6dec4ce7010f71186c230211b3d4985b0f6 -
Branch / Tag:
refs/tags/v0.3.4 - Owner: https://github.com/futuresearch
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@19e2a6dec4ce7010f71186c230211b3d4985b0f6 -
Trigger Event:
release
-
Statement type: