Skip to main content
Glama
tomcwxyz

airtable-plus-mcp-server

by tomcwxyz
README.md
# airtable-plus-mcp-server

An extended Airtable MCP server for Claude Code (and other MCP clients). Provides full CRUD plus bulk import/upsert, data analysis, schema validation against known standards, and data export.

Built on [domdomegg/airtable-mcp-server](https://github.com/domdomegg/airtable-mcp-server) (MIT license) — all original tools preserved, with 6 additional power-user tools added.

## Quick Start

### 1. Create an Airtable Personal Access Token

Go to [airtable.com/create/tokens](https://airtable.com/create/tokens) and create a token with these scopes:

- `schema.bases:read`
- `schema.bases:write`
- `data.records:read`
- `data.records:write`
- `data.recordComments:read`
- `data.recordComments:write`

Set access to the bases you need (or "All current and future bases").

### 2. Configure Claude Code

Add to `~/.claude.json` under `mcpServers`:

```json
{
  "mcpServers": {
    "airtable": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/airtable-plus-mcp-server/dist/main.js"],
      "env": {
        "AIRTABLE_API_KEY": "patYOUR_TOKEN_HERE"
      }
    }
  }
}
```

### 3. HTTP Transport (optional)

For reusable HTTP mode:

```bash
AIRTABLE_API_KEY=patYOUR_TOKEN MCP_TRANSPORT=http PORT=3000 node dist/main.js
```

Then point any MCP client at `http://localhost:3000/mcp`.

## All Tools (22)

### Core Read (6 — from domdomegg)

| Tool | Description |
|------|-------------|
| `list_bases` | List all accessible bases |
| `list_tables` | List tables in a base (with detail level control) |
| `describe_table` | Get detailed info about a specific table |
| `list_records` | List/filter/sort records from a table |
| `search_records` | Full-text search across text fields |
| `get_record` | Get a single record by ID |

### Core Write (3 — from domdomegg)

| Tool | Description |
|------|-------------|
| `create_record` | Create a single record |
| `update_records` | Update one or more records |
| `delete_records` | Delete one or more records |

### Schema Management (5 — 4 from domdomegg + 1 new)

| Tool | Description |
|------|-------------|
| `create_table` | Create a new table with field definitions |
| `update_table` | Update table name/description |
| `create_field` | Add a field to an existing table |
| `update_field` | Update field name/description |
| `delete_field` | **NEW** — Delete a field from a table |

### Comments & Attachments (3 — from domdomegg)

| Tool | Description |
|------|-------------|
| `create_comment` | Add a comment to a record |
| `list_comments` | List comments on a record |
| `upload_attachment` | Upload an attachment to a record field |

### Extended Tools (5 — all new)

| Tool | Description |
|------|-------------|
| `bulk_import` | Import up to 1000 records with batching (groups of 10) and rate limiting. Handles errors per-batch with optional stop-on-error. |
| `bulk_upsert` | Create-or-update records based on merge field(s). Batched with rate limiting. Ideal for syncing data from external sources. |
| `summarise_table` | Analyse a table: record count, per-field completeness, value distributions, numeric stats (min/max/mean/sum), unique value counts. |
| `export_table` | Export table data as JSON or CSV. Supports filtering, field selection, sorting. |
| `validate_schema` | Validate a base against known patterns. Built-in patterns: `open_referral_uk` (HSDS 3.0), `simple_crm`, `project_tracker`. Also accepts custom patterns as JSON. |

## Schema Validation Patterns

The `validate_schema` tool includes three built-in patterns:

**open_referral_uk** — The Open Referral UK / HSDS 3.0 standard for service directories. Checks for tables like organizations, services, locations, contacts, phones, physical_addresses, regular_schedules, eligibility, taxonomies, and service_taxonomies with their required and optional fields.

**simple_crm** — A basic CRM pattern with contacts, organisations, interactions, and activities tables.

**project_tracker** — Project management with projects, tasks, milestones, and team_members tables.

You can also pass a custom pattern as a JSON string:

```json
{
  "name": "My Standard",
  "description": "Custom schema pattern",
  "tables": {
    "people": {
      "requiredFields": ["name", "email"],
      "optionalFields": ["phone", "role"]
    }
  }
}
```

## Building from Source

```bash
git clone <this-repo>
cd airtable-plus-mcp-server
npm install
npm run build
```

## Acknowledgements

This project extends [domdomegg/airtable-mcp-server](https://github.com/domdomegg/airtable-mcp-server) (MIT license). All original tools, types, and architecture are preserved. The extended tools follow the same patterns and conventions.

## License

MIT — see [LICENSE](LICENSE).

Maintenance

ActivityInactive
ResponsivenessNo issues