Skip to content

Sync Google Sheets and Airtable

Keep a Google Sheet and an Airtable base in sync. Rows added or edited in one appear automatically in the other.

  • Google service account or OAuth credentials for the Sheets API
  • Airtable personal access token (create one)
  • WCP running
Terminal window
# Google Sheets
curl -X POST http://localhost:8000/api/connections \
-H "Content-Type: application/json" \
-d '{
"name": "sheets",
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-google-sheets"],
"env": { "GOOGLE_APPLICATION_CREDENTIALS": "/data/gcloud-sa.json" }
}'
# Airtable
curl -X POST http://localhost:8000/api/connections \
-H "Content-Type: application/json" \
-d '{
"name": "airtable",
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-airtable"],
"env": { "AIRTABLE_API_KEY": "pat..." }
}'
Terminal window
# Discover capabilities
curl -X POST http://localhost:8000/api/capabilities/scan
# Check pairs — expect a "database/rows" capability match
curl http://localhost:8000/api/capabilities/syncable-pairs
# Run sync
curl -X POST http://localhost:8000/api/sync/run/await

For spreadsheet data, last_write_wins avoids manual conflict resolution:

Terminal window
curl -X PUT http://localhost:8000/api/conflicts/strategy \
-H "Content-Type: application/json" \
-d '{"strategy": "last_write_wins"}'
Terminal window
# Sync every 15 minutes
*/15 * * * * curl -s -X POST http://localhost:8000/api/sync/run
  • Mount service account keys into Docker: docker run -v /path/sa.json:/data/gcloud-sa.json ...
  • Monitor with curl http://localhost:8000/api/logs?limit=10
  • Use the Dashboard to visually inspect synced rows