mirror of
https://github.com/browser-use/browser-use
synced 2026-05-06 17:52:15 +02:00
112 lines
3.9 KiB
Python
112 lines
3.9 KiB
Python
"""
|
|
Advanced example: Using multiple MCP servers together.
|
|
|
|
This example demonstrates how to:
|
|
1. Connect multiple MCP servers (Gmail + Filesystem) to browser-use
|
|
2. Sign up for a new account on a website
|
|
3. Save registration details to a file
|
|
4. Retrieve the verification link from Gmail
|
|
5. Complete the verification process
|
|
"""
|
|
|
|
import asyncio
|
|
import os
|
|
|
|
from browser_use import Agent, Tools
|
|
from browser_use.llm.openai.chat import ChatOpenAI
|
|
from browser_use.mcp.client import MCPClient
|
|
|
|
|
|
async def main():
|
|
"""Sign up for account, save details, and verify via Gmail."""
|
|
|
|
# Initialize tools
|
|
tools = Tools()
|
|
|
|
# Connect to Gmail MCP Server
|
|
# Requires Gmail API credentials - see: https://github.com/GongRzhe/Gmail-MCP-Server#setup
|
|
gmail_env = {}
|
|
if client_id := os.getenv('GMAIL_CLIENT_ID'):
|
|
gmail_env['GMAIL_CLIENT_ID'] = client_id
|
|
if client_secret := os.getenv('GMAIL_CLIENT_SECRET'):
|
|
gmail_env['GMAIL_CLIENT_SECRET'] = client_secret
|
|
if refresh_token := os.getenv('GMAIL_REFRESH_TOKEN'):
|
|
gmail_env['GMAIL_REFRESH_TOKEN'] = refresh_token
|
|
|
|
gmail_client = MCPClient(server_name='gmail', command='npx', args=['gmail-mcp-server'], env=gmail_env)
|
|
|
|
# Connect to Filesystem MCP Server for saving registration details
|
|
filesystem_client = MCPClient(
|
|
server_name='filesystem',
|
|
command='npx',
|
|
args=['-y', '@modelcontextprotocol/server-filesystem', os.path.expanduser('~/Desktop')],
|
|
)
|
|
|
|
# Connect and register tools from both servers
|
|
print('Connecting to Gmail MCP server...')
|
|
await gmail_client.connect()
|
|
await gmail_client.register_to_tools(tools)
|
|
|
|
print('Connecting to Filesystem MCP server...')
|
|
await filesystem_client.connect()
|
|
await filesystem_client.register_to_tools(tools)
|
|
|
|
# Create agent with extended system prompt for using multiple MCP servers
|
|
agent = Agent(
|
|
task='Sign up for a new Anthropic account using the email example@gmail.com, save the registration details to a file',
|
|
llm=ChatOpenAI(model='gpt-4.1-mini'),
|
|
tools=tools,
|
|
extend_system_message="""
|
|
You have access to both Gmail and Filesystem tools through MCP servers. When signing up for accounts:
|
|
|
|
1. Fill out registration forms with the provided email address
|
|
2. Use the filesystem tools to create a file called 'anthropic_registration.txt' on the Desktop containing:
|
|
- Email used for registration
|
|
- Timestamp of registration
|
|
- Any username or account details
|
|
3. After submitting the registration, use the Gmail MCP tools to check for verification emails
|
|
4. Search for recent emails (within the last 5 minutes) from the service you're signing up for
|
|
5. Look for verification links or codes in those emails
|
|
6. Append the verification details to the registration file
|
|
7. Use any verification links or codes found to complete the account setup
|
|
8. Update the file with the final account status
|
|
|
|
Available tools include:
|
|
Gmail tools:
|
|
- search_emails: Search for emails by query (e.g., "from:noreply@anthropic.com")
|
|
- get_email: Get full email content by ID
|
|
- list_emails: List recent emails
|
|
|
|
Filesystem tools:
|
|
- read_file: Read content from a file
|
|
- write_file: Write content to a file
|
|
- list_directory: List files in a directory
|
|
|
|
Always wait a few seconds after submitting a form before checking Gmail to allow the email to arrive.
|
|
""",
|
|
)
|
|
|
|
# Run the agent
|
|
result = await agent.run()
|
|
|
|
print('\nTask completed!')
|
|
print(f'Result: {result}')
|
|
|
|
# Disconnect both MCP clients
|
|
await gmail_client.disconnect()
|
|
await filesystem_client.disconnect()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Prerequisites:
|
|
# 1. Install both MCP servers:
|
|
# npm install -g gmail-mcp-server
|
|
# npm install -g @modelcontextprotocol/server-filesystem
|
|
# 2. Set up Gmail API credentials following: https://github.com/GongRzhe/Gmail-MCP-Server#setup
|
|
# 3. Set these environment variables:
|
|
# export GMAIL_CLIENT_ID="your-client-id"
|
|
# export GMAIL_CLIENT_SECRET="your-client-secret"
|
|
# export GMAIL_REFRESH_TOKEN="your-refresh-token"
|
|
|
|
asyncio.run(main())
|