logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

cdata-teams-mcp-gateway

Facilitate natural language interactions for retrieving live Microsoft Teams datasets by establishing an MCP server utilizing the CData JDBC Driver, eliminating the necessity for users to possess SQL proficiency.

Author

cdata-teams-mcp-gateway logo

CDataSoftware

MIT License

Quick Info

GitHub GitHub Stars 0
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

cdatasoftwarecdataapismicrosoft teamsteams datacdatasoftware microsoft

CData Teams Model Context Protocol Gateway

:warning: This repository presents a read-only MCP server implementation. For comprehensive data manipulation capabilities (CRUD operations and actions) coupled with streamlined deployment, explore the complimentary CData MCP Server for Microsoft Teams (beta).

Objective

This read-only MCP Server was engineered to empower Large Language Models (LLMs), such as Claude Desktop, with the ability to query extant Microsoft Teams data. This functionality is underpinned by the CData JDBC Driver for Microsoft Teams.

The CData JDBC Driver serves to map Microsoft Teams entities into standard relational SQL structures.

This server component encapsulates the driver, exposing Teams data via a straightforward MCP interface. Consequently, LLMs can extract current information by posing queries in plain English—SQL knowledge is entirely bypassed.

Deployment Instructions

  1. Obtain the repository source code: bash git clone https://github.com/cdatasoftware/microsoft-teams-mcp-server-by-cdata.git cd microsoft-teams-mcp-server-by-cdata

  2. Compile the server application: bash mvn clean install

    This process yields the bundled JAR file: CDataMCP-jar-with-dependencies.jar 3. Acquire and install the CData JDBC Driver specific to Microsoft Teams: https://www.cdata.com/drivers/msteams/download/jdbc 4. License the CData JDBC Driver: * Navigate to the lib directory within the driver installation path (common locations): * (Windows) C:\Program Files\CData\CData JDBC Driver for Microsoft Teams\ * (Mac/Linux) /Applications/CData JDBC Driver for Microsoft Teams/ * Execute the command: java -jar cdata.jdbc.msteams.jar --license * Input your credentials (name, email) and the licensing token ("TRIAL" or your purchased key). 5. Establish the data source connection configuration (using a placeholder like Salesforce for illustration): * Initiate the Connection String utility via: java -jar cdata.jdbc.msteams.jar

    • Define the connection parameters and validate with "Test Connection"

      Note: OAuth-based data sources necessitate in-browser user authorization.

    • Upon successful validation, capture and retain the resulting JDBC connection string.
    • Generate a property file (e.g., microsoft-teams.prp) detailing the JDBC parameters, formatted as follows:
    • Prefix: A short identifier for exposed tools.
    • ServerName: A distinct label for the server instance.
    • ServerVersion: The version identifier for the server.
    • DriverPath: The absolute file system path to the required JDBC driver JAR.
    • DriverClass: The fully qualified name of the JDBC Driver implementation class (e.g., cdata.jdbc.msteams.MSTeamsDriver).
    • JdbcUrl: The connection string obtained previously for the CData JDBC Driver.
    • Tables: Either left empty for schema-wide access or populated with a delimited list of specific tables to expose. env Prefix=msteams ServerName=CDataMSTeams ServerVersion=1.0 DriverPath=PATH\TO\cdata.jdbc.msteams.jar DriverClass=cdata.jdbc.msteams.MSTeamsDriver JdbcUrl=jdbc:msteams:InitiateOAuth=GETANDREFRESH; Tables=

Integration with Claude Desktop

  1. Construct or update the configuration file for Claude Desktop (typically claude_desktop_config.json) to incorporate the new MCP server definition. If the file exists, append the entry to the mcpServers object.

    Windows Client

    { "mcpServers": { "{classname_dash}": { "command": "PATH\TO\java.exe", "args": [ "-jar", "PATH\TO\CDataMCP-jar-with-dependencies.jar", "PATH\TO\microsoft-teams.prp" ] }, ... } }

    Linux/Mac Client

    { "mcpServers": { "{classname_dash}": { "command": "/PATH/TO/java", "args": [ "-jar", "/PATH/TO/CDataMCP-jar-with-dependencies.jar", "/PATH/TO/microsoft-teams.prp" ] }, ... } }

    If necessary, relocate the finalized configuration file to the client's designated directory: Windows bash cp C:\PATH\TO\claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json

    Linux/Mac bash cp /PATH/TO/claude_desktop_config.json /Users/{user}/Library/Application\ Support/Claude/claude_desktop_config.json'

  2. Initiate or restart your consuming application (e.g., Claude Desktop).

Crucial Note: A full application shutdown (ensuring the process is terminated via Task Manager/Activity Monitor) and subsequent reopening is often required for new MCP servers to register correctly.

Independent Server Execution

  1. Execute the MCP Server standalone using the following command structure: bash java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/Salesforce.prp

    Constraint: The server communicates exclusively via stdio, restricting its use to client applications running on the identical host machine.

Operational Details

Once the MCP Server is initialized and linked via the configuration, the connected AI client gains access to integrated tools for direct data interaction. Explicit tool invocation is generally unnecessary; users should formulate direct questions about the desired underlying data system. For instance: * "Provide the statistical relationship between finalized sales opportunities and the industry classification of the associated accounts." * "Quantify the volume of pending support cases within the designated SUPPORT service area." * "Summarize my scheduled engagements for the present day."

Available Tooling and Functions

Tool names below utilize {servername} as a placeholder corresponding to the identifier specified in the configuration file (e.g., {classname_dash}). * {servername}_get_tables: Fetches a comprehensive manifest of accessible tables from the data repository. Consult {servername}_get_columns for schema details per table. Output is provided in CSV format, including column headers in the initial row. * {servername}_get_columns: Retrieves the attribute listing for a specified table. Use {servername}_get_tables beforehand to enumerate available targets. Output adheres to CSV formatting with a header row. * {servername}_run_query: Executes a standard SQL SELECT statement against the data source.

JSON-RPC Interaction Examples

For scenarios involving programmatic tool invocation rather than relying on an LLM frontend, utilize the following JSON-RPC 2.0 compliant payloads when communicating with the MCP endpoint.

Example: Fetching Tables

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "microsoft_teams_get_tables", "arguments": {} } }

Example: Inspecting Columns

{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "microsoft_teams_get_columns", "arguments": { "table": "Account" } } }

Example: Executing a Query

{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "microsoft_teams_run_query", "arguments": { "sql": "SELECT * FROM [Account] WHERE [IsDeleted] = true" } } }

Remediation Guide

  1. Server Not Appearing in Client: Verify that the client application (Claude Desktop) has been completely terminated (check system process monitors) and relaunched.
  2. Data Retrieval Failures: Confirm the JDBC connection string configured in the property (.prp) file is accurate, ideally validated using the Connection String Builder utility.
  3. Connectivity Issues: For persistent difficulties connecting to the underlying data source, engage the CData Support Team.
  4. MCP Server Operational Feedback: For issues related to the MCP gateway itself or general suggestions, participate in the CData Community.

Licensing

This MCP gateway component is distributed under the terms of the MIT License. This permits unrestricted use, modification, and dissemination, subject to adherence to the MIT License stipulations. Full details are accessible in the repository's LICENSE file.

Comprehensive Source Connectivity

(Table content detailing supported data sources remains unchanged for conciseness, as it is factual metadata.)

Access Act CRM Act-On Active Directory
ActiveCampaign Acumatica Adobe Analytics Adobe Commerce
ADP Airtable AlloyDB Amazon Athena
Amazon DynamoDB Amazon Marketplace Amazon S3 Asana
Authorize.Net Avalara AvaTax Avro Azure Active Directory
Azure Analysis Services Azure Data Catalog Azure Data Lake Storage Azure DevOps
Azure Synapse Azure Table Basecamp BigCommerce
BigQuery Bing Ads Bing Search Bitbucket
Blackbaud FE NXT Box Bullhorn CRM Cassandra
Certinia Cloudant CockroachDB Confluence
Cosmos DB Couchbase CouchDB CSV
Cvent Databricks DB2 DocuSign
Dropbox Dynamics 365 Dynamics 365 Business Central Dynamics CRM
Dynamics GP Dynamics NAV eBay eBay Analytics
Elasticsearch Email EnterpriseDB Epicor Kinetic
Exact Online Excel Excel Online Facebook
Facebook Ads FHIR Freshdesk FTP
GitHub Gmail Google Ad Manager Google Ads
Google Analytics Google Calendar Google Campaign Manager 360 Google Cloud Storage
Google Contacts Google Data Catalog Google Directory Google Drive
Google Search Google Sheets Google Spanner GraphQL
Greenhouse Greenplum HarperDB HBase
HCL Domino HDFS Highrise Hive
HubDB HubSpot IBM Cloud Data Engine IBM Cloud Object Storage
IBM Informix Impala Instagram JDBC-ODBC Bridge
Jira Jira Assets Jira Service Management JSON
Kafka Kintone LDAP LinkedIn
LinkedIn Ads MailChimp MariaDB Marketo
MarkLogic Microsoft Dataverse Microsoft Entra ID Microsoft Exchange
Microsoft OneDrive Microsoft Planner Microsoft Project Microsoft Teams
Monday.com MongoDB MYOB AccountRight MySQL
nCino Neo4J NetSuite OData
Odoo Office 365 Okta OneNote
Oracle Oracle Eloqua Oracle Financials Cloud Oracle HCM Cloud
Oracle Sales Oracle SCM Oracle Service Cloud Outreach.io
Parquet Paylocity PayPal Phoenix
PingOne Pinterest Pipedrive PostgreSQL
Power BI XMLA Presto Quickbase QuickBooks
QuickBooks Online QuickBooks Time Raisers Edge NXT Reckon
Reckon Accounts Hosted Redis Redshift REST
RSS Sage 200 Sage 300 Sage 50 UK
Sage Cloud Accounting Sage Intacct Salesforce Salesforce Data Cloud
Salesforce Financial Service Cloud Salesforce Marketing Salesforce Marketing Cloud Account Engagement Salesforce Pardot
Salesloft SAP SAP Ariba Procurement SAP Ariba Source
SAP Business One SAP BusinessObjects BI SAP ByDesign SAP Concur
SAP Fieldglass SAP HANA SAP HANA XS Advanced SAP Hybris C4C
SAP Netweaver Gateway SAP SuccessFactors SAS Data Sets SAS xpt
SendGrid ServiceNow SFTP SharePoint
SharePoint Excel Services ShipStation Shopify SingleStore
Slack Smartsheet Snapchat Ads Snowflake
Spark Splunk SQL Analysis Services SQL Server
Square Stripe Sugar CRM SuiteCRM
SurveyMonkey Sybase Sybase IQ Tableau CRM Analytics
Tally TaxJar Teradata Tier1
TigerGraph Trello Trino Twilio
Twitter Twitter Ads Veeva CRM Veeva Vault
Wave Financial WooCommerce WordPress Workday
xBase Xero XML YouTube Analytics
Zendesk Zoho Books Zoho Creator Zoho CRM
Zoho Inventory Zoho Projects Zuora ... Dozens More

WIKIPEDIA: XMLHttpRequest (XHR) is an API in the form of a JavaScript object whose methods transmit HTTP requests from a web browser to a web server. The methods allow a browser-based application to send requests to the server after page loading is complete, and receive information back. XMLHttpRequest is a component of Ajax programming. Prior to Ajax, hyperlinks and form submissions were the primary mechanisms for interacting with the server, often replacing the current page with another one.

== Origin Story == The conceptual underpinning for XMLHttpRequest was first devised in 2000 by the development team behind Microsoft Outlook. This concept subsequently saw its initial implementation within the Internet Explorer 5 browser release (1999). However, the syntax employed initially deviated from the standardized XMLHttpRequest identifier, instead using COM objects like ActiveXObject("Msxml2.XMLHTTP") and ActiveXObject("Microsoft.XMLHTTP"). By the release of Internet Explorer 7 (2006), all contemporary browsers had adopted native support for the XMLHttpRequest identifier. Today, the XMLHttpRequest identifier functions as the established protocol across all primary browser engines, including Mozilla's Gecko rendering engine (adopted circa 2002), Safari 1.2 (2004), and Opera 8.0 (2005).

=== Formal Specification Evolution === The World Wide Web Consortium (W3C) issued the initial Working Draft specification for the XMLHttpRequest object on April 5, 2006. Subsequently, on February 25, 2008, the W3C published the Level 2 specification draft. Level 2 introduced crucial enhancements such as event progress monitoring capabilities, support for cross-site request execution, and mechanisms for handling binary byte streams. By the close of 2011, the features defined in Level 2 were integrated back into the primary specification. Development responsibilities transitioned to the WHATWG near the end of 2012, where it is currently maintained as a dynamic document using Web IDL standards.

== Execution Pattern == Generally, dispatching a request using XMLHttpRequest mandates adherence to several distinct programming stages.

  1. Instantiate an XMLHttpRequest object via its constructor call:
  2. Invoke the "open" method to define the request methodology, pinpoint the target resource URI, and specify whether the operation should proceed synchronously or asynchronously:
  3. For asynchronous operations, assign a dedicated event listener configured to trigger upon any change in the request's state:
  4. Initiate the actual data transfer by executing the "send" method:
  5. Process state transitions within the assigned event listener. Upon receipt of server data, this response is, by default, stored in the "responseText" property. When the object concludes processing the inbound transmission, its state transitions to 4, signifying the "done" condition. Beyond these fundamental steps, XMLHttpRequest offers numerous configuration points to fine-tune request transmission and response handling. Developers can inject custom header fields to guide server fulfillment logic, and data payloads can be transmitted to the server via arguments provided to the "send" call. The response data stream permits parsing from JSON format into native JavaScript objects, or processing incrementally as segments arrive rather than waiting for complete buffer reception. Furthermore, the request can be preemptively terminated or configured to fail automatically if a specified time threshold is exceeded.

== Inter-Origin Communication ==

During the nascent stages of the World Wide Web, constraints were quickly identified that prevented direct data exchange betwee

See Also

`