Google表单MCP服务器与CamelAIOrg代理集成
模型上下文协议(MCP)服务器,与Google Forms API和CamelAIOrg代理集成,使用自然语言指令创建、修改和检索表单。
概述
该项目允许通过自然语言请求创建和管理Google Forms。它由两个主要部分组成:
- MCP服务器:一个基于Flask的服务器,它实现了模型上下文协议(MCP),将Google Forms操作作为工具公开。
- CamelAIOrg代理商:一个处理自然语言请求并将其转换为MCP工具调用的AI代理框架。
该系统具有一个深色主题的UI,前端、代理、MCP服务器和Google API之间的请求流具有动画可视化。
特性
- 根据自然语言请求创建Google表单
- 添加不同类型的问题(文本、段落、多项选择、复选框)
- 检索表单响应
- 可视化请求和响应的流程
- 带有动画的深色主题UI
- 完全符合MCP(模型上下文协议)
- 使用Docker进行容器化,便于部署
建筑
┌─────────────┐ ┌─────────────┐ ┌────────────┐ ┌────────────┐
│ │ │ │ │ │ │ │
│ Frontend │◄──►│ CamelAIOrg │◄──►│ MCP Server │◄──►│ Google │
│ (UI) │ │ Agents │ │ │ │ Forms API │
│ │ │ │ │ │ │ │
└─────────────┘ └─────────────┘ └────────────┘ └────────────┘工艺流程图
此图说明了用户请求如何在系统中流动:
graph TD
subgraph "User Interface"
A[Frontend UI]
end
subgraph "Processing Logic"
B((CamelAIOrg Agent))
C((MCP Server))
end
subgraph "External Service"
D{{Google Forms API}}
end
A -->|"1. User enters: Create feedback form"| B
B -->|"2. Interprets request, sends tool call"| C
C -->|"3. Translates to API request"| D
D -->|"4. Returns formId and URL"| C
C -->|"5. Processes API response"| B
B -->|"6. Formats final result to UI"| A
style B fill:#f9d423,stroke:#333,stroke-width:2px,color:#333
style C fill:#8ecae6,stroke:#333,stroke-width:2px,color:#333组件的作用
- 前端用户界面: 提供用户界面,用于输入自然语言请求并可视化过程和结果。
- CamelAIOrg代理商(高亮黄色):
- 职责: 解释和规划。 - 接收原始自然语言请求。 - 解析请求以了解用户的意图并提取关键细节(表单标题、问题、类型等)。 - 确定完成请求所需的操作顺序(MCP工具调用)。 - 使用定义的工具模式与MCP服务器通信。
- MCP服务器(蓝色突出显示):
- 职责: 执行和抽象。 - 接收来自代理的结构化工具调用。 - 作为Google Forms API的专用接口。 - 翻译抽象工具调用(例如。, create_form)具体的谷歌表单API请求。 - 使用Google Forms API处理身份验证、通信和错误处理。 - 以标准化MCP格式将Google Forms API的结果返回给代理。
为什么需要MCP服务器?
模型上下文协议(MCP)服务器充当关键的中间层有几个原因:
- 摘要: 它对CamelAI代理隐藏了底层Google Forms API的复杂性。代理不需要知道Google API的特定端点、身份验证方法或请求/响应格式。它只需要知道简化的MCP工具模式(例如。,
create_form,add_question). - 模块化和可重用性: Agent可以设计为与任何公开MCP接口的服务进行交互。如果你想添加对另一个表单服务(例如Typeform)的支持,你可以为它创建一个单独的MCP服务器,代理只需学习新的MCP工具模式,就可以在最小的更改下使用它。
- 标准化: MCP为AI模型/代理提供了一种与外部工具和API交互的标准方式。这促进了互操作性。
- 安全与控制: MCP服务器可以强制执行策略,安全地管理API密钥,处理速率限制,并向外部API提供受控网关,而不是直接在代理中嵌入敏感凭证或复杂逻辑。
- 可维护性: 将API交互逻辑(MCP Server)与自然语言理解和规划逻辑(Agent)分离,使系统更易于维护和更新。更改Google Forms API只需要更新MCP服务器,而不需要更新代理本身。
先决条件
- Docker和Docker Compose
- 谷歌云平台帐户
- 已启用Google Forms API
- 来自Google Cloud控制台的OAuth2凭据
安装说明
1.克隆存储库
git clone https://github.com/yourusername/google-form-mcp-server.git
cd google-form-mcp-server2.设置Google Forms API
- 转到 谷歌云控制台
- 创建新项目
- 启用Google Forms API和Google Drive API
- 创建OAuth2凭据
- Web应用程序类型 - 添加授权重定向URI: http://localhost:5000/oauth2callback
- 下载凭据JSON文件
3.配置环境变量
创建一个 .env 根目录中的文件:
# Google API Credentials
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_here
GOOGLE_REFRESH_TOKEN=your_refresh_token_here
# Server Configuration
FLASK_ENV=development
PORT=5000
DEBUG=True
# CamelAIOrg Agents Configuration
AGENT_ENDPOINT=http://agents:5001/process
AGENT_API_KEY=your_agent_api_key_here要获取刷新令牌,请执行以下操作:
- 使用OAuth 2.0游乐场:https://developers.google.com/oauthplayground/
- 使用您的凭据进行设置
- 选择所需的范围:
- https://www.googleapis.com/auth/forms - https://www.googleapis.com/auth/drive - https://www.googleapis.com/auth/drive.file
- 代币的交换授权码
- 将刷新令牌复制到您的
.env文件
4.使用Docker Compose构建和运行
docker-compose up --build这将启动MCP服务器(端口5000)和CamelAIOrg代理服务(端口5001)。
用法
web界面
访问web界面 http://localhost:5000
该界面允许您:
- 输入自然语言请求(例如,“创建一个包含3个问题的反馈表”)
- 查看组件之间的请求流
- 查看生成的表单详细信息和链接
- 查看正在交换的MCP数据包
API终点
MCP服务器端点(端口5000)
GET /api/health-健康检查GET /api/schema-获取MCP工具架构POST /api/process-处理MCP请求
CamelAIOrg代理端点(端口5001)
GET /health-健康检查GET /schema-获取代理功能POST /process-处理自然语言请求
请求示例
以下是一些您可以尝试的自然语言请求示例:
- “创建一个客户反馈表,其中包含1-5的评分问题和一个用于添加评论的文本问题”
- “创建一个关于远程工作偏好的调查,包含3个多项选择题”
- “创建一个包含姓名、电子邮件和出席选项的活动回复表格”
MCP协议格式
MCP服务器接受以下格式的请求:
{
"transaction_id": "unique_transaction_id",
"tool_name": "create_form",
"parameters": {
"title": "Form Title",
"description": "Form Description"
}
}并回复:
{
"transaction_id": "unique_transaction_id",
"status": "success",
"result": {
"form_id": "form_id",
"response_url": "https://docs.google.com/forms/d/form_id/viewform",
"edit_url": "https://docs.google.com/forms/d/form_id/edit",
"title": "Form Title"
}
}发展
项目结构
google-form-mcp-server/
├── server/ # MCP Server
│ ├── app.py # Main Flask application
│ ├── config.py # Configuration
│ ├── forms_api.py # Google Forms API integration
│ ├── mcp_handler.py # MCP protocol handler
│ ├── requirements.txt # Python dependencies
│ ├── static/ # Static assets
│ ├── templates/ # HTML templates
│ └── utils/ # Utility functions
├── agents/ # CamelAIOrg Agents
│ ├── agent_integration.py # Agent implementation
│ ├── agent_server.py # Agent API server
│ └── requirements.txt # Python dependencies
├── Dockerfile # MCP Server Dockerfile
├── docker-compose.yml # Docker Compose configuration
├── .env.example # Example environment variables
└── README.md # Project documentation不使用Docker运行
要在没有Docker的情况下运行MCP服务器:
cd server
pip install -r requirements.txt
python app.py要在没有Docker的情况下运行代理服务:
cd agents
pip install -r requirements.txt
python agent_server.py许可证
麻省理工学院
致谢
- 谷歌表单API
- CamelAIOrg的代理框架
- 模型上下文协议(MCP)规范
