适用于Gravity Forms的Model Context Protocol (MCP)服务器。通过任何兼容MCP的客户端与WordPress表单、数据源和条目进行交互。
由GravityKit为Gravity Forms社区构建。
克隆仓库
git clone https://github.com/GravityKit/GravityMCP.git
cd GravityMCP
npm install
设置环境
cp .env.example .env
在.env中配置凭据:
GRAVITY_FORMS_CONSUMER_KEY=your_key_here
GRAVITY_FORMS_CONSUMER_SECRET=your_secret_here
GRAVITY_FORMS_BASE_URL=https://yoursite.com
对于本地开发(Laravel Valet、MAMP等):
# 如果使用自签名证书,请添加此行
MCP_ALLOW_SELF_SIGNED_CERTS=true
在WordPress中生成API凭据:
添加到Claude Desktop
编辑~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"gravitymcp": {
"command": "node",
"args": ["/path/to/GravityMCP/src/index.js"],
"env": {
"GRAVITY_FORMS_CONSUMER_KEY": "your_key",
"GRAVITY_FORMS_CONSUMER_SECRET": "your_secret",
"GRAVITY_FORMS_BASE_URL": "https://yoursite.com"
}
}
}
}
gf_list_forms - 列出表单,支持过滤和分页gf_get_form - 获取完整表单配置gf_create_form - 创建带有字段的新表单gf_update_form - 更新现有表单gf_delete_form - 删除表单(需要ALLOW_DELETE=true)gf_validate_form - 验证表单数据gf_list_entries - 使用高级过滤器搜索条目gf_get_entry - 获取特定条目详情gf_create_entry - 创建新条目gf_update_entry - 更新现有条目gf_delete_entry - 删除条目(需要ALLOW_DELETE=true)gf_add_field - 添加字段,具有智能定位gf_update_field - 更新字段,检查依赖关系gf_delete_field - 删除字段,具有级联选项gf_list_field_types - 列出可用字段类型gf_submit_form_data - 提交表单,进行完整处理gf_validate_submission - 验证而不提交gf_list_feeds - 列出所有插件数据源gf_get_feed - 获取特定数据源配置gf_list_form_feeds - 列出特定表单的数据源gf_create_feed - 创建新的插件数据源gf_update_feed - 更新现有数据源gf_patch_feed - 部分更新数据源属性gf_delete_feed - 删除插件数据源await mcp.call('gf_list_entries', {
search: {
field_filters: [
{ key: "1.3", value: "John", operator: "contains" },
{ key: "date_created", value: "2024-01-01", operator: ">=" }
],
mode: "all"
},
sorting: { key: "date_created", direction: "desc" }
});
await mcp.call('gf_add_field', {
form_id: 1,
field_type: 'email',
properties: {
label: '电子邮件地址',
isRequired: true
}
});
await m
cp.call('gf_submit_form_data', {
form_id: 1,
input_1: "John Doe",
input_2: "john@example.com",
input_3: "消息内容"
});
GRAVITY_FORMS_CONSUMER_KEY - API消费者密钥GRAVITY_FORMS_CONSUMER_SECRET - API消费者秘密GRAVITY_FORMS_BASE_URL - WordPress站点URLGRAVITY_FORMS_ALLOW_DELETE=false - 启用删除操作GRAVITY_FORMS_TIMEOUT=30000 - 请求超时时间(毫秒)GRAVITY_FORMS_DEBUG=false - 启用调试日志MCP_ALLOW_SELF_SIGNED_CERTS=false - 允许自签名SSL证书(仅限本地开发)该服务器支持双环境配置,以确保测试不会影响生产数据。
在你的.env文件中添加测试站点凭据,与生产凭据并存:
# 生产/实时站点
GRAVITY_FORMS_CONSUMER_KEY=ck_live_key
GRAVITY_FORMS_CONSUMER_SECRET=cs_live_secret
GRAVITY_FORMS_BASE_URL=https://www.yoursite.com
# 测试/暂存站点(推荐用于安全测试)
GRAVITY_FORMS_TEST_CONSUMER_KEY=ck_test_key
GRAVITY_FORMS_TEST_CONSUMER_SECRET=cs_test_secret
GRAVITY_FORMS_TEST_BASE_URL=https://staging.yoursite.com
# 启用测试模式(可选)
GRAVITY_MCP_TEST_MODE=true
当使用测试配置时:
# 验证测试环境配置
GRAVITY_MCP_TEST_MODE=true npm run check-env
# 在测试站点上创建测试数据(需要测试凭据)
npm run setup-test-data
# 对测试站点运行所有测试(自动检测测试凭据)
npm test
# 使用MCP Inspector进行交互式测试(测试模式)
GRAVITYMCP_TEST_MODE=true npm run inspect
# 对测试站点运行特定测试套件
NODE_ENV=test npm run test:forms
NODE_ENV=test npm run test:entries
NODE_ENV=test npm run test:submissions
当满足以下任一条件时,服务器会自动使用测试配置:
GRAVITYMCP_TEST_MODE=trueNODE_ENV=test服务器包含多个安全机制,以防止意外污染生产数据:
setup-test-data脚本将失败--force-production标志GRAVITY_FORMS_DEBUG=true以获取详细日志# 运行所有测试
npm run test:all
# 运行特定测试套件
npm run test:forms
npm run test:entries
npm run test:field-operations
# 使用实时API运行测试(需要凭据)
npm test
npm run check-env验证凭据如果你正在使用带有自签名SSL证书的本地开发环境(如Laravel Valet、MAMP、Local WP等),可能会遇到身份验证错误。要解决这个问题:
在你的.env文件中添加:
MCP_ALLOW_SELF_SIGNED_CERTS=true
⚠️ 安全警告:仅在本地开发环境中禁用SSL证书验证。切勿在生产环境中使用此设置!
MCP_ALLOW_SELF_SIGNED_CERTS=true启用详细日志:
GRAVITY_FORMS_DEBUG=true
GPL-2.0许可证 - 详情见LICENSE文件。
我们欢迎来自Gravity Forms社区的贡献!无论你是构建插件、管理表单还是与其他服务集成,你的见解和代码贡献都能帮助所有人。
npm run test:all验证一切正常此仓库使用GitHub Actions,在标记新版本时自动发布到npm:
package.json中的版本git tag v1.0.4 && git push origin v1.0.4维护者注意:确保在仓库设置中配置了NPM_TOKEN密钥,以便自动发布能正常工作。
对于插件开发者:
对于表单构建者:
对于所有人:
你的贡献有助于让Gravity Forms自动化更好。让我们一起打造一些伟大的东西!