Quadratic

io.github.quadratichq由 GitHub 账号 quadratichq 发布v0.1.0更新于 Oct 24, 2026

AI access to Quadratic spreadsheets: open files, run Python/SQL, query connected databases.

已验证Streamable HTTP可网页运行数据库数据与分析

概览

AI 生成的概览

托管的 Quadratic MCP 服务器,让助手打开、读取和编辑 Quadratic 电子表格,运行 Python/SQL 并查询已连接的数据库。

可以做什么
通过 OAuth 设备登录流程完成 Quadratic 会话认证,并用设备码确认登录。列出可访问的文件并读取文件元数据。创建文件、打开文件以开始编辑会话,以及关闭会话。对打开的电子表格执行只读查询,包括批量操作。写入打开的电子表格,单元格值会被转换为字符串。
适用场景
适合让助手在 Quadratic 电子表格中工作:总结已有文件、根据 CSV 创建电子表格、添加 Python 代码单元格做分析,或查看已连接数据库的表结构。
运行要求
需要访问 mcp.quadratichq.com 的远程 streamable HTTP 端点,无需本地包或运行时。需要 Quadratic 账户,并在使用文件和数据工具前完成 OAuth 设备授权流程(在浏览器中打开返回的链接,再用设备码确认)。需要网络访问。
安装前请注意
服务器会要求通过浏览器登录授权访问你的 Quadratic 账户,只有信任该端点时才完成流程。写入工具会创建文件并修改电子表格内容,files_write 工具还会开启编辑会话,因此可能改动真实数据。已连接的数据库通过电子表格查询,这些来源的数据可能被助手看到。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Quadratic,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.quadratichq%2Fquadratic-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "quadratic": {
      "type": "http",
      "url": "https://mcp.quadratichq.com/mcp"
    }
  }
}

README

Quadratic MCP Cursor Plugin

This repository packages the hosted Quadratic MCP server as a Cursor plugin. Installing it connects Cursor to Quadratic spreadsheets through the production streamable HTTP MCP endpoint:

json
{  "mcpServers": {    "quadratic": {      "type": "streamable-http",      "url": "https://mcp.quadratichq.com/mcp"    }  }}

Included

  • plugins/quadratic-mcp/mcp.json adds the hosted Quadratic MCP server.
  • plugins/quadratic-mcp/rules/ provides light guidance for using Quadratic MCP safely.
  • plugins/quadratic-mcp/skills/ adds an on-demand spreadsheet workflow skill.
  • plugins/quadratic-mcp/assets/logo.svg is the marketplace logo.

Usage

After installing the plugin in Cursor, open a chat and ask to work with a Quadratic spreadsheet. If you are not authenticated yet, ask Cursor to run the Quadratic MCP auth tool with the login action and complete the device auth flow.

Example prompts:

  • "Open my Budget 2026 Quadratic file and summarize it."
  • "Create a Quadratic spreadsheet from this CSV."
  • "Add a Python code cell that analyzes sales by month."
  • "Show me the schema for my connected Postgres database."

Development

Validate the plugin manifest and referenced files:

bash
node scripts/validate-template.mjs

The marketplace manifest lives at .cursor-plugin/marketplace.json. The plugin manifest lives at plugins/quadratic-mcp/.cursor-plugin/plugin.json.

来源:README.md,提交 cff4509

工具

5

auth

Authenticate with Quadratic

Authenticate the MCP session with Quadratic. Actions: • login() — Start an OAuth device authorization flow. Returns a URL the user must open in a browser to authorize. The flow is completed by confirm_login. • confirm_login(device_code) — Complete an in-progress login by polling for user authorization. If the response indicates the user has not yet authorized, this action can be called again with the same device_code to continue polling. confirm_login is idempotent: if a later tool call reports "Not authenticated on this connection", call confirm_login again with the same device_code to re-establish auth (some clients use a new session per request, so the session that ran the tool may differ from the one that logged in). • set_token(token, email?) — Set a JWT directly (used when the OAuth device flow is not available). • logout() — Clear saved authentication for the current session.

输入参数action必填params

files_read

Read Quadratic Files

Read-only file metadata operations on Quadratic files the user has access to. No data is modified. Requires authentication. Actions: • list_files() — List all accessible files. • get_file_info(file_id) — Get metadata for a single file.

输入参数action必填params

files_write

Manage Quadratic Files

File management operations that create or modify state: create a new file, open an existing file to start an editing session, or close a session. Requires authentication. Actions: • open_file(file_id?, file_name?) — Open a file by UUID or name and start an editing session. Returns the file's web URL. • create_file(file_name, team_uuid?) — Create a new blank spreadsheet. If team_uuid is omitted, the user's first team is used. Returns the new file's UUID and web URL; the file must be opened with open_file before it can be edited. • close_file(file_id) — Close an active editing session.

输入参数action必填params

read_data

Read Spreadsheet Data

Read-only queries on the open spreadsheet. No data is modified. Safe to auto-approve. Call as {"action": "<name>", "params": {...}} — per-action params are listed in the Action Reference below. Special actions (not shown in the action enum): • batch — {"action": "batch", "params": {"actions": [{"action": "<name>", "params": {...}}, ...]}}. Runs reads in parallel; individual failures are reported per-entry without short-circuiting. • context — {"action": "context", "params": {"topic": "<name>"}} or {"action": "context", "params": {"action": "<name>"}}. Returns deeper docs for a topic or a single action's signature. Plural "topics" / "actions" arrays are also accepted and may be combined. Topics: python, javascript, formula, connection, validation, a1, quadratic, chart, pivot_table. Action Reference • get_cell_data(selection, page?, sheet_name?) — Returns cell values for a selection in A1 notation. Supports comma-separated ranges to fetch multiple areas in ONE call, including across different sheets. Examples: "A1:B10, D1:E10", "TableName, OtherTable", "'Sheet1'!A1:B10, 'Sheet2'!C1:D10". Table names are globally unique so they work without sheet prefixes. For cell ranges on other sheets use 'SheetName'!Range. Only use when you need the full dataset (aggregations, lookups, analysis). The file summary already includes sample rows. Results may be paginated — use page (0-based) for additional pages. • has_cell_data(selection, sheet_name?) — Check if any cells in a selection have data. Returns true if ANY cell contains data. Use before creating/moving tables or code to avoid spill errors. All ranges MUST be on the same sheet. • get_code_cell_value(code_cell_position?, code_cell_name?, sheet_name?) — Get full code from an existing Python, JavaScript, or connection code cell. Do NOT use for formula cells — formulas are already in get_cell_data results and the file summary. • get_text_formats(selection, page?, sheet_name?) — Get text formatting info. Use table column refer

输入参数action必填params

write_data

Write Spreadsheet Data

Write operations on the open spreadsheet. Call as {"action": "<name>", "params": {...}} — per-action params are listed in the Action Reference below. Numbers, booleans, and nulls in cell values are coerced to strings. Special actions (not shown in the action enum): • batch — {"action": "batch", "params": {"actions": [{"action": "<name>", "params": {...}}, ...]}}. Runs writes sequentially; errors short-circuit the batch. • context — {"action": "context", "params": {"topic": "<name>"}} or {"action": "context", "params": {"action": "<name>"}}. Returns deeper docs for a topic or a single action's signature. Plural "topics" / "actions" arrays are also accepted and may be combined. Topics: python, javascript, formula, connection, validation, a1, quadratic, chart, pivot_table. Action Reference Cell Data: • set_cell_values(top_left_position, cell_values, sheet_name?) — Sets cell values as a 2D string array (first row = headers). top_left_position: single cell in A1 notation. Don't place over existing data unless requested. Values replace existing content; use empty string to clear. For merged cells, place at the anchor (top-left) cell. Prefer this over add_data_table for tabular data; only use add_data_table when the user explicitly asks for a data table or the file already uses data tables. When writing tabular data as plain cells, format the header row afterward with set_text_formats (at least bold) so it's visually distinct — plain cells don't auto-style headers like data tables do. Don't use for formulas or code. • delete_cells(selection, sheet_name?) — Delete cell values in a selection (A1 notation). Don't delete cells referenced by code cells unless explicitly asked. To delete table columns: "TableName[Column Name]". To delete tables: "TableName". • move_cells(source_selection_rect, target_top_left_position, sheet_name?) — Move a rectangular block of cells. Target is the top-left corner (single cell). For spilled code cells, move just the anchor cell. • add_data_ta

输入参数action必填params

版本历史

1
  1. v0.1.0最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分