mcp-sheet-filler

mcp-sheet-filler

MCP server for storing and safely auto-filling tabular data. Enables AI agents to read objects, identify empty fields, collect values, and write them back without overwriting existing data.

Category
访问服务器

README

mcp-sheet-filler

MCP server for storing and safely auto-filling tabular data. Provides tools for an AI agent to read objects, identify empty auto-fill fields, collect values, and write them back — without overwriting existing data.

tools list

demo

demo sheet

Installation

npm install
npm run build

Configuration

Environment Variables

Variable Description Default
OBJECT_KEY_FIELD Key field name for objects name

Google Sheets:

Variable Description Default
GOOGLE_SHEET_ID Google Sheet ID —
SHEET_TAB_DATA Data sheet name data
SHEET_TAB_FIELDS Fields schema sheet name fields
GOOGLE_SERVICE_ACCOUNT_KEY Service account JSON (string or file path) —

Google Sheets Setup

  1. Create a Google Cloud project and enable the Google Sheets API
  2. Create a service account and download the JSON key
  3. Share your Google Sheet with the service account email (with Editor access)
  4. Set GOOGLE_SERVICE_ACCOUNT_KEY to the JSON content or file path

Sheet structure:

  • fields sheet: columns name, description, auto, instructions, type, example
  • data sheet: first row is headers (field names), first column is the object key, each subsequent row is an object

Usage

With Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "sheet-filler": {
      "command": "node",
      "args": ["/path/to/mcp-sheet-filler/dist/index.js"],
      "env": {
        "GOOGLE_SHEET_ID": "your-google-sheet-id",
        "GOOGLE_SERVICE_ACCOUNT_KEY": "/path/to/service-account.json"
      }
    }
  }
}

Development

npm run dev    # Run with tsx
npm run build  # Build TypeScript
npm start      # Run built version
npm test       # Run tests

Data Model

Fields

Schema for object fields, stored in fields table/sheet:

Column Type Description
name string Unique field name (required)
description string Field description
auto boolean Auto-fill flag
instructions string Instructions for auto-filling
type string Data type for validation
example string Example value

Objects

Data objects stored in data table/sheet. Each row is an object, each column is a field. Objects are identified by their key field (OBJECT_KEY_FIELD, default: name).

Supported Types

  • string (default)
  • number
  • date (ISO-8601: YYYY-MM-DD)
  • datetime (ISO-8601)
  • url
  • email
  • json
  • enum:val1|val2|val3

Empty Value Rules

A value is considered empty if it is: null, undefined, empty string, or whitespace-only.

Values like 0, false, "0" are not empty.

MCP Tools

filler_init

Initialize the current spreadsheet by creating data and fields tabs with header rows. Errors if either tab already exists. No parameters required.

{}

Returns { success, fieldsTab, dataTab, keyField }.

filler_list_fields

List all fields or a subset.

{ "names": ["field1", "field2"], "include_instructions": true }

filler_add_fields

Add new fields (batch).

{
  "fields": [
    {
      "name": "website",
      "description": "Company website",
      "auto": true,
      "type": "url",
      "instructions": "Find the official website"
    }
  ]
}

Returns { results: { [name]: { created: true } | { error: "..." } } }.

filler_get_objects_by_name

Get objects by their names (batch).

{ "names": ["Acme Corp", "Globex"] }

Returns { objects: [{ found, object?, missing? } | { found: false, name }] }.

filler_add_objects_by_name

Create new objects (batch).

{ "names": ["Acme Corp", "Globex"] }

Returns { results: { [name]: { created: true } | { error: "..." } } }.

filler_save_objects_no_overwrite

Save field values for multiple objects without overwriting non-empty fields.

{
  "objects": [
    {
      "name": "Acme Corp",
      "values": {
        "website": "https://acme.com",
        "founded": "1990"
      }
    }
  ]
}

Returns status for each field per object:

  • saved — value was saved
  • skipped_already_set — field already has a value
  • rejected_unknown_field — field not in schema
  • rejected_invalid_type — value failed type validation

filler_get_next_missing_fields_objects

Get objects that have missing auto-fill fields (default limit 1).

{ "limit": 1, "include_field_meta": true, "skip_filled_fields": false }
  • skip_filled_fields — when true, omits already-filled field values from object.values (returns {}), reducing response size for wide sheets

Returns { found, objects, count, remain } — use this to process objects one by one or in batches.

Workflow Example

  1. Agent calls filler_list_fields to understand the schema
  2. Agent calls filler_get_next_missing_fields_objects to get objects with missing fields
  3. Agent collects values using instructions from field metadata
  4. Agent calls filler_save_objects_no_overwrite to save values safely

Error Codes

Code Description
backend_not_configured Storage backend not configured
field_already_exists Field with this name already exists
field_not_found Field not found
object_already_exists Object with this name already exists
object_not_found Object not found
invalid_argument Invalid argument provided
storage_error Storage operation failed

Tested with

  • ChatGPT app (developer mode)
  • Claude connector (custom connector)
  • Cursor
  • Antigravity
  • VSCode
  • ClaudeClaw
  • telegram-functions-bot

License

ISC

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选