An MCP server providing tools to control web browsers using the Amazon Nova Act SDK
Project description
nova-act-mcp
nova‑act‑mcp‑server is a zero‑install Model Context Protocol (MCP) server that exposes Amazon Nova Act browser‑automation tools.
What's New in v3.0.0
- On-Demand Screenshots: New
inspect_browsertool to explicitly request screenshots only when needed - Reduced Token Usage: Browser actions no longer automatically include screenshots, saving context space
- More Efficient Workflows: Agents can now control when to get visual feedback
- Better Performance: Smaller response payloads improve overall agent experience
New inspect_browser Tool Example
# Start a browser session
start_result = await control_browser(action="start", url="https://example.com")
session_id = start_result["session_id"]
# Execute an action without getting a screenshot
execute_result = await control_browser(
action="execute",
session_id=session_id,
instruction="Click on the 'More information...' link"
)
# Now explicitly request a screenshot to see the result
inspect_result = await inspect_browser(session_id=session_id)
# Example output from inspect_browser:
{
"session_id": "f8a53291-b3a7-4e1e-8c9d-9a12b3c45d67",
"current_url": "https://www.iana.org/domains/reserved",
"page_title": "IANA — IANA-managed Reserved Domains",
"content": [
{
"type": "image_base64",
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCA...",
"caption": "Current viewport"
},
{
"type": "text",
"text": "Current URL: https://www.iana.org/domains/reserved\nPage Title: IANA — IANA-managed Reserved Domains"
}
],
"agent_thinking": [],
"success": true
}
Project Structure
The project is organized with the following structure:
nova-act-mcp/
├── .gitignore
├── docs/ # Documentation
├── examples/ # Demo scripts and usage examples
│ ├── demo_inspect_browser.py
│ ├── simple_inspect_demo.py
│ ├── pizza_order_demo.py
│ └── simple_form_demo.py
├── nova_mcp.py # Core module
├── profiles/ # Nova Act user profiles (runtime generated)
├── pyproject.toml # Project metadata and build config
├── pytest.ini # Pytest configuration
├── README.md # This file
├── tests/ # Test suite
│ ├── assets/ # Test assets
│ ├── unit/ # Fast tests, no external dependencies
│ ├── mock/ # Tests using mocked components
│ ├── integration/ # Tests requiring API key and/or real browser
│ └── functional/ # End-to-end workflow tests
Running Tests
The project uses pytest for testing. Tests are organized into different categories:
# Run unit tests (fast, no external dependencies)
pytest tests/unit
# Run mock tests (using mocked Nova Act / MCP components)
pytest tests/mock
# Run integration tests (requires API key and real browser)
pytest tests/integration
# Run functional tests (end-to-end workflow tests)
pytest tests/functional
# Run all tests
pytest
Note: Integration and functional tests require a valid NOVA_ACT_API_KEY environment variable and will be skipped if not provided.
What's New in v0.2.9
- Improved Screenshot Reliability: More dependable screenshot delivery in responses
- Enhanced Log Path Discovery: Smart, efficient path tracking for logs and screenshots
- Better Agent Communication: Clear messaging when screenshots can't be embedded
- Improved Performance: Eliminated inefficient directory scanning for faster responses
What's New in v0.2.8
- Enhanced Inline Screenshots: Screenshots now appear directly in the response
contentarray - Improved compatibility with vision-capable models like Claude
- Screenshots include descriptive captions based on the executed instruction
- Each screenshot is delivered as
{ type: "image_base64", data: "..." }in the content array
What's New in v0.2.7
- Automatic Inline Screenshots: Every browser action now includes an optimized screenshot
- Improved screenshot quality and reliability for AI agents
- Added environment variables to customize screenshot quality and size limits
- Comprehensive test coverage ensuring screenshots work in all scenarios
New Feature: Inline Screenshots
Every successful execute response now contains inline_screenshot, a base64-encoded JPEG of the current viewport:
- Quality ≈ 45, hard-capped at 250 KB (configurable via
NOVA_MCP_MAX_INLINE_IMGenv variable) - If the raw JPEG is larger than the cap, the field is
null - No extra API calls needed - screenshots are included automatically
- For full-resolution images and HAR/HTML logs, use the
compress_logstool
What's New in v0.2.6
- Added compatibility with NovaAct SDK 0.9+ by normalizing log directory handling
- Improved test organization with clear markers for unit, mock, smoke and e2e tests
- Moved mock HTML creation logic from production code to test helpers
- Fixed several syntax errors and incomplete code blocks
- Added SCREENSHOT_QUALITY constant for consistent compression settings
Quick start (uvx)
Add it to your MCP client configuration:
{
"mcpServers": {
"nova-act-mcp-server": {
"command": "uvx",
"args": ["nova-act-mcp-server@latest"],
"env": { "NOVA_ACT_API_KEY": "<your_api_key>" }
}
}
}
That's all you need to start controlling browsers from any MCP‑compatible client such as Claude Desktop or VS Code.
Local development (optional)
git clone https://github.com/madtank/nova-act-mcp.git
cd nova-act-mcp
uv sync
uv run nova_mcp.py
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nova_act_mcp_server-3.0.1.dev3.tar.gz.
File metadata
- Download URL: nova_act_mcp_server-3.0.1.dev3.tar.gz
- Upload date:
- Size: 36.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f226114bf737bf88e5b3c611fdfcf077ff56cf4df9655a1baf1ac4822885b327
|
|
| MD5 |
2ba37cd10c6be122291fd576a705351b
|
|
| BLAKE2b-256 |
01af3b28260e8b69ea2304de866eb7c19148db448a1397fe1cf3baf9c6bc5603
|
Provenance
The following attestation bundles were made for nova_act_mcp_server-3.0.1.dev3.tar.gz:
Publisher:
ci.yml on madtank/nova-act-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nova_act_mcp_server-3.0.1.dev3.tar.gz -
Subject digest:
f226114bf737bf88e5b3c611fdfcf077ff56cf4df9655a1baf1ac4822885b327 - Sigstore transparency entry: 214396377
- Sigstore integration time:
-
Permalink:
madtank/nova-act-mcp@86ef82427dbf3d31e4854489208727766eb95a21 -
Branch / Tag:
refs/tags/v3.0.1.dev3 - Owner: https://github.com/madtank
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@86ef82427dbf3d31e4854489208727766eb95a21 -
Trigger Event:
push
-
Statement type:
File details
Details for the file nova_act_mcp_server-3.0.1.dev3-py3-none-any.whl.
File metadata
- Download URL: nova_act_mcp_server-3.0.1.dev3-py3-none-any.whl
- Upload date:
- Size: 45.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28b71c9ec8d2cdf260932aee6197b31799fdd06b17de32238004b1e2681b6619
|
|
| MD5 |
3566264aa175ff3285bfb7a6b81b32a2
|
|
| BLAKE2b-256 |
c37843bbd443f27a102dbe2913035321efe771656800381279f832ae7bf89338
|
Provenance
The following attestation bundles were made for nova_act_mcp_server-3.0.1.dev3-py3-none-any.whl:
Publisher:
ci.yml on madtank/nova-act-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nova_act_mcp_server-3.0.1.dev3-py3-none-any.whl -
Subject digest:
28b71c9ec8d2cdf260932aee6197b31799fdd06b17de32238004b1e2681b6619 - Sigstore transparency entry: 214396378
- Sigstore integration time:
-
Permalink:
madtank/nova-act-mcp@86ef82427dbf3d31e4854489208727766eb95a21 -
Branch / Tag:
refs/tags/v3.0.1.dev3 - Owner: https://github.com/madtank
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@86ef82427dbf3d31e4854489208727766eb95a21 -
Trigger Event:
push
-
Statement type: