everyrow-mcp 0.1.9__tar.gz → 0.1.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -217,3 +217,9 @@ __marimo__/
217
217
 
218
218
  .history/
219
219
  .python-version
220
+
221
+ # MCPB bundles
222
+ *.mcpb
223
+
224
+ # MCP registry tokens
225
+ .mcpregistry_*
@@ -0,0 +1,13 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ .pytest_cache/
5
+ .mypy_cache/
6
+ *.egg-info/
7
+ server/lib/
8
+ server/venv/
9
+ .mcpregistry_github_token
10
+ .mcpregistry_registry_token
11
+ tests/
12
+ dist/
13
+ .ruff_cache/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: everyrow-mcp
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: MCP server for everyrow: agent ops at spreadsheet scale
5
5
  Requires-Python: >=3.12
6
6
  Requires-Dist: everyrow>=0.1.5
@@ -17,7 +17,15 @@ This server exposes everyrow's 5 core operations as MCP tools, allowing LLM appl
17
17
 
18
18
  **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.
19
19
 
20
- ## Setup
20
+ ## Installation
21
+
22
+ ### Claude Desktop
23
+
24
+ Download the latest `.mcpb` bundle from the [GitHub Releases](https://github.com/futuresearch/everyrow-sdk/releases) page and double-click to install in Claude Desktop. You'll be prompted to enter your everyrow API key during setup.
25
+
26
+ > **Note:** The MCPB bundle works in Claude Desktop's **Chat** mode. Due to a [known limitation](https://github.com/anthropics/claude-code/issues/20377), local MCP servers are not currently exposed in Cowork mode.
27
+
28
+ ### Manual Config
21
29
 
22
30
  The server requires an everyrow API key. Get one at [everyrow.io/api-key](https://everyrow.io/api-key) ($20 free credit).
23
31
 
@@ -140,7 +148,7 @@ cd everyrow-mcp
140
148
  uv sync
141
149
  uv run pytest
142
150
  ```
143
- For MCP registry publishing:
151
+ For MCP [registry publishing](https://modelcontextprotocol.info/tools/registry/publishing/#package-deployment):
144
152
 
145
153
  mcp-name: io.github.futuresearch/everyrow-mcp
146
154
 
@@ -6,7 +6,15 @@ This server exposes everyrow's 5 core operations as MCP tools, allowing LLM appl
6
6
 
7
7
  **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.
8
8
 
9
- ## Setup
9
+ ## Installation
10
+
11
+ ### Claude Desktop
12
+
13
+ Download the latest `.mcpb` bundle from the [GitHub Releases](https://github.com/futuresearch/everyrow-sdk/releases) page and double-click to install in Claude Desktop. You'll be prompted to enter your everyrow API key during setup.
14
+
15
+ > **Note:** The MCPB bundle works in Claude Desktop's **Chat** mode. Due to a [known limitation](https://github.com/anthropics/claude-code/issues/20377), local MCP servers are not currently exposed in Cowork mode.
16
+
17
+ ### Manual Config
10
18
 
11
19
  The server requires an everyrow API key. Get one at [everyrow.io/api-key](https://everyrow.io/api-key) ($20 free credit).
12
20
 
@@ -129,7 +137,7 @@ cd everyrow-mcp
129
137
  uv sync
130
138
  uv run pytest
131
139
  ```
132
- For MCP registry publishing:
140
+ For MCP [registry publishing](https://modelcontextprotocol.info/tools/registry/publishing/#package-deployment):
133
141
 
134
142
  mcp-name: io.github.futuresearch/everyrow-mcp
135
143
 
@@ -0,0 +1,70 @@
1
+ {
2
+ "manifest_version": "0.4",
3
+ "name": "everyrow-mcp",
4
+ "display_name": "Everyrow MCP Server",
5
+ "version": "0.1.10",
6
+ "description": "AI-powered dataframe ops: transform, dedupe, merge, rank, and screen with natural language",
7
+ "long_description": "MCP 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.",
8
+ "author": {
9
+ "name": "FutureSearch",
10
+ "url": "https://everyrow.io"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/futuresearch/everyrow-sdk.git"
15
+ },
16
+ "homepage": "https://everyrow.io",
17
+ "documentation": "https://github.com/futuresearch/everyrow-sdk/tree/main/everyrow-mcp",
18
+ "support": "https://github.com/futuresearch/everyrow-sdk/issues",
19
+ "server": {
20
+ "type": "uv",
21
+ "entry_point": "src/everyrow_mcp/server.py",
22
+ "mcp_config": {
23
+ "command": "uv",
24
+ "args": ["run", "${__dirname}/src/everyrow_mcp/server.py"],
25
+ "env": {
26
+ "EVERYROW_API_KEY": "${user_config.api_key}"
27
+ }
28
+ }
29
+ },
30
+ "tools": [
31
+ {
32
+ "name": "everyrow_screen",
33
+ "description": "Filter CSV rows based on criteria that require judgment"
34
+ },
35
+ {
36
+ "name": "everyrow_rank",
37
+ "description": "Score and sort CSV rows based on qualitative criteria"
38
+ },
39
+ {
40
+ "name": "everyrow_dedupe",
41
+ "description": "Remove duplicate rows using semantic equivalence"
42
+ },
43
+ {
44
+ "name": "everyrow_merge",
45
+ "description": "Join two CSV files using intelligent entity matching"
46
+ },
47
+ {
48
+ "name": "everyrow_agent",
49
+ "description": "Run web research agents on each row of a CSV"
50
+ }
51
+ ],
52
+ "user_config": {
53
+ "api_key": {
54
+ "type": "string",
55
+ "title": "Everyrow API Key",
56
+ "description": "Your API key from https://everyrow.io/api-key ($20 free credit)",
57
+ "sensitive": true,
58
+ "required": true
59
+ }
60
+ },
61
+ "compatibility": {
62
+ "platforms": ["darwin", "linux", "win32"],
63
+ "runtimes": {
64
+ "python": ">=3.12"
65
+ }
66
+ },
67
+ "keywords": ["everyrow", "dataframe", "csv", "ai", "data-processing", "dedupe", "merge", "rank", "screen"],
68
+ "license": "MIT",
69
+ "privacy_policies": ["https://futuresearch.ai/privacy/"]
70
+ }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "everyrow-mcp"
3
- version = "0.1.9"
3
+ version = "0.1.10"
4
4
  description = "MCP server for everyrow: agent ops at spreadsheet scale"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -9,13 +9,13 @@
9
9
  "subfolder": "everyrow-mcp"
10
10
  },
11
11
  "websiteUrl": "https://github.com/futuresearch/everyrow-sdk/tree/main/everyrow-mcp",
12
- "version": "0.1.9",
12
+ "version": "0.1.10",
13
13
  "packages": [
14
14
  {
15
15
  "registryType": "pypi",
16
16
  "registryBaseUrl": "https://pypi.org",
17
17
  "identifier": "everyrow-mcp",
18
- "version": "0.1.9",
18
+ "version": "0.1.10",
19
19
  "runtimeHint": "uvx",
20
20
  "transport": {
21
21
  "type": "stdio"
@@ -1,6 +1,7 @@
1
1
  """MCP server for everyrow SDK operations."""
2
2
 
3
3
  import json
4
+ import logging
4
5
  import os
5
6
  import sys
6
7
  from contextlib import asynccontextmanager
@@ -30,7 +31,6 @@ async def lifespan(_server: FastMCP):
30
31
  response = await whoami(client=c)
31
32
  if response is None:
32
33
  raise RuntimeError("Failed to authenticate with everyrow API")
33
- print("everyrow-mcp: Authenticated successfully")
34
34
  except Exception as e:
35
35
  raise RuntimeError(f"everyrow-mcp startup failed: {e}") from e
36
36
 
@@ -539,6 +539,14 @@ def _schema_to_model(name: str, schema: dict[str, Any]) -> type[BaseModel]:
539
539
 
540
540
  def main():
541
541
  """Run the MCP server."""
542
+ # Configure logging to use stderr only (stdout is reserved for JSON-RPC)
543
+ logging.basicConfig(
544
+ level=logging.WARNING,
545
+ stream=sys.stderr,
546
+ format="%(levelname)s: %(message)s",
547
+ force=True,
548
+ )
549
+
542
550
  # Check for API key before starting
543
551
  if "EVERYROW_API_KEY" not in os.environ:
544
552
  print(
@@ -214,7 +214,7 @@ wheels = [
214
214
 
215
215
  [[package]]
216
216
  name = "everyrow-mcp"
217
- version = "0.1.0"
217
+ version = "0.1.9"
218
218
  source = { editable = "." }
219
219
  dependencies = [
220
220
  { name = "everyrow" },
@@ -972,8 +972,8 @@ name = "uvicorn"
972
972
  version = "0.40.0"
973
973
  source = { registry = "https://pypi.org/simple" }
974
974
  dependencies = [
975
- { name = "click" },
976
- { name = "h11" },
975
+ { name = "click", marker = "sys_platform != 'emscripten'" },
976
+ { name = "h11", marker = "sys_platform != 'emscripten'" },
977
977
  ]
978
978
  sdist = { url = "https://files.pythonhosted.org/packages/c3/d1/8f3c683c9561a4e6689dd3b1d345c815f10f86acd044ee1fb9a4dcd0b8c5/uvicorn-0.40.0.tar.gz", hash = "sha256:839676675e87e73694518b5574fd0f24c9d97b46bea16df7b8c05ea1a51071ea", size = 81761, upload-time = "2025-12-21T14:16:22.45Z" }
979
979
  wheels = [