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 分