MCP自动化项目
一个全面的自动化项目,利用模型上下文协议(MCP)为web自动化、表单填充和数据抓取任务构建智能代理。
📋 目录
🌟 概述
该项目结合了多种技术来创建智能自动化代理:
- MCP(模型上下文协议):将LLM连接到各种工具和服务器
- 剧作家:网页抓取和表单填写的浏览器自动化
- LangChain:构建LLM驱动应用程序的框架
- 谷歌双子座和OpenAI:用于智能决策的大型语言模型
它能做什么?
✅ 自动网络表单填写(抵押贷款计算器、应用程序)\ ✅ 具有上下文理解的智能网络抓取\ ✅ 基于浏览器的自动化,带有视觉反馈\ ✅ AI引导的多步工作流程\ ✅ 数据提取和转换
📁 项目结构
.
├── agent.py # OpenAI-based agent with Playwright automation
├── mcp.py # Simple MCP agent example with Gemini
├── mcp.js # Node.js MCP server with SSE transport
├── abc_1.py # Utility script for JSON data cleaning
├── data.json # Sample mortgage application data
├── requirements.txt # Python dependencies
├── package.json # Node.js dependencies
├── .env # Environment variables (API keys)
│
├── ollama/ # Ollama-specific implementations
│ ├── lc.py # Web scraping agent (bank criteria)
│ ├── ollama_playwright.py # Mortgage calculator automation
│ └── mcp_commands.py # Command definitions for MCP
│
└── mcp-use/ # MCP-Use library (submodule/dependency)
├── mcp_use/ # Core library code
├── examples/ # Example implementations
├── tests/ # Test suite
└── docs/ # Documentation✨ 特性
1. 智能表单自动化
- 使用AI推理自动填充复杂表单
- 通过导航处理多步骤表单
- 截取截图进行验证
- 示例:抵押贷款负担能力计算器
2. Web剪贴
- 上下文感知内容提取
- 结构化数据检索
- 多页导航
- 示例:银行贷款标准提取
3. 灵活的LLM支持
- Google Gemini集成
- OpenAI GPT-4集成
- 可扩展到其他LLM提供商
4. 多种运输方式
- STDIO(标准输入/输出)
- SSE(服务器发送事件)
- 超文本传输协议
- 双向通信
🔧 先决条件
- python:3.11或更高
- Node.js:16或以上
- 显示服务器:X11显示器(用于浏览器自动化)
- API密钥:
- Google Gemini API密钥 - OpenAI API密钥(可选)
📦 安装
1.克隆存储库
git clone
cd
2.设置Python环境
# Create virtual environment
python3.11 -m venv env
source env/bin/activate # On Windows: env\Scripts\activate
# Install dependencies
pip install -r requirements.txt3.设置Node.js依赖关系
npm install4.安装Playwright浏览器
npx playwright install⚙️ 配置
环境变量
创建一个 .env 根目录中的文件:
# Google Gemini API Key
GEMINI_API_KEY=your_gemini_api_key_here
# OpenAI API Key (if using OpenAI)
OPENAI_API_KEY=your_openai_api_key_here
# Display configuration (for headless browser)
DISPLAY=:1MCP服务器配置
该项目使用配置字典来设置MCP服务器:
config = {
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"],
"env": {
"DISPLAY": ":1"
}
}
}
}🚀 用法
示例1:简单MCP代理
python mcp.py这将运行一个连接到Playwright MCP服务器并执行简单任务的基本代理。
示例2:Web剪贴代理
cd ollama
python lc.py此代理导航到银行的网站并提取贷款标准信息。
示例3:表单自动化代理
cd ollama
python ollama_playwright.py该代理自动填写抵押贷款负担能力计算器表格。
示例4:OpenAI授权代理
python agent.py使用OpenAI GPT-4对表单填写做出智能决策。
示例5:数据清理实用程序
python abc_1.py从JSON数据文件中清除空值。
🧩 组件
1. agent.py -OpenAI代理
目的:演示与OpenAI GPT-4的集成,以实现智能表单自动化。
主要特点:
- 与MCP服务器的JSON-RPC通信
- GPT-4驱动决策
- 表单字段标识和填写
- 多步骤工作流执行
使用场景:当您需要复杂表单的高级推理能力时。
2. mcp.py -基本MCP代理
目的:使用Google Gemini设置MCP代理的简单示例。
主要特点:
- Google Gemini集成
- MCPClient配置
- 基本代理创建
- 简单查询执行
使用场景:用于构建自定义代理的快速入门模板。
3. mcp.js -MCP服务器
目的:通过HTTP/SSE公开Playwright MCP的Node.js服务器。
主要特点:
- 端口8931上的HTTP服务器
- SSE传输用于实时通信
- Playwright浏览器控件
- 优雅的停机处理
使用场景:当您需要为多个客户端提供独立的MCP服务器时。
4. ollama/lc.py -Web剪贴代理
目的:从网站中提取结构化信息。
主要特点:
- 多段导航
- 全面的数据提取
- 结构化输出格式
- 屏幕截图功能
使用场景:废弃银行标准、文件或结构化网络内容。
5. ollama/ollama_playwright.py -表单自动化
目的:抵押贷款计算器的自动填表。
主要特点:
- 逐步填写表格
- 逐个问题的方法
- 结果提取
- 屏幕截图
使用场景:自动提交重复的表单。
6. data.json -示例数据
目的:包含抵押贷款申请数据示例。
结构:
{
"var_journey": "resi_remo",
"var_no_of_applicants": 2,
"var_property_value": 300000,
"var_mortgage_term": 240,
...
}使用场景:抵押申请数据模板。
📚 示例
创建自定义代理
import asyncio
from langchain_google_genai import ChatGoogleGenerativeAI
from mcp_use import MCPAgent, MCPClient
async def main():
# Configure MCP client
config = {
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"],
"env": {"DISPLAY": ":1"}
}
}
}
client = MCPClient.from_dict(config)
# Initialize LLM
llm = ChatGoogleGenerativeAI(
model="gemini-2.5-flash",
google_api_key="YOUR_API_KEY",
temperature=0
)
# Create agent
agent = MCPAgent(
llm=llm,
client=client,
max_steps=50,
verbose=True
)
# Run task
result = await agent.run(
"Navigate to example.com and extract the main heading"
)
print(result)
if __name__ == "__main__":
asyncio.run(main())使用数据清理实用程序
import json
from abc_1 import remove_nulls
# Load data
with open('data.json', 'r') as file:
data = json.load(file)
# Clean nulls
cleaned_data = remove_nulls(data)
# Save cleaned data
with open('cleaned_data.json', 'w') as file:
json.dump(cleaned_data, file, indent=2)🔒 安全说明
⚠️ 重要:此存储库包含敏感信息:
- API密钥:The
agent.py文件包含一个公开的OpenAI API密钥。此密钥应为:
- 立即撤销 - 移动到 .env 文件 - 从未致力于版本控制
- 个人资料:
data.json包含示例应用程序数据。替换为公共存储库的虚拟数据。
保护您的安装
# ✅ CORRECT: Use environment variables
import os
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
# ❌ WRONG: Hardcoded keys
openai.api_key = "sk-proj-..." # Never do this!🛠️ 发展
运行测试
# Navigate to mcp-use directory
cd mcp-use
# Run tests
pytest tests/代码风格
本项目使用:
- 拉夫:用于Python linting
- 黑色:用于代码格式化
- isort:用于进口排序
# Format code
black .
isort .
# Lint
ruff check .🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
🙏 致谢
📞 支持
对于问题和疑问:
🗺️ 路线图
- \[\]添加更多自动化示例
- \[\]实施错误恢复机制
- \[\]添加全面的测试套件
- \[\]创建Docker容器化
- \[\]添加CI/CD管道
- \[\]实现多浏览器支持
- \[\]添加代理支持
- \[\]创建用于监视的web UI
______________________________________________________________________
备注:这是一个积极的发展项目。功能和API可能会发生变化。
