everyrow-mcp 0.1.9__py3-none-any.whl → 0.2.0__py3-none-any.whl

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.
everyrow_mcp/server.py CHANGED
@@ -1,10 +1,11 @@
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
7
- from typing import Any
8
+ from typing import Any, Literal
8
9
 
9
10
  import pandas as pd
10
11
  from everyrow.api_utils import create_client
@@ -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
 
@@ -354,6 +354,10 @@ class MergeInput(BaseModel):
354
354
  description="Optional column name in the right table to use as the merge key. "
355
355
  "If not provided, the LLM will determine the best matching strategy.",
356
356
  )
357
+ use_web_search: Literal["auto", "yes", "no"] | None = Field(
358
+ default=None,
359
+ description='Optional. Control web search behavior: "auto" tries LLM merge first then conditionally searches, "no" skips web search entirely, "yes" forces web search on every row. Defaults to "auto" if not provided.',
360
+ )
357
361
 
358
362
  @field_validator("left_csv", "right_csv")
359
363
  @classmethod
@@ -395,6 +399,7 @@ async def everyrow_merge(params: MergeInput) -> str:
395
399
  right_table=right_df,
396
400
  merge_on_left=params.merge_on_left,
397
401
  merge_on_right=params.merge_on_right,
402
+ use_web_search=params.use_web_search,
398
403
  )
399
404
 
400
405
  output_file = resolve_output_path(params.output_path, params.left_csv, "merged")
@@ -539,6 +544,14 @@ def _schema_to_model(name: str, schema: dict[str, Any]) -> type[BaseModel]:
539
544
 
540
545
  def main():
541
546
  """Run the MCP server."""
547
+ # Configure logging to use stderr only (stdout is reserved for JSON-RPC)
548
+ logging.basicConfig(
549
+ level=logging.WARNING,
550
+ stream=sys.stderr,
551
+ format="%(levelname)s: %(message)s",
552
+ force=True,
553
+ )
554
+
542
555
  # Check for API key before starting
543
556
  if "EVERYROW_API_KEY" not in os.environ:
544
557
  print(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: everyrow-mcp
3
- Version: 0.1.9
3
+ Version: 0.2.0
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,11 +17,27 @@ 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
21
 
22
22
  The server requires an everyrow API key. Get one at [everyrow.io/api-key](https://everyrow.io/api-key) ($20 free credit).
23
23
 
24
- Either set the API key in your shell environment, or hardcode it directly in the config below.
24
+ ### Claude Desktop
25
+
26
+ 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.
27
+
28
+ > **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.
29
+
30
+ ### Cursor
31
+ 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}`
32
+ ```bash
33
+ export EVERYROW_API_KEY=your_key_here
34
+ ```
35
+
36
+ [![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=everyrow&config=eyJlbnYiOnsiRVZFUllST1dfQVBJX0tFWSI6IiR7ZW52OkVWRVJZUk9XX0FQSV9LRVl9In0sImNvbW1hbmQiOiJ1dnggZXZlcnlyb3ctbWNwIn0%3D)
37
+
38
+ ### Manual Config
39
+
40
+ 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.
25
41
 
26
42
  ```bash
27
43
  export EVERYROW_API_KEY=your_key_here
@@ -140,7 +156,7 @@ cd everyrow-mcp
140
156
  uv sync
141
157
  uv run pytest
142
158
  ```
143
- For MCP registry publishing:
159
+ For MCP [registry publishing](https://modelcontextprotocol.info/tools/registry/publishing/#package-deployment):
144
160
 
145
161
  mcp-name: io.github.futuresearch/everyrow-mcp
146
162
 
@@ -0,0 +1,7 @@
1
+ everyrow_mcp/__init__.py,sha256=26a6CKpWpep-gfie5kxyAJkxshp6ChjxsP0HbfcXL-0,63
2
+ everyrow_mcp/server.py,sha256=QmfFVjSr-EXX0hLn268SAswSuYFmeiwHK1H5Fv_Y5Kw,18351
3
+ everyrow_mcp/utils.py,sha256=I79K5y844uIT2pMkXouwLrkpHbxMXlPQRfJneWclHZU,2477
4
+ everyrow_mcp-0.2.0.dist-info/METADATA,sha256=aFb29vFw103EHQTeS_oNcHIeuSH1PtuBJdn8K-Jz55o,5371
5
+ everyrow_mcp-0.2.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
6
+ everyrow_mcp-0.2.0.dist-info/entry_points.txt,sha256=0QaEmw8HuQP8LnTYC5V3ZBFFVftn_lBicmXlmlztYZM,58
7
+ everyrow_mcp-0.2.0.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- everyrow_mcp/__init__.py,sha256=26a6CKpWpep-gfie5kxyAJkxshp6ChjxsP0HbfcXL-0,63
2
- everyrow_mcp/server.py,sha256=VE5cz2nuwItCwClfVTTeG2QfzrqY3tIw1q-d2SKP3_A,17788
3
- everyrow_mcp/utils.py,sha256=I79K5y844uIT2pMkXouwLrkpHbxMXlPQRfJneWclHZU,2477
4
- everyrow_mcp-0.1.9.dist-info/METADATA,sha256=UxFA6cLGBKxlDxIbCp7_YEpj7VLsPFVEuEDrdFLtebA,4141
5
- everyrow_mcp-0.1.9.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
6
- everyrow_mcp-0.1.9.dist-info/entry_points.txt,sha256=0QaEmw8HuQP8LnTYC5V3ZBFFVftn_lBicmXlmlztYZM,58
7
- everyrow_mcp-0.1.9.dist-info/RECORD,,