mcp-airtable-query
# mcp-airtable-query
Lightweight TypeScript MCP server for Airtable base discovery, table/view queries, record CRUD, and validated `filterByFormula` construction. It exposes nine tools, a status resource, and a read-first workflow prompt over stdio or Cloudflare Workers Streamable HTTP.
## Install and run
```bash
git clone https://github.com/TTaoGaming/mcp-airtable-query.git
cd mcp-airtable-query
npm ci
npm run build
AIRTABLE_API_KEY=pat... npm run dev
```
Point an MCP client at `node dist/src/stdio.js`. For hosted mode, set `AIRTABLE_API_KEY` with `wrangler secret put AIRTABLE_API_KEY`, then run `npm run deploy`; the MCP route is `/mcp`.
Live credential-free demo: `https://mcp-airtable-query.tommytai3.workers.dev/mcp`. Discovery and status work; Airtable calls fail closed until a Worker secret is bound.
## Tools
`airtable_status`, `list_bases`, `get_base_schema`, `list_records`, `get_record`, `create_records`, `update_records`, `delete_records`, and `build_filter_formula`.
## Verification
`npm run check` compiles both transports, runs tests, and performs a Worker dry-run. `npm run inspector:list` asserts MCP discovery with the official Inspector CLI. npm and MCP Registry publication require explicit operator approval.
TDQS
Scored across 9 tools
Each tool targets a distinct resource and action: status, bases, schema, records (list/get/create/update/delete), and filter formula building. There is no overlap or ambiguity between tools.
Most tools follow a clear verb_noun pattern (e.g., list_bases, create_records), with 'get' for single items and 'list' for collections. The one deviation is 'airtable_status', which reads more like a noun than a verb, but it is still easily understood.
With 9 tools, the server is well-scoped for Airtable data operations. Each tool serves a necessary function without unnecessary bloat.
The CRUD lifecycle for records is fully covered (list, get, create, update, delete), along with base and schema discovery and a filter helper. There are no significant missing operations for a query-focused Airtable server.