GravityMCP 是一款适用于 Gravity Forms 的模型上下文协议(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
在 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"
}
}
}
}
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: 'Email Address',
isRequired: true
}
});
await mcp.call('gf_submit_form_data', {
form_id: 1,
input_1: "John Doe",
input_2: "john@example.com",
input_3: "Message content"
});
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
- 删除插件订阅源。GRAVITY_FORMS_CONSUMER_KEY
- API 消费者密钥。GRAVITY_FORMS_CONSUMER_SECRET
- API 消费者密钥密码。GRAVITY_FORMS_BASE_URL
- WordPress 站点 URL。GRAVITY_FORMS_ALLOW_DELETE=false
- 启用删除操作。GRAVITY_FORMS_TIMEOUT=30000
- 请求超时时间(毫秒)。GRAVITY_FORMS_DEBUG=false
- 启用调试日志。服务器支持双环境配置,可在不影响生产数据的情况下安全进行测试。
在 .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=true
。NODE_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
验证凭证。启用详细日志:
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 自动化对每个人都更友好。让我们一起打造伟大的项目!