|
| 1 | +<div align="center"> |
| 2 | + |
| 3 | +<img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/airtable.svg" alt="Airtable" width="80" /> |
| 4 | + |
1 | 5 | # Airtable Formula |
2 | 6 |
|
3 | | -<p align="center"> |
4 | | - <a href="https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula"><img src="https://img.shields.io/visual-studio-marketplace/v/Nskha.airtable-formula" alt="VS Code Marketplace" /></a> |
5 | | - <a href="https://www.npmjs.com/package/airtable-user-mcp"><img src="https://img.shields.io/npm/v/airtable-user-mcp" alt="npm version" /></a> |
6 | | - <a href="https://github.com/Automations-Project/VSCode-Airtable-Formula/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License" /></a> |
7 | | -</p> |
| 7 | +**Formula editor, MCP server, and AI skills for VS Code** |
8 | 8 |
|
9 | | -Airtable formula editor, MCP server installer, and AI skills for VS Code. |
| 9 | +[](https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula) |
| 10 | +[](https://www.npmjs.com/package/airtable-user-mcp) |
| 11 | +[](LICENSE) |
| 12 | + |
| 13 | +<br /> |
10 | 14 |
|
11 | 15 | > **Not affiliated with Airtable Inc.** This is a community-maintained project. |
12 | 16 |
|
| 17 | +</div> |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +## What's In This Repo |
| 22 | + |
| 23 | +This monorepo ships **two products** from one source tree: |
| 24 | + |
| 25 | +<div align="center"> |
| 26 | + |
| 27 | +| | Product | Install | |
| 28 | +|:-:|:--------|:--------| |
| 29 | +| <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/extension/images/icon.png" width="24" /> | **Airtable Formula** — VS Code extension | [Marketplace](https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula) | |
| 30 | +| <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/mcp-server/assets/icon.png" width="24" /> | **airtable-user-mcp** — Standalone MCP server | `npx airtable-user-mcp` | |
| 31 | + |
| 32 | +</div> |
| 33 | + |
| 34 | +--- |
| 35 | + |
13 | 36 | ## Features |
14 | 37 |
|
15 | | -- **Formula Editor** — Syntax highlighting, IntelliSense, beautify/minify for `.formula` files |
16 | | -- **MCP Server** — One-click multi-IDE MCP configuration (Cursor, Windsurf, Claude Code, Cline, Amp) |
17 | | -- **AI Files** — Install Airtable-specific skills, rules, workflows, and agents for AI coding assistants |
18 | | -- **Airtable Login** — Credentials in OS keychain, headless session with auto-refresh |
| 38 | +### VS Code Extension |
| 39 | + |
| 40 | +- **Formula Editor** — Syntax highlighting, IntelliSense, beautify / minify for `.formula` files |
| 41 | +- **MCP Server** — One-click MCP registration for multiple IDEs |
| 42 | +- **AI Skills** — Auto-install Airtable-specific skills, rules, and workflows for AI coding assistants |
| 43 | +- **Airtable Login** — Credentials in OS keychain, browser-based auth with auto-refresh |
19 | 44 | - **Dashboard** — React webview with Overview, Setup, and Settings tabs |
20 | 45 |
|
21 | | -## Standalone MCP Server |
| 46 | +<!-- TODO: Replace with actual screenshot --> |
| 47 | +<!-- <p align="center"><img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/extension/images/screenshot-dashboard.png" alt="Dashboard Screenshot" width="700" /></p> --> |
| 48 | + |
| 49 | +### MCP Server (30 Tools) |
| 50 | + |
| 51 | +Manage Airtable bases with capabilities **not available through the official REST API**: |
| 52 | + |
| 53 | +| Category | Tools | Highlights | |
| 54 | +|:---------|:-----:|:-----------| |
| 55 | +| **Schema Read** | 5 | Full schema inspection — bases, tables, fields, views | |
| 56 | +| **Field Management** | 8 | Create formula / rollup / lookup / count fields, validate formulas | |
| 57 | +| **View Configuration** | 11 | Filters, sorts, grouping, column visibility, row height | |
| 58 | +| **Field Metadata** | 1 | Set or update field descriptions | |
| 59 | +| **Extension Management** | 5 | Create, install, enable/disable, rename, remove extensions | |
22 | 60 |
|
23 | | -The MCP server is also available as a standalone npm package for use outside VS Code: |
| 61 | +See the full tool reference in [`packages/mcp-server/README.md`](packages/mcp-server/README.md). |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## Supported IDEs |
| 66 | + |
| 67 | +The extension auto-configures MCP for all major AI-enabled editors: |
| 68 | + |
| 69 | +<div align="center"> |
| 70 | + |
| 71 | +| <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/claude.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/claude-code.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/cursor.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/windsurf.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/cline.svg" width="28" /> | <img src="https://raw.githubusercontent.com/Automations-Project/VSCode-Airtable-Formula/main/packages/webview/src/assets/icons/amp.svg" width="28" /> | |
| 72 | +|:---:|:---:|:---:|:---:|:---:|:---:| |
| 73 | +| Claude Desktop | Claude Code | Cursor | Windsurf | Cline | Amp | |
| 74 | + |
| 75 | +</div> |
| 76 | + |
| 77 | +**Don't use VS Code?** Use the standalone MCP server directly: |
24 | 78 |
|
25 | 79 | ```bash |
26 | 80 | npx airtable-user-mcp |
27 | 81 | ``` |
28 | 82 |
|
29 | | -See [`packages/mcp-server/README.md`](packages/mcp-server/README.md) for full documentation, tool list, and configuration examples. |
| 83 | +--- |
| 84 | + |
| 85 | +## Find Us |
| 86 | + |
| 87 | +<div align="center"> |
| 88 | + |
| 89 | +| Registry | Link | |
| 90 | +|:---------|:-----| |
| 91 | +| **VS Code Marketplace** | [`Nskha.airtable-formula`](https://marketplace.visualstudio.com/items?itemName=Nskha.airtable-formula) | |
| 92 | +| **npm** | [`airtable-user-mcp`](https://www.npmjs.com/package/airtable-user-mcp) | |
| 93 | +| **Open VSX** | [`Nskha.airtable-formula`](https://open-vsx.org/extension/Nskha/airtable-formula) | |
| 94 | +| **MCP Registry** | [`io.github.automations-project/airtable-user-mcp`](https://registry.modelcontextprotocol.io) | |
| 95 | +| **Smithery** | [smithery.ai](https://smithery.ai) | |
| 96 | +| **Glama** | [glama.ai/mcp/servers](https://glama.ai/mcp/servers) | |
| 97 | +| **PulseMCP** | [pulsemcp.com](https://www.pulsemcp.com) | |
| 98 | +| **MCP.so** | [mcp.so](https://mcp.so) | |
| 99 | + |
| 100 | +</div> |
| 101 | + |
| 102 | +--- |
30 | 103 |
|
31 | 104 | ## Requirements |
32 | 105 |
|
33 | 106 | - **VS Code** ^1.100.0 (or any fork exposing the `McpServerDefinitionProvider` API) |
34 | | -- **Node.js** is bundled via the VS Code runtime — no separate install required |
35 | | -- **Google Chrome** (or Microsoft Edge / Chromium) installed on the machine — the |
36 | | - Airtable login flow uses [Patchright](https://github.com/Kaliiiiiiiiii/patchright-nodejs) |
37 | | - in headless mode and launches a real system browser with `channel: 'chrome'` |
38 | | - (falls back to `msedge` on Windows and `chromium` on Linux if Chrome is |
39 | | - absent). The extension runs a preflight check at activation time and shows |
40 | | - an actionable warning in the dashboard if no supported browser is detected. |
41 | | - Playwright's bundled Chromium is intentionally **not** shipped in the VSIX |
42 | | - to keep the install small. |
| 107 | +- **Node.js** — bundled via the VS Code runtime; no separate install needed |
| 108 | +- **Google Chrome** (or Edge / Chromium) — the Airtable login flow uses [Patchright](https://github.com/Kaliiiiiiiiii/patchright-nodejs) in headless mode. Falls back to `msedge` on Windows and `chromium` on Linux. The extension shows an actionable warning if no supported browser is detected. |
| 109 | + |
| 110 | +--- |
43 | 111 |
|
44 | 112 | ## Development |
45 | 113 |
|
46 | | -This is a pnpm monorepo. |
| 114 | +This is a **pnpm monorepo**. |
47 | 115 |
|
48 | | -**Packages:** |
49 | | -- `packages/extension` — VS Code extension host (TypeScript + tsup) |
50 | | -- `packages/webview` — React dashboard webview (Vite + Tailwind v4) |
51 | | -- `packages/shared` — Shared types and message protocol |
52 | | -- `packages/mcp-server` — Airtable MCP server ([`airtable-user-mcp`](https://www.npmjs.com/package/airtable-user-mcp), ESM Node app with Patchright browser auth) |
| 116 | +| Package | Description | |
| 117 | +|:--------|:------------| |
| 118 | +| `packages/extension` | VS Code extension host (TypeScript + tsup) | |
| 119 | +| `packages/webview` | React dashboard webview (Vite + Tailwind v4) | |
| 120 | +| `packages/shared` | Shared types and message protocol | |
| 121 | +| `packages/mcp-server` | [`airtable-user-mcp`](https://www.npmjs.com/package/airtable-user-mcp) — ESM Node MCP server | |
| 122 | +| `scripts/` | Build tooling (esbuild bundler, dep vendoring) | |
53 | 123 |
|
54 | | -**Commands:** |
55 | 124 | ```bash |
56 | 125 | pnpm install # install all packages |
57 | | -pnpm build # build shared → webview → mcp copy → extension |
| 126 | +pnpm build # build shared → webview → mcp bundle → extension |
58 | 127 | pnpm package # build + create airtable-formula-X.Y.Z.vsix |
59 | 128 | pnpm test # run all unit tests |
60 | 129 | pnpm dev # start webview dev server (browser preview) |
61 | 130 | ``` |
62 | 131 |
|
63 | | -**MCP server:** The `airtable-user-mcp` workspace package (at `packages/mcp-server/`) is resolved via `workspace:*` and bundled into `packages/extension/dist/mcp/` by `scripts/bundle-mcp.mjs` during the build step. Native browser-automation deps (`patchright`, `patchright-core`, `otpauth`) are vendored into `dist/node_modules/` by `scripts/prepare-package-deps.mjs` before `vsce package` runs. |
| 132 | +**How the MCP server is bundled:** `scripts/bundle-mcp.mjs` esbuilds `packages/mcp-server/src/` into `packages/extension/dist/mcp/`. Then `scripts/prepare-package-deps.mjs` vendors `patchright`, `patchright-core`, and `otpauth` into `dist/node_modules/` before `vsce package` runs. The VSIX is fully self-contained. |
| 133 | + |
| 134 | +--- |
64 | 135 |
|
65 | 136 | ## License |
66 | 137 |
|
|
0 commit comments