Web认证MCP服务器
一种MCP(模型上下文协议)服务器,通过基于浏览器的自动身份验证处理HTTP请求。
特性
- 通过MCP工具执行HTTP请求
- 自动检测身份验证要求
- OAuth流和登录表单的基于浏览器的身份验证
- Chrome密码管理器集成 -自动使用保存的密码
- 自动填写和提交表格 -简化登录流程
- 使用捕获的身份验证凭据重试请求
- 支持Cookie、令牌和会话管理
- 可配置的浏览器配置文件(系统或临时)
安装
快速安装
./install.sh手动安装
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Install package
pip install -e .用法
运行MCP服务器
标准模式(默认)
# Activate virtual environment
source venv/bin/activate
# Run the server with stdio transport
web-auth-mcpHTTP/SSE模式
# Activate virtual environment
source venv/bin/activate
# Run the server with HTTP transport on default port 8080
web-auth-mcp-http
# Or specify custom host and port
web-auth-mcp --http 0.0.0.0 8080
# Access the server at: http://localhost:8080/sseMCP客户端配置
用于标准运输
添加到您的MCP客户端配置中(例如,Claude Desktop):
{
"mcpServers": {
"web-auth-mcp": {
"command": "python",
"args": ["-m", "web_auth_mcp.server"],
"env": {
"BROWSER_HEADLESS": "false",
"BROWSER_TIMEOUT": "60"
}
}
}
}用于HTTP/SSE传输
配置您的MCP客户端以连接到HTTP端点:
{
"mcpServers": {
"web-auth-mcp": {
"url": "http://localhost:8080/sse",
"env": {
"BROWSER_HEADLESS": "false",
"BROWSER_TIMEOUT": "60"
}
}
}
}测试
# Run tests
pytest
# Run example
python example_usage.py配置
创建一个 .env 具有可选配置的文件:
# Browser configuration
BROWSER_HEADLESS=false
BROWSER_TIMEOUT=60
BROWSER_WINDOW_SIZE=1920x1080
# Chrome Password Manager (NEW!)
BROWSER_USE_DEFAULT_PROFILE=false
BROWSER_ENABLE_PASSWORD_MANAGER=true
BROWSER_AUTO_FILL_PASSWORDS=true
# Authentication configuration
AUTH_CACHE_TTL=3600
AUTH_RETRY_ATTEMPTS=3
# Authentication timing (fixes quick closing issue)
BROWSER_TIMEOUT=300
MANUAL_AUTH_TIMEOUT=180
AUTH_WAIT_TIME=10
# Logging configuration
LOG_LEVEL=INFO
SUPPRESS_MCP_WARNINGS=trueChrome密码管理器集成
服务器现在支持使用Chrome保存的密码进行自动身份验证:
快速开始
- 启用密码管理器功能:
export BROWSER_ENABLE_PASSWORD_MANAGER=true
export BROWSER_AUTO_FILL_PASSWORDS=true
export BROWSER_HEADLESS=false- 选择配置文件模式:
- 系统配置文件 (访问所有已保存的密码):
export BROWSER_USE_DEFAULT_PROFILE=true- 临时配置文件 (仅限会话密码):
export BROWSER_USE_DEFAULT_PROFILE=false- 测试功能:
python test_password_manager.py
python example_password_manager.py运作原理
- 自动检测:检测网页上的登录表单
- Chrome自动填充:触发Chrome的内置密码自动填充
- 表格提交:找到凭据时自动提交表单
- 后备方案:如果自动填充失败,则可以进行手动交互
支持的登录表单
- 标准HTML登录表单
- 电子邮件/用户名+密码组合
- 常见的表单字段模式和选择器
- 各种提交按钮类型
有关详细文档,请参阅 CHROME_PASSWORD_MANAGER.md.
故障排除
MCP初始化警告
您可能会看到以下警告:
WARNING - Failed to validate request: Received request before initialization was complete这是正常的MCP协议行为 并且不影响功能。这些警告发生在初始化完成之前收到请求的客户端-服务器握手过程中。
要抑制这些警告:
export SUPPRESS_MCP_WARNINGS=true
# or add to your .env file:
echo "SUPPRESS_MCP_WARNINGS=true" >> .env无论这些警告如何,服务器都将继续正常运行。
工具
http_request
执行带有自动身份验证处理的HTTP请求。
参数:
url(string):要请求的URLmethod(string):HTTP方法(GET、POST、PUT、DELETE等)headers(object,可选):请求标头body(string,可选):请求正文auth_required(布尔值,可选):强制身份验证流
退货:
- 响应状态、标头和正文
- 如果执行了身份验证,则提供身份验证详细信息
运作原理
- HTTP请求:服务器通过MCP工具接收HTTP请求
- 身份验证检测:通过检查以下内容来检查是否需要身份验证:
- HTTP状态码(401403) - 将响应重定向到登录页面 - 内容指示器(“请登录”等) - WWW身份验证标头
- 浏览器身份验证:如果需要身份验证:
- 打开浏览器窗口(无头或可见) - 导航到需要身份验证的URL - 等待用户完成身份验证 - 提取身份验证数据(Cookie、令牌、标头)
- 请求重试:使用身份验证数据检索原始请求
- 响应:返回带有身份验证状态的最终响应
支持的身份验证类型
- OAuth 2.0流程 (授权码、隐式等)
- 基于表单的登录 (用户名/密码表单)
- 基于Cookie的会话
- 基于令牌的身份验证 (JWT,不记名代币)
- CSRF保护 (自动提取令牌)
浏览器自动化
服务器使用Selenium WebDriver和Chrome来处理身份验证:
- 支持无头和可见浏览器模式
- 自动检测身份验证完成
- 从localStorage、sessionStorage和Cookie中提取令牌
- 处理来自元标签的CSRF令牌
- 可配置的超时和窗口大小
故障排除
浏览器问题
浏览器无法打开:
- 检查一下
BROWSER_HEADLESS=false(默认) - 确保您的系统上安装了Chrome
浏览器打开但未关闭:
- 服务器自动检测身份验证完成
- 等待成功消息:“✅ 身份验证已成功完成!"
- 如果卡住,请检查您是否已完全完成登录过程
身份验证超时:
- 增加超时时间:
BROWSER_TIMEOUT=120(默认值:60秒) - 确保在超时时间内完成身份验证
常见解决方案
# Force visible browser
export BROWSER_HEADLESS=false
# Increase timeout
export BROWSER_TIMEOUT=120
# Debug mode
export LOG_LEVEL=DEBUG