.do
Mcp

Airtable MCP

Model Context Protocol reference for airtable.do - Airtable integration and automation

Airtable MCP

Airtable integration and automation

Overview

The Model Context Protocol (MCP) provides AI models with direct access to airtable.do through a standardized interface.

Installation

pnpm add @modelcontextprotocol/sdk

Configuration

Add to your MCP server configuration:

{
  "mcpServers": {
    "airtable": {
      "command": "npx",
      "args": ["-y", "@dotdo/mcp-server"],
      "env": {
        "DO_API_KEY": "your-api-key"
      }
    }
  }
}

Tools

airtable/invoke

Main tool for airtable.do operations.

{
  "name": "airtable/invoke",
  "description": "Airtable integration and automation",
  "inputSchema": {
    "type": "object",
    "properties": {
      "operation": {
        "type": "string",
        "description": "Operation to perform"
      },
      "parameters": {
        "type": "object",
        "description": "Operation parameters"
      }
    },
    "required": ["operation"]
  }
}

Usage in AI Models

Claude Desktop

// ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "airtable": {
      "command": "npx",
      "args": ["-y", "@dotdo/mcp-server", "--tool=airtable"],
      "env": {
        "DO_API_KEY": "undefined"
      }
    }
  }
}

OpenAI GPTs

# Custom GPT configuration
tools:
  - type: mcp
    server: airtable
    operations:
      - invoke
      - query
      - execute

Custom Integration

import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'

const transport = new StdioClientTransport({
  command: 'npx',
  args: ['-y', '@dotdo/mcp-server', '--tool=airtable'],
})

const client = new Client(
  {
    name: 'airtable-client',
    version: '1.0.0',
  },
  {
    capabilities: {},
  }
)

await client.connect(transport)

// Call tool
const result = await client.callTool({
  name: 'airtable/invoke',
  arguments: {
    operation: 'airtable',
    parameters: {},
  },
})

Tool Definitions

Available Tools

{
  "tools": [
    {
      "name": "airtable/invoke",
      "description": "Invoke airtable.do",
      "inputSchema": {
        /* ... */
      }
    },
    {
      "name": "airtable/query",
      "description": "Query airtable.do resources",
      "inputSchema": {
        /* ... */
      }
    },
    {
      "name": "airtable/status",
      "description": "Check airtable.do status",
      "inputSchema": {
        /* ... */
      }
    }
  ]
}

Resources

Available Resources

{
  "resources": [
    {
      "uri": "airtable://config",
      "name": "Airtable Configuration",
      "mimeType": "application/json"
    },
    {
      "uri": "airtable://docs",
      "name": "Airtable Documentation",
      "mimeType": "text/markdown"
    }
  ]
}

Prompts

Pre-configured Prompts

{
  "prompts": [
    {
      "name": "airtable-quick-start",
      "description": "Quick start guide for airtable.do",
      "arguments": []
    },
    {
      "name": "airtable-best-practices",
      "description": "Best practices for airtable.do",
      "arguments": []
    }
  ]
}

Examples

Basic Usage

// AI model calls tool via MCP
mcp call airtable/call

With Parameters

// Call with parameters
await mcp.callTool('airtable/invoke', {
  operation: 'process',
  parameters: {
    // Operation-specific parameters
  },
  options: {
    timeout: 30000,
  },
})

Error Handling

try {
  const result = await mcp.callTool('airtable/invoke', {
    operation: 'process',
  })
  return result
} catch (error) {
  if (error.code === 'TOOL_NOT_FOUND') {
    console.error('Airtable tool not available')
  } else {
    throw error
  }
}

AI Integration Patterns

Agentic Workflows

// AI agent uses airtable.do in workflow
const workflow = {
  steps: [
    {
      tool: 'airtable/invoke',
      operation: 'analyze',
      input: 'user-data',
    },
    {
      tool: 'airtable/process',
      operation: 'transform',
      input: 'analysis-result',
    },
  ],
}

Chain of Thought

AI models can reason about airtable.do operations:

User: "I need to process this data"

AI: "I'll use the airtable tool to:
1. Validate the data format
2. Process it through airtable.do
3. Return the results

Let me start..."

[Calls: mcp call airtable/call]

Server Implementation

Custom MCP Server

import { Server } from '@modelcontextprotocol/sdk/server/index.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'

const server = new Server(
  {
    name: 'airtable-server',
    version: '1.0.0',
  },
  {
    capabilities: {
      tools: {},
      resources: {},
      prompts: {},
    },
  }
)

// Register tool
server.setRequestHandler('tools/call', async (request) => {
  if (request.params.name === 'airtable/invoke') {
    // Handle airtable.do operation
    return {
      content: [
        {
          type: 'text',
          text: JSON.stringify(result),
        },
      ],
    }
  }
})

const transport = new StdioServerTransport()
await server.connect(transport)

Best Practices

  1. Tool Design - Keep tools focused and single-purpose
  2. Error Messages - Provide clear, actionable errors
  3. Documentation - Include examples in tool descriptions
  4. Rate Limiting - Implement appropriate limits
  5. Security - Validate all inputs from AI models
  6. Monitoring - Track tool usage and errors