# watsonx MCP Server MCP server for IBM watsonx.ai integration with Claude Code. Enables Claude to delegate tasks to IBM's foundation models (Granite, Llama, Mistral, etc.). ## Features - **Text Generation** - Generate text using watsonx.ai foundation models - **Chat** - Have conversations with watsonx.ai chat models - **Embeddings** - Generate text embeddings - **Model Listing** - List all available foundation models ## Available Tools | Tool | Description | |------|-------------| | `watsonx_generate` | Generate text using watsonx.ai models | | `watsonx_chat` | Chat with watsonx.ai models | | `watsonx_embeddings` | Generate text embeddings | | `watsonx_list_models` | List available models | ## Setup ### 1. Install Dependencies ```bash cd ~/watsonx-mcp-server npm install ``` ### 2. Configure Environment Set these environment variables: ```bash WATSONX_API_KEY=your-ibm-cloud-api-key WATSONX_URL=https://us-south.ml.cloud.ibm.com WATSONX_SPACE_ID=your-deployment-space-id # Recommended: deployment space WATSONX_PROJECT_ID=your-project-id # Alternative: project ID ``` **Note**: Either `WATSONX_SPACE_ID` or `WATSONX_PROJECT_ID` is required for text generation, embeddings, and chat. Deployment spaces are recommended as they have Watson Machine Learning (WML) pre-configured. ### 3. Add to Claude Code The MCP server is already configured in `~/.claude.json`: ```json { "mcpServers": { "watsonx": { "type": "stdio", "command": "node", "args": ["/Users/matthewkarsten/watsonx-mcp-server/index.js"], "env": { "WATSONX_API_KEY": "your-api-key", "WATSONX_URL": "https://us-south.ml.cloud.ibm.com", "WATSONX_SPACE_ID": "your-deployment-space-id" } } } } ``` ## Usage Once configured, Claude can use watsonx.ai tools: ``` User: Use watsonx to generate a haiku about coding Claude: [Uses watsonx_generate tool] Result: Code flows like water Bugs arise, then disappear Programs come alive ``` ## Available Models Some notable models available: - `ibm/granite-3-3-8b-instruct` - IBM Granite 3.3 8B (recommended) - `ibm/granite-13b-chat-v2` - IBM Granite chat model - `ibm/granite-3-8b-instruct` - Granite 3 instruct model - `meta-llama/llama-3-70b-instruct` - Meta's Llama 3 70B - `mistralai/mistral-large` - Mistral AI large model - `ibm/slate-125m-english-rtrvr-v2` - Embedding model Use `watsonx_list_models` to see all available models. ## Architecture ``` Claude Code (Opus 4.5) │ └──▶ watsonx MCP Server │ └──▶ IBM watsonx.ai API │ ├── Granite Models ├── Llama Models ├── Mistral Models └── Embedding Models ``` ## Two-Agent System This enables a two-agent architecture where: 1. **Claude (Opus 4.5)** - Primary reasoning agent, handles complex tasks 2. **watsonx.ai** - Secondary agent for specific workloads Claude can delegate tasks to watsonx.ai when: - IBM-specific model capabilities are needed - Running batch inference on enterprise data - Using specialized Granite models - Generating embeddings for RAG pipelines ## IBM Cloud Resources This MCP server uses: - **Service**: watsonx.ai Studio (data-science-experience) - **Plan**: Lite (free tier) - **Region**: us-south Create your own watsonx.ai project and deployment space in IBM Cloud. ## Integration with IBM Z MCP Server This watsonx MCP server works alongside the IBM Z MCP server: ``` Claude Code (Opus 4.5) │ ├──▶ watsonx MCP Server │ └── Text generation, embeddings, chat │ └──▶ ibmz MCP Server └── Key Protect HSM, z/OS Connect ``` Demo scripts in the ibmz-mcp-server: - `demo-full-stack.js` - Full 5-service pipeline - `demo-rag.js` - RAG with watsonx embeddings + Granite ## Document Analyzer The document analyzer (`document-analyzer.js`) provides powerful tools for analyzing your external drive data using watsonx.ai: ### Commands ```bash # View document catalog (9,168 documents) node document-analyzer.js catalog # Summarize a document node document-analyzer.js summarize 1002519.txt # Analyze document type, topics, entities node document-analyzer.js analyze 1002519.txt # Ask questions about a document node document-analyzer.js question 1002519.txt 'What AWS credentials are needed?' # Generate embeddings for documents node document-analyzer.js embed # Semantic search across documents node document-analyzer.js search 'IBM Cloud infrastructure' ``` ### Features - **Summarization**: Generate concise summaries of any document - **Analysis**: Extract document type, topics, entities, and sentiment - **Q&A**: Ask natural language questions about document content - **Embeddings**: Generate 768-dimensional vectors for semantic search - **Semantic Search**: Find similar documents using vector similarity ### Demo Run the full demo: ```bash ./demo-external-drive.sh ``` ## Embedding Index & RAG The `embedding-index.js` tool provides semantic search and RAG (Retrieval Augmented Generation): ```bash # Build an embedding index (50 documents) node embedding-index.js build 50 # Semantic search node embedding-index.js search 'cloud infrastructure' # RAG query - retrieves relevant docs and generates answer node embedding-index.js rag 'How do I set up AWS for Satellite?' # Show index statistics node embedding-index.js stats ``` ## Batch Processor The `batch-processor.js` tool processes multiple documents at once: ```bash # Classify documents into categories node batch-processor.js classify 20 # Extract topics from documents node batch-processor.js topics 15 # Generate one-line summaries node batch-processor.js summarize 10 # Full analysis (classify + topics + summary) node batch-processor.js full 10 ``` Categories: technical, business, creative, personal, code, legal, marketing, educational, other ## Files - `index.js` - MCP server implementation - `document-analyzer.js` - Document analysis CLI tool - `embedding-index.js` - Embedding index and RAG tool - `batch-processor.js` - Batch document processor - `demo-external-drive.sh` - Demo script - `package.json` - Dependencies - `README.md` - This file ## Author Matthew Karsten ## License MIT