data-connector-mcp-service
Utility for querying, manipulating, and introspecting data housed in remote CData AI environments via SQL, featuring stored procedure invocation and seamless integration into advanced machine learning pipelines.
Author

CDataSoftware
Quick Info
Actions
Tags
🚀 CData Connect AI Model Context Server (MCP)
📣 Now Featuring Connect AI Native Server 📣
Connect AI (formerly Connect Cloud) natively embeds an MCP Server utilizing the Streamable HTTP transport mechanism. Full documentation available at CData AI portal.
This repository also supports conventional local deployment using the STDIO transport mode.
This implementation serves as a Model Context Protocol (MCP) service layer, facilitating secure data access and manipulation for AI agents leveraging the CData Connect AI infrastructure. It permits agents to issue standard SQL commands, examine database structures, and trigger defined procedures.
✨ Core Capabilities
- ✅ Execute arbitrary SQL queries against provisioned data endpoints
- 🔄 Facilitate bulk data modifications (DML: INSERT, UPDATE, DELETE)
- ⚙️ Initiate execution of pre-compiled database routines (Stored Procedures)
- 📚 Comprehensive access to schema artifacts: catalogs, namespaces, tables, and field definitions
🛠 System Requirements
- Runtime: Node.js version 18 or newer
- Backend Access: An active CData Connect Cloud account with authorized API credentials
- Authentication Key: A valid Personal Access Token (PAT)
⚙️ Deployment Guide
Installation via Smithery (Automated)
Deploy the CData Connect AI MCP Server to Claude Desktop automatically using Smithery:
bash npx -y @smithery/cli install @CDataSoftware/connectcloud-mcp-server --client claude
Manual Setup
- Repository Cloning
bash git clone https://github.com/cdatasoftware/connectcloud-mcp-server.git cd connect-cloud-mcp-server
- Dependency Fetching
bash npm install
- Configuration File Generation
Generate a .env configuration file detailing necessary credentials:
env CDATA_USERNAME=your_registered_username CDATA_PAT=your_secure_personal_access_token
# Optional Tuning Parameters LOG_ENABLED=false LOG_LEVEL=info CDATA_URL=https://your-custom-test-endpoint
# Transport Selection (default: http) TRANSPORT_TYPE=http # Use 'stdio' for console piping PORT=3000 # Network listener port HOST=localhost # Network listener interface
▶️ Service Execution
Development Workflow
Utilize ts-node for real-time code iteration:
bash npm run dev
Production Deployment
Compile assets then launch:
bash npm run build npm start
HTTP Communication Interfaces
When operating in HTTP mode (the default), the service exposes these network endpoints:
- Primary MCP Channel:
http://localhost:3000/mcp- The main endpoint adhering to the MCP specification - Raw RPC Channel:
http://localhost:3000/direct- A JSON-RPC interface bypassing session logic - Discovery Manifest:
http://localhost:3000/.well-known/mc/manifest.json- Metadata for protocol discovery
Utilizing STDIO Communication
To pipe input/output directly to the terminal process:
bash TRANSPORT_TYPE=stdio npm start
🔍 Validation via MCP Inspector
The MCP Inspector provides an essential GUI and CLI environment for validating server responsiveness. Full integration support is built into this project.
Initial Configuration Check
Execute the setup validation utility:
bash npm run validate:inspector
This script verifies credentials and outputs detailed setup guidance.
Quick Start with the Inspector Interface
-
Global Inspector Installation (Recommended): bash npm install -g @modelcontextprotocol/inspector
-
Launch Web UI: bash npm run inspector
This opens a browser window allowing selection and testing across configured transport methods.
Testing Different Connection Modes
STDIO Mode Test
bash
Launches inspector, automatically starting the server via STDIO
npm run inspector:stdio
HTTP Mode Test (Requires two terminals)
bash
Terminal 1: Start the server
npm run dev:http
Terminal 2: Launch inspector connected to the running HTTP server
npm run inspector:http
Command Line Verification
bash
Fast CLI testing using STDIO transport
npm run inspector:cli
Execute automated regression tests for inspector connectivity
npm run test:inspector
Inspector Configuration File Details
The included mcp-inspector.json predefines several connection profiles for ease of use:
- connectcloud-stdio: Automatically starts the server via STDIO interface
- connectcloud-http: Connects to a manually running HTTP server instance
Available Testing Scripts
| Command | Functionality |
|---|---|
npm run inspector |
Opens the interactive web interface for server selection |
npm run inspector:stdio |
Direct launch using STDIO transport mode |
npm run inspector:http |
Direct launch targeting the HTTP transport |
npm run inspector:cli |
Execute testing directly in the console (CLI mode) |
npm run test:inspector |
Runs non-interactive automated verification suite |
🧰 Exposed Data Manipulation Functions
🔹 Data Access & Modification
| Function Name | Purpose |
|---|---|
queryData |
Execute declarative Structured Query Language (SQL) statements |
execData |
Invoke stored routines and procedures |
🔹 Schema Navigation
| Function Name | Purpose |
|---|---|
getCatalogs |
Retrieve the root organizational units |
getSchemas |
List all namespaces within a specified catalog |
getTables |
Enumerate tables residing in a given namespace |
getColumns |
Fetch attribute definitions for a specific table |
getPrimaryKeys |
Identify the unique constraint columns |
getIndexes |
Obtain structural information regarding table indexes |
getImportedKeys |
Detail referencing foreign key constraints |
getExportedKeys |
Detail referenced foreign key constraints |
getProcedures |
List accessible database functions/routines |
getProcedureParameters |
Detail input and output signatures for routines |
🤖 Interaction with Large Language Models (LLMs)
This service layer adheres strictly to the Model Context Protocol, ensuring compatibility with any compliant AI agent framework.
Example: TypeScript Agent Invocation
ts const result = await agent.generateContent({ tools: [ { name: "queryData", parameters: { query: "SELECT CustomerName FROM CRM.CustomerBase WHERE Region = 'EMEA'" } } ] });
🐳 Containerized Operation
Image Creation
Build the requisite Docker artifact:
bash docker build -t mcp/connectcloud:latest -f Dockerfile .
🧩 Integration with Claude Desktop
To integrate this service into your local Claude Desktop instance, update the mcpServers section within your claude_desktop_config.json file as follows:
Option 1: Launching from a Docker Container
{
"mcpServers": {
"connect-cloud": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--name", "connect-cloud-mcp",
"-e", "CDATA_USERNAME",
"-e", "CDATA_PAT",
"mcp/connectcloud"
],
"env": {
"CDATA_USERNAME": "
Option 2: Invoking via Npx
{
"mcpServers": {
"connect-cloud": {
"command": "npx",
"args": [
"-y",
"@cdatasoftware/connectcloud-mcp-server"],
"env": {
"CDATA_USERNAME": "
📄 Licensing Information
This software is distributed under the terms of the MIT License.
BACKGROUND: The XMLHttpRequest (XHR) object provides a JavaScript interface for performing HTTP operations asynchronously between a browser client and a remote web server. Its primary methods enable applications loaded in the browser to exchange data with the server post-initial page render, forming the backbone of Asynchronous JavaScript and XML (Ajax) patterns. Previously, server interaction relied primarily on full page reloads triggered by form submissions or link navigation.
== Developmental Trajectory ==
The conceptual foundation for XHR was established around 2000 by Microsoft engineers developing the Outlook Web Access interface. Its initial implementation appeared in Internet Explorer 5 (1999), though it used proprietary COM object instantiation syntax (e.g., ActiveXObject("Msxml2.XMLHTTP")). By the release of Internet Explorer 7 (2006), standardized naming conventions had achieved universal adoption across all major browser engines, including Mozilla's Gecko (2002), Safari 1.2 (2004), and Opera 8.0 (2005).
=== Standardization Process === The World Wide Web Consortium (W3C) initiated the formal specification effort for the XMLHttpRequest object on April 5, 2006, releasing a Working Draft. A subsequent Level 2 specification followed on February 25, 2008, introducing capabilities for tracking request progress, enabling cross-origin requests (CORS), and processing data as raw byte streams. By late 2011, these Level 2 enhancements were merged back into the primary specification document. Development responsibility transitioned to the WHATWG near the end of 2012, where it is now maintained as a continuously evolving document described using Web IDL.
== Operational Sequence == Executing an HTTP request using XMLHttpRequest generally involves a defined sequence of programmatic steps:
- Object Instantiation: Create an instance of the XMLHttpRequest object via its constructor.
- Configuration (
open): Invoke theopenmethod to define the communication verb (GET, POST, etc.), specify the target resource URI, and select either synchronous or asynchronous execution mode. - Event Handling: For asynchronous operations, attach a callback function (listener) to monitor changes in the request's state.
- Transmission (
send): Activate the request by calling thesendmethod, optionally passing payload data to the server. - Response Processing: The registered listener handles state transitions. Upon completion (state 4, the "done" state), the retrieved data is typically available in the
responseTextproperty. Beyond these fundamentals, XHR offers extensive control mechanisms. Custom HTTP headers can be injected to dictate server behavior. Data can be uploaded synchronously within thesendcall. Responses, especially those in JSON format, can be automatically parsed into native JavaScript objects, or streamed incrementally instead of waiting for total receipt. Requests can also be prematurely terminated or set with timeout constraints.
