MCP-practice
this is repository for all my MCP code practices
Databricks MCP Server
A Model Context Protocol (MCP) server that provides tools for interacting with Databricks SQL Analytics.
Files Overview
venv/test_mcp_cloud.py: Main MCP server script providing Databricks SQL toolsvenv/databricks_connection.py: Connection test script to verify Databricks credentialsvenv/run_inspector.ps1: PowerShell script to launch MCP inspector with environment variablesvenv/.env: Environment variables file (create this with your credentials)README.md: This documentation file
Features
- Query Databricks: Execute SELECT queries on Databricks tables
- Update Databricks: Perform INSERT, UPDATE, DELETE operations
- List Tables: Browse available tables in your schema
- Inspect Schema: Get column information for specific tables
Prerequisites
- Python 3.8+
- Databricks workspace with SQL Analytics enabled
- Personal Access Token with appropriate permissions
Installation
- Clone this repository
- Create a virtual environment:
python -m venv venv
venv\Scripts\activate # On Windows
- Install dependencies:
pip install fastmcp databricks-sql-connector sqlalchemy python-dotenv
Configuration
- Create a
.envfile in thevenv/directory:
DATABRICKS_SERVER_HOSTNAME=your-workspace.databricks.com
DATABRICKS_HTTP_PATH=/sql/1.0/warehouses/your-warehouse-id
DATABRICKS_TOKEN=your-personal-access-token
DATABRICKS_CATALOG=your-catalog-name
DATABRICKS_SCHEMA=your-schema-name
- Test your connection:
python venv/databricks_connection.py
Usage
Testing the MCP Server
Using the PowerShell script (recommended):
- Edit
venv/run_inspector.ps1and update the paths and your Databricks credentials - Run:
./venv/run_inspector.ps1
Manual command: ``bash npx @modelcontextprotocol/inspector venv/Scripts/python.exe venv/test_mcp_cloud.py ``
Important: Before running run_inspector.ps1, you must edit the file and update:
- The
$PYTHON_EXEand$SERVER_PYpaths to match your system - All the credential variables (
$TOKEN,$HOSTNAME,$PATH,$CATALOG,$SCHEMA) with your actual Databricks information
Claude Desktop Integration
To use this MCP server with Claude Desktop:
- Locate the config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Add the server configuration:
{
"mcpServers": {
"databricks": {
"command": "python",
"args": ["path/to/your/weather-mcp-server/venv/test_mcp_cloud.py"],
"env": {
"DATABRICKS_SERVER_HOSTNAME": "your-workspace.databricks.com",
"DATABRICKS_HTTP_PATH": "/sql/1.0/warehouses/your-warehouse-id",
"DATABRICKS_TOKEN": "your-personal-access-token",
"DATABRICKS_CATALOG": "your-catalog-name",
"DATABRICKS_SCHEMA": "your-schema-name"
}
}
}
}
- Restart Claude Desktop to load the new MCP server
- Test in Claude: Ask Claude to "list my Databricks tables" or "query my data"
Using with MCP Clients
The server provides these tools:
query_databricks(sql_query): Execute SELECT queries (auto-limits to 100 rows)update_databricks(sql_command): Execute DML operationslist_cloud_tables(limit): List available tablesinspect_cloud_schema(table_name): Get table schema information
Example Usage
# Query data
result = query_databricks("SELECT * FROM customers WHERE region = 'US'")
# Update data
result = update_databricks("UPDATE customers SET status = 'active' WHERE id = 123")
# List tables
tables = list_cloud_tables(10)
# Get schema
schema = inspect_cloud_schema("customers")
Security Notes
- Only SELECT queries are allowed in
query_databricks - Only INSERT, UPDATE, DELETE are allowed in
update_databricks - Table names are validated to prevent SQL injection
- Results are truncated to prevent large payloads
- Queries are automatically limited to 100 rows unless specified
Troubleshooting
- Connection fails: Check your
.envfile and token permissions - No tables found: Verify catalog and schema names
- Inspector doesn't connect: Ensure correct file paths in commands
- Large result errors: The server automatically limits/truncates results
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test with the inspector
- Submit a pull request











