CData Connect AI MCP Server

A hosted, remote Model Context Protocol server that exposes every data source connected to a CData Connect AI account as MCP tools — catalog, schema, table, column and stored procedure discovery plus SQL query and procedure execution. A companion Management MCP server at /mcp/mgmt lists available sources and creates, tests and manages connections. Both speak the MCP Streamable HTTP transport and authenticate with OAuth 2.1 (PKCE) or HTTP Basic with a Personal Access Token.

Operations 2

POST /mcp Generic MCP Access
POST /mcp/connections/{connectionId} Connection Scoped MCP Access

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mcp"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cdata-mcp-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Example MCP Server API
  version: 1.0.0
  description: |
    This API provides a Model Context Protocol (MCP) server that exposes tools to connect your data with a model-aware client.

servers:
  - url: https://mcp.cloud.cdata.com
    description: Production MCP base URL

paths:
  /mcp:
    post:
      summary: Generic MCP Access
      tags:
        - MCP
      description: |
        
      parameters:
        - name: tools
          in: query
          required: false
          style: form
          explode: false
          description: >
            Comma-separated list of tool types to include in `tools/list` responses. Omitting returns all types.
            If repeated, only the first occurrence is used. An empty string or unrecognized value returns `HTTP 400`.
            Narrowing-only: cannot enable tools the server has already disabled.
          schema:
            type: array
            items:
              type: string
              enum:
                - universal
                - sql
                - source
        - name: ops
          in: query
          required: false
          style: form
          explode: false
          description: >
            Comma-separated list of operation base names to include in `tools/list` responses. Omitting returns tools for all operations.
            If repeated, only the first occurrence is used. An empty string or unrecognized value returns `HTTP 400`.
            Narrowing-only: cannot enable tools the server has already disabled.
          schema:
            type: array
            items:
              type: string
              enum:
                - get_catalogs
                - get_schemas
                - get_tables
                - get_columns
                - get_procedures
                - get_procedure_parameters
                - get_instructions
                - execute_sql
                - execute_select
                - execute_insert
                - execute_update
                - execute_procedure
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonRpcRequest'
            examples:
              initialize:
                summary: Initialize the MCP session
                value:
                  jsonrpc: "2.0"
                  method: initialize
                  params:
                    protocolVersion: "2024-11-05"
                    capabilities: {}
                    clientInfo:
                      name: my-client
                      version: "1.0.0"
                  id: 1
              tools_list:
                summary: List available tools
                value:
                  jsonrpc: "2.0"
                  method: tools/list
                  params: {}
                  id: 2
              tools_call:
                summary: Invoke a tool
                value:
                  jsonrpc: "2.0"
                  method: tools/call
                  params:
                    name: GetTables
                    arguments: {}
                  id: 3
      responses:
        '200':
          description: |
            JSON-RPC response or SSE stream, depending on the request.

            - **`application/json`** — returned for a single request that includes an `id`.
              The body is a `JsonRpcResponse` object.
            - **`text/event-stream`** — returned when the server needs to stream multiple
              messages back (for example, long-running tool calls, server-initiated notifications).
              Each SSE `data:` line is a JSON-encoded `JsonRpcResponse` object. The stream
              closes when the server has sent all messages for the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonRpcResponse'
              example:
                jsonrpc: "2.0"
                result:
                  tools:
                    - name: GetTables
                      description: Returns a list of available tables.
                      inputSchema:
                        type: object
                        properties: {}
                id: 2
            text/event-stream:
              schema:
                type: string
                description: |
                  Newline-delimited SSE events. Each `data:` field contains a
                  JSON-encoded `JsonRpcResponse`. Example:

                  ```
                  data: {"jsonrpc":"2.0","result":{...},"id":3}

                  data: {"jsonrpc":"2.0","method":"notifications/message","params":{...}}

                  ```
        '202':
          description: Notification accepted (request had no `id`); no response body.
        '400':
          description: |
            Bad request. Returned for either of:
            - Request body is malformed JSON or is not a valid JSON-RPC 2.0 envelope.
            - A `tools` or `ops` query parameter is empty or contains an unrecognized value (`ToolFilterParseError`, JSON-RPC code `-32602`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolFilterParseError'
        '401':
          description: Missing or invalid credentials.

  /mcp/connections/{connectionId}:
    post:
      summary: Connection Scoped MCP Access
      tags:
        - MCP
      description: |
        Scopes an MCP session to a single connection. Implements the
        [MCP Streamable HTTP transport](https://modelcontextprotocol.io/docs/concepts/transports).
        Send any JSON-RPC 2.0 MCP request (for example, `initialize`, `tools/list`, `tools/call`) in the
        request body. The server routes it within the context of the specified connection.
      parameters:
        - name: connectionId
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: The unique identifier of the connection to scope this request to.
        - name: tools
          in: query
          required: false
          style: form
          explode: false
          description: >
            Comma-separated list of tool types to include in `tools/list` responses. Omitting returns all types.
            If repeated, only the first occurrence is used. An empty string or unrecognized value returns `HTTP 400`.
            Narrowing-only: cannot enable tools the server has already disabled.
          schema:
            type: array
            items:
              type: string
              enum:
                - universal
                - sql
                - source
        - name: ops
          in: query
          required: false
          style: form
          explode: false
          description: >
            Comma-separated list of operation base names to include in `tools/list` responses. Omitting returns tools for all operations.
            If repeated, only the first occurrence is used. An empty string or unrecognized value returns `HTTP 400`.
            Narrowing-only: cannot enable tools the server has already disabled.
          schema:
            type: array
            items:
              type: string
              enum:
                - get_catalogs
                - get_schemas
                - get_tables
                - get_columns
                - get_procedures
                - get_procedure_parameters
                - get_instructions
                - execute_sql
                - execute_select
                - execute_insert
                - execute_update
                - execute_procedure
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonRpcRequest'
            examples:
              initialize:
                summary: Initialize the MCP session
                value:
                  jsonrpc: "2.0"
                  method: initialize
                  params:
                    protocolVersion: "2024-11-05"
                    capabilities: {}
                    clientInfo:
                      name: my-client
                      version: "1.0.0"
                  id: 1
              tools_list:
                summary: List available tools
                value:
                  jsonrpc: "2.0"
                  method: tools/list
                  params: {}
                  id: 2
              tools_call:
                summary: Invoke a tool
                value:
                  jsonrpc: "2.0"
                  method: tools/call
                  params:
                    name: GetTables
                    arguments: {}
                  id: 3
      responses:
        '200':
          description: |
            JSON-RPC response or SSE stream, depending on the request.

            - **`application/json`** — returned for a single request that includes an `id`.
              The body is a `JsonRpcResponse` object.
            - **`text/event-stream`** — returned when the server needs to stream multiple
              messages back (for example, long-running tool calls, server-initiated notifications).
              Each SSE `data:` line is a JSON-encoded `JsonRpcResponse` object. The stream
              closes when the server has sent all messages for the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonRpcResponse'
              example:
                jsonrpc: "2.0"
                result:
                  tools:
                    - name: GetTables
                      description: Returns a list of available tables.
                      inputSchema:
                        type: object
                        properties: {}
                id: 2
            text/event-stream:
              schema:
                type: string
                description: |
                  Newline-delimited SSE events. Each `data:` field contains a
                  JSON-encoded `JsonRpcResponse`. Example:

                  ```
                  data: {"jsonrpc":"2.0","result":{...},"id":3}

                  data: {"jsonrpc":"2.0","method":"notifications/message","params":{...}}

                  ```
        '202':
          description: Notification accepted (request had no `id`); no response body.
        '400':
          description: |
            Bad request. Returned for any of:
            - `connectionId` path parameter is not a valid UUID.
            - Request body is malformed JSON or is not a valid JSON-RPC 2.0 envelope.
            - A `tools` or `ops` query parameter is empty or contains an unrecognized value (`ToolFilterParseError`, JSON-RPC code `-32602`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolFilterParseError'
        '401':
          description: Missing or invalid credentials.
        '404':
          description: Connection ID not found.

components:
  schemas:
    JsonRpcRequest:
      type: object
      required:
        - jsonrpc
        - method
      properties:
        jsonrpc:
          type: string
          enum: ["2.0"]
          description: JSON-RPC protocol version. Must be `"2.0"`.
        method:
          type: string
          description: MCP method name (for example, `initialize`, `tools/list`, `tools/call`).
        params:
          type: object
          additionalProperties: true
          description: Method-specific parameters. May be omitted for parameterless methods.
        id:
          description: |
            Request identifier echoed in the response. Use a string or integer.
            Omit entirely to send a notification (no response will be returned).
          oneOf:
            - type: string
            - type: integer

    JsonRpcResponse:
      type: object
      required:
        - jsonrpc
        - id
      properties:
        jsonrpc:
          type: string
          enum: ["2.0"]
          description: JSON-RPC protocol version.
        result:
          type: object
          additionalProperties: true
          description: Present on success; mutually exclusive with `error`.
        error:
          $ref: '#/components/schemas/JsonRpcError'
        id:
          description: Matches the `id` from the request. Null if the server could not determine the request id.
          nullable: true
          oneOf:
            - type: string
            - type: integer

    JsonRpcError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          description: JSON-RPC error code (for example, `-32600` invalid request, `-32601` method not found, `32602` tool filter parse error).
        message:
          type: string
          description: Human-readable error description.
        data:
          description: Optional additional error context.

    ToolFilterParseError:
      type: object
      description: Returned when a `tools` or `ops` query parameter is empty or contains an unrecognized value.
      properties:
        jsonrpc:
          type: string
          enum: ["2.0"]
        error:
          type: object
          properties:
            code:
              type: integer
              description: JSON-RPC error code indicating invalid parameters.
              example: -32602
            message:
              type: string
              description: Human-readable description of the parse failure.
              example: "Invalid value for parameter 'tools': 'unknown'"
        id:
          nullable: true
          oneOf:
            - type: string
            - type: integer

    Tool:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        inputSchema:
          type: object
          description: JSON Schema describing the tool's input parameters.

    ToolResult:
      type: object
      properties:
        content:
          type: array
          items:
            type: object
          description: Content blocks returned by the tool.

  securitySchemes:
    Basic:
      type: http
      scheme: basic
      description: Basic Authentication with username and password. Use your PAT as the password. You can get your PAT from Connect AI by selecting **Settings** > **Access Tokens**.

    #OAuth2:
    #  type: oauth2
    #  flows:
    #    authorizationCode:
    #      authorizationUrl: https://cloud-login.clouddataos.com/authorize
    #      tokenUrl: https://cloud-login.clouddataos.com/oauth/token
    #      refreshUrl: https://cloud-login.clouddataos.com/oauth/refresh
    #      scopes: []
          # Optional tool-specific hint for PKCE
          #x-usePkce: true
security:
  - Basic: []

  #- OAuth2: []