A high-performance Model Context Protocol (MCP) server that provides seamless integration with Amazon DataZone services. This server enables AI assistants and applications to interact with Amazon DataZone APIs through a standardized interface.
- Complete Amazon DataZone API Coverage: Access all major DataZone operations
- Modular Architecture: Well-organized, maintainable code structure
- Type Safety: Full TypeScript-style type hints for Python
- Comprehensive Error Handling: Detailed error messages and proper exception handling
- Production Ready: Robust logging, validation, and configuration management
Module | Operations |
---|---|
Domain Management | Create domains, manage domain units, search, policy grants |
Project Management | Create/manage projects, project profiles, memberships |
Data Management | Assets, listings, subscriptions, form types, data sources |
Glossary | Business glossaries, glossary terms |
Environment | Environments, connections, blueprints |
- Python 3.10 or higher
- AWS credentials configured
- An active Amazon DataZone domain
pip install datazone-mcp-server
git clone https://github.com/awslabs/amazon-datazone-mcp-server.git
cd datazone-mcp-server
pip install -e .
# Using AWS CLI
aws configure
# Or set environment variables
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-east-1
python -m datazone_mcp_server.server
import asyncio
from mcp import create_client
async def main():
# Connect to the DataZone MCP server
client = await create_client("stdio", ["python", "-m", "datazone_mcp_server.server"])
# List available tools
tools = await client.list_tools()
print(f"Available tools: {len(tools.tools)}")
# Call a DataZone operation
result = await client.call_tool("get_domain", {
"identifier": "dzd_your_domain_id"
})
print(result.content)
asyncio.run(main())
# Create a new DataZone domain
domain = await client.call_tool("create_domain", {
"name": "MyDataDomain",
"domain_execution_role": "arn:aws:iam::123456789012:role/DataZoneExecutionRole",
"service_role": "arn:aws:iam::123456789012:role/DataZoneServiceRole",
"description": "My data governance domain"
})
# Create a project
project = await client.call_tool("create_project", {
"domain_identifier": "dzd_abc123",
"name": "Analytics Project",
"description": "Project for analytics workloads"
})
# List projects
projects = await client.call_tool("list_projects", {
"domain_identifier": "dzd_abc123"
})
# Create an asset
asset = await client.call_tool("create_asset", {
"domain_identifier": "dzd_abc123",
"name": "Customer Data",
"type_identifier": "amazon.datazone.RelationalTable",
"owning_project_identifier": "prj_xyz789"
})
# Publish the asset
published = await client.call_tool("publish_asset", {
"domain_identifier": "dzd_abc123",
"asset_identifier": asset["id"]
})
datazone-mcp-server/
├── src/datazone_mcp_server/
│ ├── server.py # Main MCP server entry point
│ ├── tools/ # Tool modules
│ │ ├── common.py # Shared utilities
│ │ ├── domain_management.py
│ │ ├── project_management.py
│ │ ├── data_management.py
│ │ ├── glossary.py
│ │ └── environment.py
│ └── __init__.py
├── tests/ # Test suite
├── examples/ # Usage examples
└── docs/ # Documentation
# Clone the repository
git clone https://github.com/awslabs/amazon-datazone-mcp-server.git
cd datazone-mcp-server
# Install with development dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
# Run all tests
pytest
# Run with coverage
pytest --cov=datazone_mcp_server
# Run specific test file
pytest tests/test_domain_management.py
# Format code
black src tests
isort src tests
# Type checking
mypy src
# Linting
flake8 src tests
The Amazon DataZone MCP server provides 38 tools organized into 5 categories:
get_domain
- Retrieve domain informationcreate_domain
- Create a new domainlist_domain_units
- List domain unitscreate_domain_unit
- Create domain unitlist_domains
- List domainsadd_entity_owner
- Add entity ownershipadd_policy_grant
- Grant policiessearch
- Search across DataZonesearch_types
- Search typs across DataZoneget_user_profile
- Get user profilesearch_user_profiles
- Search user profilessearch_group_profiles
- Search group profiles
create_project
- Create new projectget_project
- Get project detailslist_projects
- List all projectscreate_project_membership
- Add project memberslist_project_profiles
- List project profilescreate_project_profile
- Create project profileget_project_profile
- Get project profilelist_project_memberships
- List project memberships
create_glossary
- Create business glossarycreate_glossary_term
- Create glossary termget_glossary
- Get glossary detailsget_glossary_term
- Get term details
get_asset
- Retrieve asset informationcreate_asset
- Create new assetpublish_asset
- Publish asset to catalogget_listing
- Get asset listingsearch_listings
- Search published assetscreate_data_source
- Create data sourceget_data_source
- Get data sourcestart_data_source_run
- Start data source runcreate_subscription_request
- Request data subscriptionaccept_subscription_request
- Accept subscriptionget_form_type
- Get metadata form typecreate_form_type
- Create metadata form typeget_subscription
- Get subscriptionlist_data_sources
- List data sources
list_environments
- List environmentscreate_connection
- Create environment connectionget_connection
- Get connection detailsget_environment
- Get environment detailsget_environment_blueprint
- Get environment blueprintget_environment_blueprint_configuration
- Get environment blueprint configurationlist_connections
- List all connectionslist_environment_blueprints
- List available blueprintslist_environment_blueprint_configurations
- List available blueprint configurationslist_environment_profiles
- List environment profiles
For detailed documentation of each tool with parameters and examples, see our Tool Reference.
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
This is an unofficial, community-developed project and is not affiliated with, endorsed by, or supported by Amazon Web Services, Inc.
- AWS and DataZone are trademarks of Amazon.com, Inc. or its affiliates
- This project provides a community-built interface to Amazon DataZone APIs
- Users are responsible for their own AWS credentials, costs, and compliance
- No warranty or support is provided - use at your own risk
- Always follow AWS security best practices when using this tool
For official Amazon DataZone documentation and support, visit Amazon DataZone Documentation.
- Model Context Protocol for the protocol specification
- Amazon DataZone for the data governance platform
- The open-source community for inspiration and contributions