A comprehensive Model Context Protocol (MCP) server for interacting with the Delphix Data Control Tower (DCT) API. This server provides AI assistants with structured access to Delphix's data management capabilities through a robust tool interface.
- Features
- Prerequisites
- MCP Client Configuration
- Installation
- Available Tools
- Usage Examples
- Development
- Privacy & Telemetry
- Troubleshooting
- License
- Support
- Comprehensive DCT integration: Specialized tools across datasets, environments, engines, compliance, jobs, and reporting
- Safety first: Robust API client with retry logic, exponential backoff, and SSL configuration
- Flexible configuration: Environment-based setup with comprehensive validation
- Cross-platform support: Ready-to-use startup scripts for Windows, macOS, and Linux
- Optional telemetry: Consent-gated usage analytics. Disabled by default.
- Structured logging: Application and session logging with telemetry tracking
- Python 3.11+: Required for modern async features and type hints
- Delphix DCT Instance: Access to a running Delphix Data Control Tower
- API Key: Valid DCT API key with read-only permissions
- Network Access: Connectivity to your DCT instance
Note: Use absolute paths for the
commandfield in all configurations. Ensure the correct environment variables are provided for each client application, as the server process relies on them. Different client applications may have different argument parsing. Refer to the client application's documentation.
All configurations support these environment variables:
DCT_API_KEY- Your Delphix DCT API key (required)DCT_BASE_URL- Your DCT instance URL (required)DCT_VERIFY_SSL- Enable SSL verification (true/false, default:false)DCT_LOG_LEVEL- Logging level (DEBUG,INFO,WARNING,ERROR,CRITICAL)DCT_TIMEOUT- Request timeout in seconds (default:30)DCT_MAX_RETRIES- Maximum retry attempts (default:3)IS_LOCAL_TELEMETRY_ENABLED- Enable telemetry (true/false, default:false)
Claude Desktop
Configure in your Claude Desktop settings file:
Option 1: Using uvx (Recommended)
Note: This option requires uv to be installed on your system.
{
"mcpServers": {
"delphix-dct": {
"command": "uvx",
"args": ["--from", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_LOG_LEVEL": "INFO"
}
}
}
}Alternatively, you can use pip by replacing the command and args with "command": "pip" and "args": ["install", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"].
Option 2: Using Python directly
{
"mcpServers": {
"delphix-dct": {
"command": "python",
"args": ["/absolute/path/to/dxi-mcp-server/src/dct_mcp_server/main.py"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Option 3: Using shell/batch scripts
Note: The
commandpath should point to the startup script that matches your system. Scripts are provided for different platforms (.shfor Linux/macOS,.batfor Windows). If you choose a_uvscript (e.g.,start_mcp_server_uv.sh), you must have uv installed.
{
"mcpServers": {
"delphix-dct": {
"command": "/absolute/path/to/dxi-mcp-server/start_mcp_server_uv.sh",
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Cursor IDE
Add to your Cursor settings:
Option 1: Using uvx (Recommended)
Note: This option requires uv to be installed on your system.
{
"mcpServers": [
{
"name": "delphix-dct",
"command": "uvx",
"args": ["--from", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_LOG_LEVEL": "INFO"
}
}
]
}Alternatively, you can use pip by replacing the command and args with "command": "pip" and "args": ["install", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"].
Option 2: Using Python directly
{
"mcpServers": [
{
"name": "delphix-dct",
"command": "python",
"args": ["/absolute/path/to/dxi-mcp-server/src/dct_mcp_server/main.py"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
]
}Option 3: Using shell scripts
Note: The
commandpath should point to the startup script that matches your system. Scripts are provided for different platforms (.shfor Linux/macOS,.batfor Windows). If you choose a_uvscript (e.g.,start_mcp_server_uv.sh), you must have uv installed.
{
"mcpServers": [
{
"name": "delphix-dct",
"command": "/absolute/path/to/dxi-mcp-server/start_mcp_server_uv.sh",
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_LOG_LEVEL": "INFO"
}
}
]
}VS Code
Configure in your VS Code settings:
Option 1: Using uvx (Recommended)
Note: This option requires uv to be installed on your system.
{
"servers": {
"delphix-dct": {
"command": "uvx",
"args": ["--from", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Alternatively, you can use pip by replacing the command and args with "command": "pip" and "args": ["install", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"].
Option 2: Using Python directly
{
"servers": {
"delphix-dct": {
"command": "python",
"args": ["/absolute/path/to/dxi-mcp-server/src/dct_mcp_server/main.py"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Option 3: Using shell scripts
Note: The
commandpath should point to the startup script that matches your system. Scripts are provided for different platforms (.shfor Linux/macOS,.batfor Windows). If you choose a_uvscript (e.g.,start_mcp_server_uv.sh), you must have uv installed.
{
"servers": {
"delphix-dct": {
"command": "/absolute/path/to/dxi-mcp-server/start_mcp_server_uv.sh",
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Eclipse
Configure in your Eclipse MCP settings:
Option 1: Using uvx (Recommended)
Note: This option requires uv to be installed on your system.
{
"servers": {
"delphix-dct": {
"command": "uvx",
"args": ["--from", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_LOG_LEVEL": "INFO"
}
}
}
}Alternatively, you can use pip by replacing the command and args with "command": "pip" and "args": ["install", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"].
Option 2: Using Python directly
{
"servers": {
"delphix-dct": {
"command": "python",
"args": ["/absolute/path/to/dxi-mcp-server/src/dct_mcp_server/main.py"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Option 3: Using shell scripts
Note: The
commandpath should point to the startup script that matches your system. Scripts are provided for different platforms (.shfor Linux/macOS,.batfor Windows). If you choose a_uvscript (e.g.,start_mcp_server_uv.sh), you must have uv installed.
{
"servers": {
"delphix-dct": {
"command": "/absolute/path/to/dxi-mcp-server/start_mcp_server_uv.sh",
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_LOG_LEVEL": "INFO"
}
}
}
}IntelliJ IDEA
Configure in your IntelliJ MCP settings:
Option 1: Using uvx (Recommended)
Note: This option requires uv to be installed on your system.
{
"servers": {
"delphix-dct": {
"command": "uvx",
"args": ["--from", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_LOG_LEVEL": "DEBUG",
"DCT_TIMEOUT": "60"
}
}
}
}Alternatively, you can use pip by replacing the command and args with "command": "pip" and "args": ["install", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"].
Option 2: Using Python directly
{
"servers": {
"delphix-dct": {
"command": "python",
"args": ["/absolute/path/to/dxi-mcp-server/src/dct_mcp_server/main.py"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_TIMEOUT": "60"
}
}
}
}Option 3: Using shell scripts
Note: The
commandpath should point to the startup script that matches your system. Scripts are provided for different platforms (.shfor Linux/macOS,.batfor Windows). If you choose a_uvscript (e.g.,start_mcp_server_uv.sh), you must have uv installed.
{
"servers": {
"delphix-dct": {
"command": "/absolute/path/to/dxi-mcp-server/start_mcp_server_uv.sh",
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true",
"DCT_LOG_LEVEL": "DEBUG",
"DCT_TIMEOUT": "60"
}
}
}
}Windsurf
Configure in your Windsurf MCP settings:
Option 1: Using uvx (Recommended)
Note: This option requires uv to be installed on your system.
{
"mcpServers": {
"delphix-dct": {
"command": "uvx",
"args": ["--from", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Alternatively, you can use pip by replacing the command and args with "command": "pip" and "args": ["install", "git+https://github.com/delphix/dxi-mcp-server.git", "dct-mcp-server"].
Option 2: Using Python directly
{
"mcpServers": {
"delphix-dct": {
"command": "python",
"args": ["/absolute/path/to/dxi-mcp-server/src/dct_mcp_server/main.py"],
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}Option 3: Using shell scripts
Note: The
commandpath should point to the startup script that matches your system. Scripts are provided for different platforms (.shfor Linux/macOS,.batfor Windows). If you choose a_uvscript (e.g.,start_mcp_server_uv.sh), you must have uv installed.
{
"mcpServers": {
"delphix-dct": {
"command": "/absolute/path/to/dxi-mcp-server/start_mcp_server_uv.sh",
"env": {
"DCT_API_KEY": "apk1.your-api-key-here",
"DCT_BASE_URL": "https://your-dct-host.company.com",
"DCT_VERIFY_SSL": "true"
}
}
}
}This section is for users who want to run the server as a standalone command-line tool or contribute to its development. If you only plan to use this server within a specific client application, the uvx method in the MCP Client Configuration section is recommended and does not require a separate installation.
The server is configured by setting environment variables. Below are examples for setting these variables on different platforms.
Command-Line (Linux/macOS)
Use the export command to set variables for your current shell session. For improved security, avoid adding secrets like the API key to your shell's profile file.
Production Example:
export DCT_API_KEY="apk1.your-production-key"
export DCT_BASE_URL="https://dct-prod.company.com"
export DCT_VERIFY_SSL="true"
export DCT_LOG_LEVEL="INFO"Development Example:
export DCT_API_KEY="apk1.your-development-key"
export DCT_BASE_URL="https://dct-dev.company.com"
export DCT_VERIFY_SSL="false"
export DCT_LOG_LEVEL="DEBUG"Command-Line (Windows)
Use the set command in Command Prompt or $env: in PowerShell for the current session. For improved security, avoid setting secrets like the API key permanently.
Command Prompt:
set DCT_API_KEY="apk1.your-production-key"
set DCT_BASE_URL="https://dct-prod.company.com"
set DCT_VERIFY_SSL="true"PowerShell:
$env:DCT_API_KEY="apk1.your-production-key"
$env:DCT_BASE_URL="https://dct-prod.company.com"
$env:DCT_VERIFY_SSL="true"Choose the installation method that best suits your needs.
This is the recommended method for users who want to use the server without modifying its code.
Prerequisites:
- Python 3.11+
pipandgitinstalled on your system.- Your DCT API Key and DCT Base URL must be provided as environment variables. See the command-line examples in the Installation section for details.
Install the server directly from GitHub using pip:
pip install git+https://github.com/delphix/dxi-mcp-server.git
# Verify the installation
dct-mcp-server --helpThis makes the dct-mcp-server command available globally in your environment.
This method is for developers who want to modify the code or run it from a local clone.
Prerequisites:
- Python 3.11+
gitinstalled on your system.- Your DCT API Key and DCT Base URL must be provided as environment variables. See the command-line examples in the Installation section for details.
Steps:
-
Clone the repository:
git clone https://github.com/delphix/dxi-mcp-server.git cd dxi-mcp-server -
Set up the environment and install dependencies: The included scripts handle environment setup automatically. We recommend using
uvfor the best performance. On macOS or Linux, run:chmod +x start_mcp_server_uv.sh ./start_mcp_server_uv.sh
Note: Other startup scripts are available. For Windows, use
start_mcp_server_windows_uv.bat. If you prefer not to useuv, scripts for standard Python withvenvare also provided (start_mcp_server_python.shandstart_mcp_server_windows_python.bat).
Once the server is running (either via the command-line tool or from the source), it will print the port it is listening on to the console (e.g., INFO: Uvicorn running on http://127.0.0.1:6790 (Press CTRL+C to quit)). To connect your client, you only need to specify this port number. You do not need to provide environment variables in the client configuration, as the server already has them from your terminal session.
Example for Claude Desktop: Configure your Claude Desktop settings to connect to the running server by specifying the port.
{
"mcpServers": {
"delphix-dct": {
"port": 6790
}
}
}Note: You can configure other MCP clients similarly by providing the port number. This method is ideal for development, as it allows you to restart the server without reconfiguring or restarting your client application. For troubleshooting, all log files can be found in the
logsdirectory created in the project root.
The server provides specialized tools for interacting with different aspects of the Delphix DCT API:
search_data_connections - Find and filter database connections
- Purpose: Discover database connections by platform, status, and capabilities
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Connection discovery, status monitoring, platform inventory
search_dsources - Search for dSource objects (linked data sources)
- Purpose: Find linked data sources with filtering and pagination
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Data source management, capacity planning, source discovery
search_snapshots - Locate specific snapshots across datasets
- Purpose: Find snapshots with time-based filtering
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Point-in-time recovery, backup verification, timeline analysis
search_sources - Find source database objects and their configurations
- Purpose: Discover source databases and their settings
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Source inventory, configuration review, compliance checking
search_timeflows - Search timeline flows for data history
- Purpose: Find timeline flows and recovery points
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Data lineage, recovery planning, timeline management
search_vdb_groups - Locate virtual database groups
- Purpose: Find VDB groups and their member databases
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Group management, resource organization, bulk operations
search_vdbs - Search virtual databases
- Purpose: Find virtual databases with status and environment filtering
- Parameters:
filter_expression,limit,cursor,sort - Use cases: VDB inventory, environment management, status monitoring
search_environments - Find database environments
- Purpose: Discover environments by type, status, and configuration
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Environment discovery, capacity planning, status monitoring
search_engines - Locate Delphix engines
- Purpose: Find engines and check their operational status
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Engine monitoring, capacity management, health checking
search_connectors - Find compliance connectors
- Purpose: Discover connectors for data governance workflows
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Compliance management, connector inventory, governance tracking
search_executions - Search compliance execution history
- Purpose: Find compliance execution history and audit trails
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Audit trail analysis, compliance reporting, execution monitoring
search_jobs - Search job execution history
- Purpose: Find jobs with status filtering and error details
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Job monitoring, error analysis, performance tracking
search_storage_capacity_data - Get storage capacity metrics
- Purpose: Retrieve storage capacity and utilization data
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Capacity planning, storage optimization, usage reporting
search_storage_savings_summary_report - Generate storage efficiency reports
- Purpose: Create storage efficiency and compression reports
- Parameters:
filter_expression,limit,cursor,sort - Use cases: Cost analysis, efficiency reporting, savings tracking
search_virtualization_storage_summary_report - Create virtualization impact reports
- Purpose: Generate virtualization impact and savings reports
- Parameters:
filter_expression,limit,cursor,sort - Use cases: ROI analysis, virtualization benefits, impact assessment
All tools support:
- Advanced Filtering: Complex filter expressions using comparison operators (EQ, NE, GT, LT, CONTAINS, IN) and logical operators (AND, OR, NOT)
- Flexible Pagination: Control result sets with
limitandcursorparameters - Smart Sorting: Sort results by any available field in ascending or descending order
- Comprehensive Search: Use the SEARCH operator to find items across multiple attributes
- Error Handling: Detailed error responses with actionable troubleshooting information
# Find active Oracle databases
"filter_expression": "platform EQ 'oracle' AND status EQ 'ACTIVE'"
# Search for large datasets (> 100GB)
"filter_expression": "size GT 107374182400"
# Find resources with specific tags
"filter_expression": "tags CONTAINS 'production'"
# Complex logical expressions
"filter_expression": "NOT (status EQ 'INACTIVE') AND (platform IN ['oracle', 'postgresql'])"dxi-mcp-server/
├── README.md # This file
├── LICENSE.md # MIT license
├── pyproject.toml # Python project configuration
├── requirements.txt # Dependencies (legacy format)
├── uv.lock # Locked dependencies (uv format)
├── start_mcp_server_*.{sh,bat} # Cross-platform startup scripts
├── logs/ # Runtime logs and telemetry
│ ├── dct_mcp_server.log # Main application logs
│ └── sessions/ # Telemetry session logs
└── src/
└── dct_mcp_server/
├── main.py # Application entry point
├── config/
│ └── config.py # Configuration management
├── core/
│ ├── decorators.py # Logging and telemetry decorators
│ ├── exceptions.py # Custom exception classes
│ ├── logging.py # Logging configuration
│ └── session.py # Session and telemetry management
├── dct_client/
│ └── client.py # DCT API HTTP client
├── tools/ # MCP tools for DCT endpoints
│ ├── dataset_endpoints_tool.py
│ ├── environment_endpoints_tool.py
│ ├── engine_endpoints_tool.py
│ ├── compliance_endpoints_tool.py
│ ├── job_endpoints_tool.py
│ └── reports_endpoints_tool.py
└── icons/
└── logo-delphixmcp-reg.png
When IS_LOCAL_TELEMETRY_ENABLED is set to true, the server collects anonymous usage analytics to help improve functionality and user experience.
- Tool Execution Metadata: Tool name, execution status (success/failure), and session duration
- User Identification: Operating system username (via
getpass.getuser()) for usage pattern analysis - Error Context: Anonymized error types and frequencies (no sensitive data)
- Performance Metrics: Tool execution times and system resource usage
- Sensitive Data: No API keys, database content, or business data
- Personal Information: No personally identifiable information beyond OS username
- DCT Data: No data returned from DCT API calls
- Network Information: No IP addresses or network configurations
- Local Storage Only: All telemetry data is stored locally in
logs/sessions/directory - No Remote Transmission: Data never leaves your local machine
- User Control: Easily disabled by setting
IS_LOCAL_TELEMETRY_ENABLED="false" - Transparent Format: Log files use human-readable JSON format
{
"session_id": "abc123",
"timestamp": "2025-12-05T10:30:00Z",
"user": "developer",
"tool": "get_datasets",
"status": "success",
"duration_ms": 245,
"args_count": 3
}Connection Errors:
# Check DCT connectivity
curl -k -H "Authorization: Bearer $DCT_API_KEY" "$DCT_BASE_URL/v1/about"
# Verify SSL settings
export DCT_VERIFY_SSL="false" # For self-signed certificatesAuthentication Failures:
# Verify API key format
echo $DCT_API_KEY # Should start with 'apk1.'
# Check API key permissions in DCT admin consoleTool Generation Issues:
# Enable debug logging
export DCT_LOG_LEVEL="DEBUG"
# Check DCT API accessibility
curl -k "$DCT_BASE_URL/v1/about"MCP Client Connection Issues:
# Test server startup
./start_mcp_server_python.sh
# Verify Python path
export PYTHONPATH=src
python -c "import dct_mcp_server; print('Import successful')"Enable comprehensive debugging:
export DCT_LOG_LEVEL="DEBUG"
export IS_LOCAL_TELEMETRY_ENABLED="true"
./start_mcp_server_python.sh 2>&1 | tee debug.logBy default, all log files are generated in a logs directory. The location depends on how the server is started:
- Local Development: When you run the server from the cloned source code, the
logsdirectory is created at the root of the project. - Client Application: When an MCP client starts the server, the
logsdirectory is typically created at the root of the workspace or project folder you have open in that client.
Check these logs for issues:
# Main application logs
tail -f logs/dct_mcp_server.log
# Session telemetry
ls -la logs/sessions/
# Startup logs
cat logs/mcp_server_setup_logfile.txtThis project is licensed under the MIT License - see the LICENSE.md file for details.
- Issues: Report bugs and request features on GitHub Issues
- Documentation: Full documentation available in the project wiki
- Community Support:
- Community-driven support
- Check the logs: Review
logs/dct_mcp_server.logfor error details - Enable debug mode: Set
DCT_LOG_LEVEL="DEBUG"for verbose output - Search existing issues: Check GitHub Issues for similar problems
- Create a new issue: Provide DCT version, Python version, and complete error logs
We welcome contributions! Please see our contributing guidelines for more details. When creating a pull request, please use the provided template.
Enable your AI assistants to seamlessly manage your data infrastructure with Delphix DCT.
For issues and questions:
- Check the Delphix DCT API documentation
- Open an issue in this repository