# Watsonx.data Document Library Retrieval MCP Server The **Watsonx.data Document Library Retrieval MCP Server** is a Model Context Protocol (MCP)-compliant service that seamlessly connects AI agents with document libraries in watsonx.data, enabling intelligent data retrieval and interaction. ## Key Features - **Dynamic Discovery & Registration** Automatically detects and registers document libraries as MCP tools. - **Natural Language Interface** Query document libraries using conversational language and receive human-readable responses. - **Minimal Configuration** Deploy with simple setup requirements and zero complex configurations. - **Framework-Agnostic Integration** Plug directly into the preferred agentic frameworks with native MCP compatibility. --- ## Overview - **Protocol**: Model Context Protocol (MCP) - **Purpose**: Acts as a bridge between agentic AI frameworks and watsonx.data document libraries - **Supported Environments**: IBM Cloud Pak for Data (CPD), Watsonx SaaS - **Agent Compatibility**: The agentic framework must support the MCP standard (via SSE or Stdio). _Note: This server will not function with agents that do not support MCP._ --- ## Prerequisites - Python version **3.11** or later - Access to your **CPD or SaaS environment** - Access credentials and a **CA certificate bundle** for CPD - Ensure your **agent framework supports MCP protocol** --- ## Getting CA Bundle for CPD 1. Login to your OpenShift cluster: ```bash oc login -u kubeadmin -p '' https://:6443 ``` 2. Extract the root CA bundle: ```bash oc get configmap kube-root-ca.crt -o jsonpath='{.data.ca\.crt}' > cabundle.crt ``` NOTE: Please use open shift login command. The user and password will be open shift portal login username and password --- ## Setup ### Step 1: Install Python - Official Installer: [https://www.python.org/downloads/](https://www.python.org/downloads/) ### Step 2: Create a virtual environment ```bash python -m venv .venv ``` ### Step 3: Activate the virtual environment ```bash source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows ``` ### Step 4: Install the `uv` package manager ```bash pip install uv ``` - `uv` package: [https://pypi.org/project/uv/](https://pypi.org/project/uv/) ### Step 5: Install the MCP server package ```bash pip install ibm-watsonxdata-dl-retrieval-mcp-server ``` --- ## Configuration ### For Cloud Pak for Data (CPD): ```bash export CPD_ENDPOINT="" export CPD_USERNAME="" export CPD_PASSWORD="" export CA_BUNDLE_PATH="" export LH_CONTEXT="CPD" ``` NOTE: * For CPD_ENDPOINT use endpoint url for installed CPD. Example: "https://cpd-cpd-instance.apps.perf10.5y2z.openshiftapps.com" * For CPD_USERNAME and CPD_PASSWORD use the username and password used to login to CPD. ### For Watsonx SaaS: ```bash export WATSONX_DATA_API_KEY="" export WATSONX_DATA_RETRIEVAL_ENDPOINT="" export DOCUMENT_LIBRARY_API_ENDPOINT="" export WATSONX_DATA_TOKEN_GENERATION_ENDPOINT="" export LH_CONTEXT="SAAS" ``` NOTE: * For DOCUMENT_LIBRARY_API_ENDPOINT please use the endpoint url corresponding to region from here: https://cloud.ibm.com/apidocs/data-ai-common-core#endpoint-url. Example: https://api.ca-tor.dai.cloud.ibm.com * For WATSONX_DATA_RETRIEVAL_ENDPOINT please use the watsonx.data endpoint. Example : https://console-ibm-cator.lakehouse.saas.ibm.com * For WATSONX_DATA_TOKEN_GENERATION_ENDPOINT please use the endpoint url from here: https://cloud.ibm.com/apidocs/iam-identity-token-api#endpoints . Example: https://iam.cloud.ibm.com --- ## Running the Server ```bash uv run ibm-watsonxdata-dl-retrieval-mcp-server ``` By default, the server runs in `sse` transport mode on port 8000. ### Transport: SSE ```bash uv run ibm-watsonxdata-dl-retrieval-mcp-server --port --transport sse ``` ### Transport: stdio ```bash uv run ibm-watsonxdata-dl-retrieval-mcp-server --port --transport stdio ``` --- ## Integrating with WXO Prerequisite: Install WXO ADK and complete the initial setup. Refer documentation for more details: https://developer.watson-orchestrate.ibm.com ### Transport: STDIO To add the MCP server in stdio transport with WXO refer the example below. 1. create connection ```bash orchestrate connections add -a ``` 2. Configure connection ```bash orchestrate connections configure --app-id --environment draft -t team -k key_value ``` 3. Setting credentials ```bash orchestrate connections set-credentials --app-id= --env draft -e WATSONX_DATA_API_KEY="" -e WATSONX_DATA_RETRIEVAL_ENDPOINT="" -e DOCUMENT_LIBRARY_API_ENDPOINT="
" -e WATSONX_DATA_TOKEN_GENERATION_ENDPOINT="" -e LH_CONTEXT="SAAS" ``` Example for Saas: ```bash orchestrate toolkits import \ --kind mcp \ --name "mcp-toolkit" \ --description "mcp server for watsonx retrival service" \ --package "ibm-watsonxdata-dl-retrieval-mcp-server" \ --command "uv run ibm-watsonxdata-dl-retrieval-mcp-server --port --transport stdio" \ --language python \ --tools "*" \ --app-id ``` ### Transport: SSE 1. Install mcp-proxy ```bash pip install mcp-proxy ``` 2. Run ibm-watsonxdata-dl-retrieval-mcp-server in sse transport. Once prerequisites are met, the tools can be added as toolkit in WXO. Example : ```bash orchestrate toolkits import \ --kind mcp \ --name mcp_toolkit \ --description "MCP server (hosted, SSE)" \ --package "mcp-proxy" \ --language python \ --command "uvx mcp-proxy https:///sse" \ --tools "*" ``` NOTE: When running wxo in SAAS and MCP server locally, expose the mcp server endpoint if required. Refer wxo documentation for more details: https://www.ibm.com/docs/en/watsonx/watson-orchestrate/base?topic=tools-importing-from-mcp-server --- ## Integrating with other Agentic Frameworks For more examples on using Watsonx.data Document Library Retrieval MCP Server with agentic framework refer `examples` ## Limitations - Environment credentials **cannot be changed during runtime**. - To change credentials, either: - Start a new server with new env variables, OR - Source new environment variables and restart the server. ### Tool Naming Each document library is registered with a unique tool name: > `tool_name = ` Example: ```bash invoice_document_library77e4b4dd_479e_4406_acc4_ce154c96266c ```