CData Python MCP Server
OfficialProvides tools to query and interact with live Jira data, including tables like Issues and Projects, enabling natural language queries, table exploration, and CRUD operations.
Provides tools to query and interact with live MongoDB data, including tables/collections, enabling natural language queries, table exploration, and CRUD operations.
Provides tools to query and interact with live MySQL data, including tables and views, enabling natural language queries, table exploration, and CRUD operations.
Provides tools to query and interact with live Salesforce data, including tables like Account and Contact, enabling natural language queries, table exploration, and CRUD operations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CData Python MCP ServerShow me the latest 10 accounts from Salesforce"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cdata-python-mcp-server
A generic Model Context Protocol (MCP) Server for CData Python Connectors.
Quick Start (Experienced Users)
# Clone and setup
git clone https://github.com/CDataSoftware/cdata-mcp-python.git
cd cdata-mcp-python
uv venv && uv pip install "mcp[cli]"
# Install your connector (from the project directory!)
uv pip install ./your-cdata-connector.whl
# Verify installation
uv pip list | grep cdata
# Test connection
export CONNECTOR_MOD="cdata.{datasource}"
export CONNECTION_STRING="InitiateOAuth=GETANDREFRESH;" # Or your auth method
uv run python -c "from utils.get_connection import get_connection; print('✅ Connected!' if get_connection() else '❌ Failed')"
# Configure Claude Desktop (add to claude_desktop_config.json)
# Then restart Claude completelyRelated MCP server: Python MSSQL MCP Server
Purpose
We created this MCP Server to allow LLMs (like Claude) to query live data from any of over 250+ sources (listed below) supported by CData Python Connectors (free Community Licenses for personal use).
CData Python Connectors connect to SaaS apps, NoSQL stores, and APIs by exposing them as relational SQL models.
This server wraps those connectors and makes their data available through a simple MCP interface, so LLMs can retrieve live information by asking natural language questions — no SQL required.
Prerequisites
System Requirements
Python: 3.12 or higher
Operating System: Windows, macOS, or Linux
Package Manager:
uv(for Python dependency management)
Required Components
UV Package Manager
Install with pip:
pip install uvCData Python Connector
You'll need a CData Python Connector for your specific data source. The connector name format is
cdata.{datasource}(e.g.,cdata.salesforce,cdata.jira,cdata.mongodb).Download: Visit https://www.cdata.com/python/download/
Select: Choose your specific data source from the dropdown
License: Free 30-day trial or Community License available
Note: Save the downloaded wheel (.whl) or tarball (.tar.gz) file location
Connection Configuration
Prepare your connection string with authentication details for your data source. Each connector has different requirements.
Salesforce:
# Full OAuth with domain InitiateOAuth=GETANDREFRESH;LoginURL=domain.my.salesforce.com; # Simplified OAuth (often works without LoginURL) InitiateOAuth=GETANDREFRESH; # Username/Password User=email@company.com;Password=yourpass;SecurityToken=token;LoginURL=domain.my.salesforce.com;MongoDB:
Server=localhost;Port=27017;Database=mydb;User=myuser;Password=mypass;MySQL:
Server=myserver.com;Port=3306;Database=mydb;UID=myuser;PWD=mypass;REST API:
Format=JSON;URI=https://api.example.com/data;AuthScheme=OAuth;
Find your connector's specific requirements at:
https://cdn.cdata.com/help/{datasource}/pg_connectionprops.htm
Setup Guide
Step 1: Clone the Repository
git clone https://github.com/CDataSoftware/cdata-mcp-python.git
cd cdata-mcp-pythonStep 2: Set Up Python Environment
Create the virtual environment:
uv venvNote: With
uv, you typically don't need to manually activate the virtual environment. Theuv pipanduv runcommands automatically use the.venvin the current directory.Install MCP dependencies:
uv pip install "mcp[cli]"Verify the virtual environment is being used:
uv pip list # Should show it's using .venv in the current directory
Step 3: Install Your CData Connector
Install the CData Python Connector you downloaded earlier:
Windows:
uv pip install "C:\path\to\cdata_{datasource}_connector-23.0.xxxx-cp312-cp312-win_amd64.whl"macOS/Linux:
uv pip install /path/to/cdata-{datasource}-connector-23.0.xxxx-py3-none-any.whlExample for Salesforce:
uv pip install ./cdata_salesforce_connector-23.0.8691-py3-none-any.whlImportant: Always run uv pip commands from the project directory to ensure packages are installed in the correct virtual environment. You can verify the installation with:
uv pip list | grep cdataStep 4: Activate Your Connector License
Note: Some connectors may work without explicit license activation during initial testing. If you encounter license errors, follow the activation steps below.
Locate and run the license installer for your connector:
Find the installer location using this Python script:
import os import cdata.{datasource} # Replace {datasource} with your connector name path = os.path.dirname(os.path.abspath(cdata.{datasource}.__file__)) print(f"License installer location: {path}/installlic_{datasource}/")Navigate to the installer directory and activate:
Windows:
cd .venv\Lib\site-packages\cdata\installlic_{datasource} .\install-license.exe # For trial license # OR .\install-license.exe YOUR-LICENSE-KEY # For paid licensemacOS/Linux:
cd .venv/lib/python3.12/site-packages/cdata/installlic_{datasource} ./install-license.sh # For trial license # OR ./install-license.sh YOUR-LICENSE-KEY # For paid license
Testing Your Setup
Step 1: Test Your Connector Installation
Before configuring Claude Desktop, verify your connector works correctly:
# test_connector.py
import os
os.environ['CONNECTOR_MOD'] = 'cdata.{datasource}' # Replace with your connector
os.environ['CONNECTION_STRING'] = 'Your=Connection;String=Here;'
try:
from utils.get_connection import get_connection
conn = get_connection()
cursor = conn.cursor()
cursor.execute("SELECT * FROM sys_tables")
tables = cursor.fetchall()
print(f"Successfully connected! Found {len(tables)} tables.")
for table in tables[:5]: # Show first 5 tables
print(f" - {table[0]}")
cursor.close()
conn.close()
except Exception as e:
print(f"Connection failed: {e}")Run the test:
python test_connector.pyStep 2: Test the MCP Server
Run the server directly to ensure it starts without errors:
export CONNECTOR_MOD="cdata.{datasource}" # Windows: set CONNECTOR_MOD=cdata.{datasource}
export CONNECTION_STRING="Your=Connection;String=Here;" # Windows: set CONNECTION_STRING=...
uv run --active main.pyYou should see:
Starting serverPress Ctrl+C to stop the server.
Using the Server with Claude Desktop
Step 1: Configure Claude Desktop
Create or edit the Claude Desktop configuration file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add your MCP server configuration:
{
"mcpServers": {
"salesforce_server": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/cdata-mcp-python",
"run",
"--active",
"main.py"
],
"env": {
"CONNECTOR_MOD": "cdata.salesforce",
"CONNECTION_STRING": "InitiateOAuth=GETANDREFRESH;LoginURL=mycompany.my.salesforce.com;"
}
}
}
}Important Notes:
Replace
salesforce_serverwith a descriptive name for your data sourceUse the absolute path to your cloned repository directory
Replace
cdata.salesforcewith your actual connector module nameUse your actual connection string (keep it secure!)
Step 2: Restart Claude Desktop
Fully quit Claude Desktop (not just close the window):
Windows: Right-click system tray icon → Quit
macOS: Claude → Quit Claude (Cmd+Q)
Linux: Close and ensure process is terminated
Reopen Claude Desktop
Verify the server appears in the MCP servers list (look for the server icon)
Step 3: Test with Claude
Ask Claude questions about your data:
"What tables are available in my Salesforce instance?"
"Show me the first 5 records from the Account table"
"What fields are in the Contact table?"
Usage Details
Once the MCP Server is configured, the AI client will be able to use the built-in tools to read, write, update, and delete the underlying data. In general, you do not need to call the tools explicitly. Simply ask the client to answer questions about the underlying data system. For example:
"What is the correlation between my closed won opportunities and the account industry?"
"How many open tickets do I have in the SUPPORT project?"
"Can you tell me what calendar events I have today?"
The list of tools available and their descriptions follow:
Available Tools
The MCP server provides these tools to Claude for interacting with your data:
Tool | Description | Example Use |
| Lists all available tables/views | "What tables are available?" |
| Shows fields for a specific table | "What fields are in the Account table?" |
| Lists available stored procedures | "What actions can I perform?" |
| Shows parameters for a procedure | "What parameters does CreateInvoice need?" |
| Executes SELECT queries | "Show me all contacts from California" |
| Executes INSERT/UPDATE/DELETE | "Update the phone number for contact ID 123" |
| Calls stored procedures | "Execute the RefreshToken procedure" |
Troubleshooting
MCP Server Not Appearing in Claude Desktop
Problem: The server doesn't show up in Claude's MCP servers list.
Solutions:
Fully quit Claude Desktop (not just minimize):
Windows: Check Task Manager and end all Claude processes
macOS: Use Activity Monitor to ensure Claude is not running
Linux: Use
ps aux | grep -i claudeto check for running processes
Verify configuration file:
# Check if config file exists and is valid JSON cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | python -m json.toolCheck for syntax errors in your configuration (missing commas, quotes, etc.)
Connection Errors
Problem: "Connection failed" or authentication errors.
Solutions:
Test connection string using the test script provided in the Testing section
Verify credentials and authentication method for your data source
Check network access to your data source (VPN, firewall, etc.)
OAuth connections: Ensure redirect URLs are properly configured
License Activation Issues
Problem: "License not found" or "Invalid license" errors.
Solutions:
Verify license installation:
import cdata.{datasource} print(cdata.{datasource}.__version__) # Should show version if properly licensedRe-run license installer with correct permissions (may need sudo on Linux/Mac)
Check license expiration for trial licenses (30 days)
Module Import Errors
Problem: "ModuleNotFoundError: No module named 'cdata.{datasource}'"
Solutions:
Ensure virtual environment is activated:
which python # Should show .venv/bin/python pathReinstall connector in the virtual environment:
uv pip install --force-reinstall /path/to/connector.whlVerify CONNECTOR_MOD environment variable matches installed module name
Performance Issues
Problem: Queries are slow or timing out.
Solutions:
Limit query results:
SELECT TOP 100 * FROM TableName -- SQL Server syntax SELECT * FROM TableName LIMIT 100 -- MySQL/PostgreSQL syntaxAdd query filters to reduce data transfer
Check data source performance directly
Increase timeout values in connection string if supported
Enable verbose logging to diagnose issues:
Create a debug wrapper script:
# debug_server.py import os import sys import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') # Import and run your main server from main import *Run with debug output:
uv run --active debug_server.py
Know when each step is working correctly:
After Connector Installation
uv pip list | grep cdata
# ✅ Should show: cdata-{datasource}-connectorAfter Connection Test
# ✅ Successful connection shows:
Successfully connected! Found X tables.
- TableName1
- TableName2
...After Server Test
uv run --active main.py
# ✅ Should show: Starting server
# (Server will wait for connections - this is normal)In Claude Desktop
✅ Small plug icon appears next to your server name
✅ First query returns data without errors
✅ Example: "What tables are available?" returns a list
Getting Help
If you're still having issues:
Check connector documentation:
https://cdn.cdata.com/help/{datasource}/Join CData Community: https://community.cdata.com
Report MCP server issues: Create an issue in this repository
Contact CData support: For connector-specific problems
License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Supported Sources
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CDataSoftware/cdata-mcp-python'
If you have feedback or need assistance with the MCP directory API, please join our Discord server