User Interface for MongoDB Atlas - Web UI and CLI tool
Project description
AtlasUI - MongoDB Atlas User Interface
A comprehensive user interface for MongoDB Atlas, providing both a web-based UI and CLI tool for managing MongoDB Atlas resources.
Features
- Web UI: FastAPI-based web interface for MongoDB Atlas management
- CLI Tool: Command-line interface for Atlas operations
- Complete API Coverage: Built from official MongoDB Atlas OpenAPI specifications
- Modern Stack: FastAPI, Typer, Rich, and modern Python tooling
- Secure Authentication: Supports both API keys (recommended for full functionality) and service accounts (project-scoped only)
Atlas API Coverage
This UI provides access to all MongoDB Atlas administration APIs including:
- Clusters: Create, configure, and manage MongoDB clusters
- Projects: Manage Atlas projects and organizations
- Backup & Restore: Configure backups and restore operations
- Alerts: Set up and manage alert configurations
- Access Control: Manage users, roles, and API keys
- Monitoring: View metrics and performance data
- Federation: Configure identity providers and SSO
- Network Access: Manage IP access lists and private endpoints
Installation
# Using uv (recommended)
uv pip install -e .
# With development dependencies
uv pip install -e ".[dev]"
# With documentation dependencies
uv pip install -e ".[docs]"
# Or use invoke for setup
inv setup
Configuration
Option 1: API Key Authentication (Recommended)
For AtlasUI, API keys are the recommended authentication method because they provide organization-level access, which is required for this application to work correctly across all organizations, projects, and clusters.
Setup:
cp .env.example .env
# Edit .env and set:
ATLAS_AUTH_METHOD=api_key
ATLAS_PUBLIC_KEY=your_public_key
ATLAS_PRIVATE_KEY=your_private_key
⚠ Important: Never commit credentials to version control!
Option 2: Service Account Authentication (Limited Support)
⚠️ Important Limitation: Service accounts in MongoDB Atlas are scoped to individual projects, not organizations. Since AtlasUI is designed to manage all organizations, projects, and clusters in your Atlas account, service accounts have limited utility for this application.
When to use service accounts:
- You only need to manage resources within a single project
- You want OAuth 2.0 authentication for project-specific operations
Setup (for project-scoped operations only):
# Interactive setup wizard
inv configure-service-account
# Manual setup
cp .env.example .env
# Edit .env and set:
ATLAS_AUTH_METHOD=service_account
ATLAS_SERVICE_ACCOUNT_CREDENTIALS_FILE=/path/to/service-account.json
See the Service Account Documentation for detailed instructions.
Recommendation: For full AtlasUI functionality across all organizations and projects, use API key authentication (Option 1).
Usage
Web UI
Start the web server:
# Using invoke
inv run
# Or directly
atlasui-server
# Or with uv
uv run python -m atlasui.server
Then open your browser to http://localhost:8000
CLI Tool
# List all clusters
atlasui clusters list <project-id>
# Get cluster details
atlasui clusters get <project-id> <cluster-name>
# Create a new cluster
atlasui clusters create --name my-new-cluster --project-id <project-id>
# List projects
atlasui projects list
# View help
atlasui --help
Development
AtlasUI uses Invoke for task automation.
Available Tasks
# See all available tasks
inv --list
# Setup development environment
inv setup
# Install with dev dependencies
inv dev-install
# Run tests
inv test
# Run tests without coverage
inv test --no-coverage
# Format code
inv format
# Check formatting without changes
inv format --check
# Lint code
inv lint
# Run all checks (format, lint, test)
inv check
# Build documentation
inv docs
# Build and open docs in browser
inv docs --open-browser
# Clean build artifacts
inv clean
# Run web server
inv run
# Run with custom host/port
inv run --host=127.0.0.1 --port=8080
# Run with auto-reload
inv run --reload
# Show CLI help
inv cli
# Show version
inv version
# Test Atlas connection
inv info
Common Development Workflows
# Initial setup
inv setup
# Before committing
inv check
# Making a release
inv release
Documentation
Build the documentation:
inv docs
View the documentation at docs/_build/html/index.html
Project Structure
atlasui/
├── atlasui/ # Main package
│ ├── api/ # FastAPI routes and endpoints
│ ├── cli/ # CLI commands
│ ├── client/ # Atlas API client (generated from OpenAPI)
│ ├── models/ # Pydantic models
│ ├── services/ # Business logic
│ ├── static/ # Static files for web UI
│ ├── templates/ # HTML templates
│ └── config.py # Configuration management
├── tests/ # Test suite
├── docs/ # Sphinx documentation
├── openapi/ # MongoDB Atlas OpenAPI specs
└── tasks.py # Invoke task definitions
Testing
# Run all tests
inv test
# Run specific test file
pytest tests/test_client.py
# Run with verbose output
inv test --verbose
# Generate coverage report
inv test --coverage
API Access
The web server exposes RESTful APIs at:
- Root: http://localhost:8000/
- Health: http://localhost:8000/health
- Projects: http://localhost:8000/api/projects/
- Clusters: http://localhost:8000/api/clusters/{project_id}
- Alerts: http://localhost:8000/api/alerts/{project_id}
- Backups: http://localhost:8000/api/backups/{project_id}/{cluster_name}/snapshots
- Interactive Docs: http://localhost:8000/docs
License
See LICENSE file for details.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
Quick Links
- Quick Start Guide - Get started in 5 minutes
- Contributing Guide - Development guidelines
- MongoDB Atlas API Docs
- MongoDB Atlas OpenAPI Specs
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 atlasui-0.1.2.tar.gz.
File metadata
- Download URL: atlasui-0.1.2.tar.gz
- Upload date:
- Size: 55.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
626096238e98c44d72c563899c7698bb60597f20895827f52130ae4687359449
|
|
| MD5 |
64ee409e802411b76e5b91051482002a
|
|
| BLAKE2b-256 |
af58596a5989ee98dfe05dacfbb0f1d6af9cd42ff82ff31fc328485c07f15535
|
Provenance
The following attestation bundles were made for atlasui-0.1.2.tar.gz:
Publisher:
publish.yml on jdrumgoole/atlasui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atlasui-0.1.2.tar.gz -
Subject digest:
626096238e98c44d72c563899c7698bb60597f20895827f52130ae4687359449 - Sigstore transparency entry: 709868558
- Sigstore integration time:
-
Permalink:
jdrumgoole/atlasui@17b718b79b79a6ed1aa5db85e6e5cb9895c31264 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/jdrumgoole
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@17b718b79b79a6ed1aa5db85e6e5cb9895c31264 -
Trigger Event:
release
-
Statement type:
File details
Details for the file atlasui-0.1.2-py3-none-any.whl.
File metadata
- Download URL: atlasui-0.1.2-py3-none-any.whl
- Upload date:
- Size: 69.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b3b9446f88f761b15c356d8f454983f1361d1fa41c875f3b6c95d7943bb417d
|
|
| MD5 |
d404e87564bea985e74e8451dd257e31
|
|
| BLAKE2b-256 |
683f73f4cbfbffa4bbc07c86cfce04f33008870329a7438cf0a18c03547775df
|
Provenance
The following attestation bundles were made for atlasui-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on jdrumgoole/atlasui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
atlasui-0.1.2-py3-none-any.whl -
Subject digest:
8b3b9446f88f761b15c356d8f454983f1361d1fa41c875f3b6c95d7943bb417d - Sigstore transparency entry: 709868560
- Sigstore integration time:
-
Permalink:
jdrumgoole/atlasui@17b718b79b79a6ed1aa5db85e6e5cb9895c31264 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/jdrumgoole
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@17b718b79b79a6ed1aa5db85e6e5cb9895c31264 -
Trigger Event:
release
-
Statement type: