cdata-mcp-server-google-calendar-readonly
Expose Google Calendar schedules via a read-only Model Context Protocol (MCP) endpoint, enabling natural language querying of live event data within AI workflows.
Author

CDataSoftware
Quick Info
Actions
Tags
CData MCP Endpoint for Google Calendars (Read-Only)
This implementation establishes a dedicated Model Context Protocol (MCP) server, strictly for read operations, interfacing with Google Calendar data powered by the CData JDBC Driver.
:warning: Important Note: This version is strictly read-only. For a complete CRUD experience (Read, Write, Update, Delete) and a simpler deployment process, please explore the complimentary CData MCP Server for Google Calendars (beta) available for download here.
Objective
The primary goal of this read-only MCP server is to facilitate query access for Large Language Models (LLMs), such as Claude Desktop, against real-time data residing in Google Calendars. This functionality relies on the underlying power of the CData JDBC Driver for Google Calendars, which maps calendar resources into a relational SQL structure.
The server acts as a wrapper, translating natural language requests into database interactions via the MCP interface, thus eliminating the need for the LLM to generate explicit SQL.
Deployment Instructions
Phase 1: Project Setup and Compilation
- Obtain the source code by cloning the repository:
bash git clone https://github.com/cdatasoftware/google-calendars-mcp-server-by-cdata.git cd google-calendars-mcp-server-by-cdata - Compile the project using Maven:
bash mvn clean installThis action produces the executable artifact:CDataMCP-jar-with-dependencies.jar - Acquire and install the CData JDBC Driver for Google Calendars:
- Download location: https://www.cdata.com/drivers/googlecalendar/download/jdbc
Phase 2: Driver Licensing and Configuration
- Activate the JDBC Driver:
- Navigate to the driver's installation subdirectory (e.g.,
C:\Program Files\CData\CData JDBC Driver for Google Calendars\on Windows or/Applications/CData JDBC Driver for Google Calendars/on macOS/Linux). - Execute the licensing utility:
bash java -jar cdata.jdbc.googlecalendar.jar --license - Input your credentials and use "TRIAL" or your valid license key.
- Navigate to the driver's installation subdirectory (e.g.,
- Establish Data Source Connection Parameters:
- Launch the connection string utility:
bash java -jar cdata.jdbc.googlecalendar.jar - Configure the necessary connection settings (e.g., OAuth credentials for Google). Test the connection.
- Record the generated JDBC connection string.
- Launch the connection string utility:
- Define the Server Definition File (
.prp):- Create a configuration file (e.g.,
google-calendars.prp) specifying the server parameters:env Prefix=googlecalendar ServerName=CDataGoogleCalendar ServerVersion=1.0 DriverPath=ABSOLUTE_PATH_TO\cdata.jdbc.googlecalendar.jar DriverClass=cdata.jdbc.googlecalendar.GoogleCalendarDriver JdbcUrl=jdbc:googlecalendar:InitiateOAuth=GETANDREFRESH; // Use your copied string here Tables=
- Create a configuration file (e.g.,
Integration with LLM Clients (e.g., Claude Desktop)
-
Update Client Configuration: Modify or create the client's configuration file (e.g.,
claude_desktop_config.json) to register this new MCP server within themcpServersobject.Windows Client Registration Example:
json { "mcpServers": { "googlecalendar": { "command": "PATH\TO\java.exe", "args": [ "-jar", "PATH\TO\CDataMCP-jar-with-dependencies.jar", "PATH\TO\google-calendars.prp" ] }, ... } }Linux/Mac Client Registration Example:
json { "mcpServers": { "googlecalendar": { "command": "/PATH/TO/java", "args": [ "-jar", "/PATH/TO/CDataMCP-jar-with-dependencies.jar", "/PATH/TO/google-calendars.prp" ] }, ... } }2. Deploy Configuration: Ensure the modified configuration file is placed in the client's application data directory: Windows:bash cp C:\PATH\TO\claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.jsonLinux/Mac:bash cp /PATH/TO/claude_desktop_config.json /Users/{user}/Library/Application\ Support/Claude/claude_desktop_config.json3. Activate Server: Restart or refresh the host client application (e.g., Claude Desktop) for the new capability to load.
Standalone Server Execution
The server can be initiated independently via standard input/output (stdio):
```bash
java -jar /PATH/TO/CDataMCP-jar-with-dependencies.jar /PATH/TO/google-calendars.prp
Constraint: Because the server communicates via stdio, it must run on the same host machine as the consuming client application.
Interaction Methods
Once deployed, the LLM client gains access to the underlying schema. Users should query the data using conversational prompts, such as asking about scheduled appointments, rather than invoking raw tools. Example user prompts: * "What meetings are scheduled for this afternoon?" * "List all appointments for next Tuesday."
Available Toolset & Signatures
Tool naming convention uses the configured server prefix (e.g., googlecalendar).
googlecalendar_get_tables- Fetches a catalog of accessible structures (tables). Schema inspection should follow using_get_columns.googlecalendar_get_columns- Retrieves field definitions for a specified table, outputting CSV format.googlecalendar_run_query- Executes arbitrary SQL SELECT statements against the calendar data via the JDBC interface.
JSON-RPC Call Schemas (Scripted Access)
Requests adhere to the JSON-RPC 2.0 specification.
Fetching Data Structures (Tables)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "googlecalendar_get_tables",
"arguments": {}
}
}
Inspecting Fields (Columns)
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "googlecalendar_get_columns",
"arguments": {
"table": "Events"
}
}
}
Executing Data Retrieval (Query)
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "googlecalendar_run_query",
"arguments": {
"sql": "SELECT StartTime, Subject FROM Events WHERE StartTime > NOW() - 7 DAY"
}
}
}
Troubleshooting Common Issues
- Server Not Visible: If the tool does not appear in Claude Desktop, fully terminate the client process (check Task Manager/Activity Monitor) and restart.
- Connection Failures: Verify that the connection string copied into the
.prpfile is valid by re-testing it using the Connection String utility. - General Errors: For integration issues with the MCP server, consult the CData Community. For connection stability problems, reach out to the CData Support Desk.
Licensing and Source Compatibility
This utility is provided under the permissive MIT License (see LICENSE).
Data Source Connectivity: This server utilizes the CData JDBC ecosystem, supporting connections to hundreds of enterprise systems, including (but not limited to):
| Category | Examples |
|---|---|
| CRM/Sales | Salesforce, HubSpot, Zoho CRM, Dynamics 365 |
| Productivity | Google Calendar, Office 365, SharePoint, Jira, Confluence |
| Databases | PostgreSQL, Snowflake, BigQuery, SQL Server, Oracle, Cassandra |
| File/APIs | REST, OData, CSV, JSON, SFTP, Box, Dropbox |
For the complete list of supported sources, please refer to the comprehensive documentation provided by CData.
