MCP Airtable服务器
MCP(模型上下文协议)服务器,提供与Airtable数据库交互的工具。该服务器允许AI助手对Airtable库和表执行CRUD操作。
特性
- 列出可用的Airtable基地
- 列出基中的表
- 通过筛选、排序和字段选择获取记录
- 创建新记录
- 更新现有记录
- 删除记录
- 获取基础架构信息
安装
- 克隆此存储库
- 安装依赖项:
npm install- 构建TypeScript代码:
npm run build配置
- 复制
.env.example向.env:
cp .env.example .env- 将您的Airtable API密钥添加到
.env:
AIRTABLE_API_KEY=your_api_key_here- (可选)添加默认基本ID:
AIRTABLE_BASE_ID=appXXXXXXXXXXXXXX获取Airtable API密钥
- 首选 Airtable 帐户设置
- 导航到“API”部分
- 生成具有以下作用域的个人访问令牌:
- data.records:read - data.records:write - schema.bases:read
用法
运行服务器
对于热重载开发:
npm run dev生产:
npm start与Claude Desktop一起使用
选项1:本地安装(推荐)
将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"airtable": {
"command": "node",
"args": ["/path/to/mcp-airtable/dist/index.js"],
"env": {
"AIRTABLE_API_KEY": "your_api_key_here",
"AIRTABLE_BASE_ID": "optional_default_base_id",
"AWS_REGION": "us-east-1",
"AWS_S3_BUCKET": "your-bucket-name",
"AWS_ACCESS_KEY_ID": "your-access-key",
"AWS_SECRET_ACCESS_KEY": "your-secret-key"
}
}
}
}选项2:远程部署(Zeabur)
- 部署到Zeabur:
- 分叉此存储库 - 将您的GitHub帐户连接到Zeabur - 创建新服务并选择此存储库 - Zeabur将自动检测Dockerfile
- 在Zeabur中配置环境变量:
MCP_AUTH_TOKEN=your-secret-token
AIRTABLE_API_KEY=your-airtable-api-key
AIRTABLE_BASE_ID=your-default-base-id (optional)
AWS_REGION=us-east-1 (optional)
AWS_S3_BUCKET=your-bucket-name (optional)
AWS_ACCESS_KEY_ID=your-key (optional)
AWS_SECRET_ACCESS_KEY=your-secret (optional)- 为远程MCP配置Claude桌面:
{
"mcpServers": {
"airtable-remote": {
"transport": "sse",
"url": "https://your-app.zeabur.app/mcp",
"headers": {
"Authorization": "Bearer your-secret-token"
}
}
}
}安全说明: 使用远程部署时,始终:
- 设置一个强大的
MCP_AUTH_TOKEN - 仅使用HTTPS
- 在Zeabur的环境变量中确保API密钥的安全
- 永远不要将秘密提交到您的存储库
可用工具
list_bases
列出所有可用的Airtable基地。
list_tables
列出特定库中的所有表。
参数:
baseId(可选):基本ID。如果未指定,则使用默认值。
get_records
通过可选的筛选和排序从表中检索记录。
参数:
tableName(必填):表的名称baseId(可选):基本IDview(可选):查看名称或IDmaxRecords(可选):要返回的最大记录数filterByFormula(可选):空气表过滤公式sort(可选):排序配置数组fields(可选):要返回的字段名数组
create_record
在表中创建新记录。
参数:
tableName(必填):表的名称fields(必填):包含字段值的对象baseId(可选):基本ID
update_record
更新现有记录。
参数:
tableName(必填):表的名称recordId(必填):要更新的记录的IDfields(必填):包含要更新的字段的对象baseId(可选):基本ID
delete_record
从表中删除记录。
参数:
tableName(必填):表的名称recordId(必填):要删除的记录的IDbaseId(可选):基本ID
get_schema
获取基的架构信息。
参数:
baseId(可选):基本ID
upload_attachment
将文件上传到S3,并获取Airtable附件字段的URL格式。需要AWS S3配置。
参数:
filePath(可选):要上传的本地文件路径base64Data(可选):Base64编码文件数据filename(base64Data需要):附件的文件名contentType(可选):文件的MIME类型
退货:
url:上传文件的公共URLfilename:文件名称size:文件大小(字节)type:MIME类型
create_record的示例用法:
// First upload the file
const attachment = await upload_attachment({ filePath: '/path/to/image.jpg' });
// Then create/update record with attachment field
await create_record({
tableName: 'Products',
fields: {
'Name': 'Product Name',
'Images': [{ url: attachment.url, filename: attachment.filename }]
}
});发展
运行测试
npm test类型检查
npm run type-check代码检查
npm run lint例子
通过筛选获取记录
{
"tool": "get_records",
"arguments": {
"tableName": "Contacts",
"filterByFormula": "AND({Status} = 'Active', {Age} > 25)",
"sort": [{ "field": "Name", "direction": "asc" }],
"maxRecords": 50
}
}创建记录
{
"tool": "create_record",
"arguments": {
"tableName": "Contacts",
"fields": {
"Name": "John Doe",
"Email": "john@example.com",
"Status": "Active"
}
}
}许可证
麻省理工学院
