Interactive workshop for learning how to build agents on Databricks with hands-on examples covering managed servers, external integrations, custom server development and local IDE setup.
For workshop participants - Get your own isolated environment with one command:
git clone https://github.com/databricks-solutions/mcp-workshop
cd mcp-workshop
./setup.shThis interactive setup creates your personal workshop environment:
- ποΈ Your own Unity Catalog with sample data
- π Custom MCP server deployed as a Databricks App
- π» Local development environment
- π Secure authentication setup
Each participant gets isolated resources (e.g., mcp_workshop_john_doe) - no conflicts, no shared data issues!
π See detailed setup guide β
After deployment, access the workshop locally:
- Navigate to the frontend:
cd frontend - Start the dev server:
npm run dev - Visit http://localhost:3000 to start the workshop
Your MCP server will be deployed as a Databricks App (check the Apps page)
Learn to use Databricks-managed MCP servers with:
- Unity Catalog functions and permissions
- Vector Search for RAG applications
- Genie Spaces for natural language SQL
- Automated vs Interactive modes
Integrate third-party services:
- Unity Catalog connections
- GitHub, Atlassian, Slack integrations
- Custom API connections
- Proxy authentication and security
Build and deploy your own:
- Simple
@mcp.tool()decorator pattern (based on databrickslabs/mcp) - Databricks SDK integration (clusters, warehouses, SQL)
- Markdown-based prompts for reusable commands
- Databricks Apps deployment with automated scripts
- End-to-end testing and debugging tools
Connect your development environment:
- Cursor IDE configuration
- Claude Desktop setup
- VS Code with MCP extensions
- OAuth and PAT authentication
This workshop uses Databricks Apps built-in authentication exclusively:
- User Authorization: Your access token is automatically forwarded via
x-forwarded-access-tokenheader - App Authorization: Service principal credentials via
DATABRICKS_CLIENT_IDandDATABRICKS_CLIENT_SECRETenvironment variables - Unified Permissions: All operations respect your existing Unity Catalog permissions
- Zero Setup: No manual token management or OAuth flows required
Learn more about Databricks Apps authentication β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Databricks Workspace β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ ββββββββββββββββββββββββββββββββββββ β
β β Local Dev β β Unity Catalog β β
β β Frontend βββββΊβ - mcp_workshop catalog β β
β β (Next.js) β β - Sample data & schemas β β
β β β β - Vector Search indexes β β
β β http:// β β - Genie Spaces β β
β β localhost:3000 β ββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββ β MCP Integrations β β
β β Setup Jobs β β - Managed MCP servers β β
β β - Catalog β β - External connections β β
β β - Sample data β β - Custom MCP App (deployed) β β
β β - Vector index β ββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
mcp-workshop/
βββ databricks.yml # Bundle configuration
βββ frontend/ # Next.js workshop application (local dev)
β βββ src/
β β βββ app/ # App router pages
β β βββ components/ # React components
β βββ package.json
βββ custom-mcp-template/ # Custom MCP server (deployed to Databricks Apps)
β βββ server/ # FastAPI MCP server
β βββ client/ # React client UI
β βββ deploy.sh # Deployment script
βββ setup/ # Workshop setup jobs
βββ create_workshop_catalog.py
βββ setup_sample_data.py
βββ deploy_mcp_template.py
By the end of this workshop, you'll be able to:
- β Use Databricks managed MCP servers in your applications
- β Integrate external MCP servers via Unity Catalog connections
- β Build and deploy custom MCP servers as Databricks Apps
- β Implement proper authentication and authorization patterns
- β Apply MCP best practices for production deployments
- β Connect local IDEs to Databricks MCP resources
To run the workshop locally for development:
cd app
npm install
npm run devThe app will run at http://localhost:3000 with mock authentication for development.
- Update
src/lib/workshop-config.tswith new section definitions - Create component files in
src/components/workshop/sections/ - Add any required setup jobs to
databricks.yml - Deploy with
databricks bundle deploy
Update the user_authorization.scopes in databricks.yml:
user_authorization:
enabled: true
scopes:
- "sql" # SQL warehouse access
- "files.files" # File operations
- "dashboards.genie" # Genie Spaces (add if needed)
- "your-custom-scope" # Additional scopesThe workshop creates user-specific resources in the workspace that should be cleaned up afterwards:
# List all workshop participants
./cleanup_workshop.sh --list
# Clean up specific participant
./cleanup_workshop.sh --participant john_doe
# Clean up ALL workshop resources (β οΈ DESTRUCTIVE)
./cleanup_workshop.sh --all# View participant resources
./cleanup_workshop.sh --list
# Check catalog sizes
databricks sql query "SELECT catalog_name, SIZE_GB FROM information_schema.catalog_storage WHERE catalog_name LIKE 'mcp_workshop_%'"
# List workshop apps
databricks apps list | grep "mcp-workshop-app-"App won't start: Check that all required environment variables are set in the bundle configuration.
Authentication errors: Ensure user authorization is enabled and required scopes are configured.
Resource access denied: Verify Unity Catalog permissions for the workshop catalog and resources.
Health check failing: Check that the app is listening on port 3000 and /api/health endpoint responds.
Setup script fails: Ensure Databricks CLI is configured and you have catalog creation permissions.
- Check the app logs in Databricks workspace
- Verify bundle deployment with
databricks bundle validate - Review Databricks Apps documentation
- For participant setup issues, see WORKSHOP_SETUP.md
- Submit issues to the workshop repository
This workshop uses a simplified approach based on databrickslabs/mcp - perfect for learning MCP fundamentals.
β
Simpler structure - fewer files, easier to understand
β
Focus on tool creation - @mcp.tool() decorator pattern
β
Officially supported - maintained by Databricks Labs
β
Quick deployment - streamlined for Databricks Apps
For Claude Code/Cursor users wanting enhanced IDE integration:
databricks-solutions/custom-mcp-databricks-app
Features:
- Enhanced IDE integration (Claude Code, Cursor)
.claude/commandsdirectory support- FastMCP framework with routers
- Built-in MCP inspector
- More production-ready patterns
π‘ Recommendation: Start with this workshop to learn the fundamentals. If you're a heavy Claude Code or Cursor user, explore the databricks-solutions repository as your next step!
- databrickslabs/mcp Repository - Official examples
- Databricks MCP Documentation
- Model Context Protocol Specification
- Databricks Apps Guide
- FastMCP Documentation
Β© 2025 Databricks, Inc. All rights reserved. The source in this notebook is provided subject to the Databricks License [https://databricks.com/db-license-source]. All included or referenced third party libraries are subject to the licenses set forth below.
Ready to learn? Deploy the workshop and start exploring! π