numbers-cli

numbers-cli

Enables AI agents to create, read, view, and edit Apple Numbers spreadsheets through the Model Context Protocol, leveraging both a parser engine and the Numbers application for formula evaluation and export.

Category
Visit Server

README

numbers-cli

An OfficeCli-style command line and Model Context Protocol server for Apple Numbers spreadsheets. It lets you (or an AI agent) create, read, view, and edit .numbers files, delegating the things only Numbers can do - evaluating formulas, rendering, native export - to the Numbers application.

Why this exists

OfficeCli gives one-line control over Word, Excel, and PowerPoint. Those are documented zip-and-xml formats. Apple Numbers is not: a .numbers file is a bundle of Snappy-compressed protocol buffer streams (the "IWA" format) with no public specification. This tool takes the same layered approach as OfficeCli, built on the two engines that exist for Numbers.

Two engines

  • Parser engine - numbers-parser reads and writes .numbers directly. Fast, no application, cross platform. It cannot evaluate formulas and has some format limits.
  • Application engine - the Numbers application driven through osascript. It evaluates formulas, renders pages, and exports. macOS only, needs Numbers installed and Automation permission.

The router chooses per operation and, for formula edits, runs the write in the parser then hands the formula cells to Numbers so they evaluate.

Install

Homebrew (recommended, macOS)

brew tap indiebrain/numbers
brew install numbers-cli

The command nmbr is then on your path. The formula installs the core command line; the Model Context Protocol server is an optional extra (see below).

pip / pipx (from source)

pipx install 'git+https://github.com/indiebrain/numbers-cli'          # core command line
pipx install 'numbers-cli[mcp] @ git+https://github.com/indiebrain/numbers-cli'  # also enable the MCP server

Claude Code skill

A Claude Code skill ships with the tool. Install it into your skills directory so Claude Code can drive nmbr for you:

nmbr skill install            # copies the skill into ~/.claude/skills/apple-numbers
nmbr skill install --dir DIR  # or into a directory you choose
nmbr skill path               # print where the bundled skill lives

Restart Claude Code afterward to load it. The skill is installed at command time (not during brew install, which runs in a sandbox that cannot write to your home directory).

The MCP server is optional

The Model Context Protocol server pulls in a large dependency tree (pydantic, starlette, uvicorn, and friends), so it is an optional extra rather than a core dependency. Install it only if you want nmbr mcp:

pip install 'numbers-cli[mcp]'

Without it, every other command works; nmbr mcp prints a clear message telling you to install the extra.

Quick start

nmbr create budget.numbers --sheets Budget
nmbr set budget.numbers "/sheet['Budget']/table[1]/cell[A1]" "Rent"
nmbr set budget.numbers "/sheet['Budget']/table[1]/cell[B1]" 1200
nmbr --human view budget.numbers "/sheet[1]/table[1]" --as csv
nmbr --human query budget.numbers "Rent"

Every command prints one JSON object ({"ok": true, "data": ...} or a structured error); pass --human for readable output.

Layers

  • L1 view - view renders a document, sheet, or table as text, csv, markdown, outline, json, html, pdf, or png.
  • L2 dom - get, set, add, remove, query over a stable path address space such as /sheet[1]/table[1]/cell[B2].
  • L3 raw - raw inspects the underlying protocol buffer objects (read only).

Plus batch (an operation list applied in one pass), merge (fill {{placeholders}} from data), and dump (serialise to a replayable op-list).

Honest limits

  • numbers-parser cannot write a live formula (it stores =A1+A2 as text), so formula edits route to the Numbers application, or fail with a clear ENGINE_UNAVAILABLE error when it is unavailable.
  • It cannot delete a sheet or table; those are refused with a rebuild hint. Rows and columns delete normally.
  • The application engine (formulas, recalc, export, pdf/png) is macOS only and needs Numbers plus Automation permission; the parser engine works anywhere.
  • Password-protected files cannot be opened.

License

GNU Lesser General Public License v3.0 or later (LGPL-3.0-or-later). See COPYING.LESSER (the LGPLv3 additional permissions) and COPYING (the GPLv3 base license).

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured