Skip to main content
Glama
IBM

IBM i MCP Server

Official
by IBM
quickstart.mdx21.9 kB
--- title: "Quick Start Guide" description: "Get your IBM i MCP Server running in under 15 minutes with step-by-step setup instructions." --- Get your IBM i MCP Server up and running in under 15 minutes. This guide walks you through installation, configuration, and your first successful tool execution. --- ## Before You Begin Complete these prerequisites before starting the installation: <Steps> <Step title="Verify Node.js Installation"> Ensure Node.js 18 or higher is installed on your development machine: ```bash node --version # Should show v18.0.0 or higher ``` **Don't have Node.js?** Download from [nodejs.org](https://nodejs.org/) </Step> <Step title="Install Mapepire on IBM i"> Mapepire must be running on your IBM i system before proceeding. **Not installed yet?** Follow the [Setup Mapepire guide](/setup-mapepire) (takes ~10 minutes) **Already installed?** Verify it's running: ```bash # On IBM i sc check mapepire # Should show "running" ``` **Note the port**: Default is 8076—you'll need this for configuration. </Step> <Step title="Gather IBM i Credentials"> You'll need: - IBM i hostname or IP address - User profile with database authorities - User password - Access to QSYS2 system services (verify with your system administrator) </Step> <Step title="Set Aside Time"> Plan for 15-20 minutes of uninterrupted setup time. </Step> </Steps> <Success> ✓ **Ready to proceed?** All prerequisites met? Continue to installation. </Success> --- ## Step 1: Installation Choose your installation method based on your needs: <Tabs> <Tab title="NPM Package (Recommended)"> **Best for:** Production use, quick setup, always-updated package The official npm package provides instant installation without building from source. ```bash # No installation needed - npx downloads and runs automatically npx -y @ibm/ibmi-mcp-server@latest --help ``` **Benefits:** - ✅ Always up-to-date with latest stable release - ✅ No build step required - ✅ Instant setup in seconds - ✅ Automatic dependency management - ✅ Perfect for CI/CD pipelines <Note> The `-y` flag automatically accepts the npm package installation prompt. You can omit it if you want to confirm before installation. </Note> <Success> ✓ **Verify the package works:** ```bash npx -y @ibm/ibmi-mcp-server@latest --help ``` You should see the help output with available options. </Success> **Next:** Skip to [Step 2: Configuration](#step-2-configuration) </Tab> <Tab title="Build from Source"> **Best for:** Development, customization, contributing, latest features <Note> **Repository Structure**: The IBM i MCP Server follows a modular architecture: - `server/` - MCP server implementation (main package) - `tools/` - SQL tool YAML configurations - `agents/` - Agent implementations and examples - `deployment/` - Deployment configurations (Docker, Gateway, OpenShift) </Note> Clone the repository and install dependencies: ```bash git clone https://github.com/IBM/ibmi-mcp-server.git cd ibmi-mcp-server/server npm install ``` Build the project: ```bash npm run build ``` <Tip> Use `npm run rebuild` for a clean install if you encounter any issues. </Tip> <Success> ✓ **Verify the build succeeded:** - No error messages in the output - `dist/` directory was created - `dist/index.js` exists **Build failed?** Check that Node.js 18+ is installed and all dependencies downloaded successfully. </Success> **Benefits:** - ✅ Access to latest development features - ✅ Ability to modify and customize code - ✅ Contribute back to the project - ✅ Debug and troubleshoot at source level </Tab> </Tabs> --- ## Step 2: Configuration Create your environment configuration file: <Tabs> <Tab title="NPM Package"> Create a `.env` file in your current directory: ```bash cat > .env << 'EOF' # IBM i DB2 for i Connection Settings DB2i_HOST=your-ibmi-host DB2i_USER=your-username DB2i_PASS=your-password DB2i_PORT=8076 DB2i_IGNORE_UNAUTHORIZED=true # Server Configuration MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 EOF ``` Edit the file and replace the placeholder values with your actual IBM i credentials. </Tab> <Tab title="Build from Source"> Copy the example configuration and edit it: ```bash # From ibmi-mcp-server directory cp .env.example .env ``` Edit the `.env` file with your IBM i connection details: ```bash # IBM i DB2 for i Connection Settings DB2i_HOST=your-ibmi-host DB2i_USER=your-username DB2i_PASS=your-password DB2i_PORT=8076 DB2i_IGNORE_UNAUTHORIZED=true # Server Configuration MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 ``` </Tab> </Tabs> <Warning> Replace the connection values with your actual IBM i system credentials. The user profile must have appropriate authorities for database operations. </Warning> <Warning> **Mapepire is Required**: Before proceeding, you must have Mapepire running on your IBM i system. Mapepire is a modern database server for IBM i that provides SQL query execution over WebSocket connections, optimized for AI agent workloads. If you haven't installed it yet, follow our [Setup Mapepire guide](/setup-mapepire) to install and configure it. Default port: **8076**. </Warning> <Success> ✓ **Verify your configuration:** - `.env` file exists in the root directory - `DB2i_HOST` is set to your IBM i hostname (not `127.0.0.1` if running in Docker) - `DB2i_USER` and `DB2i_PASS` are valid IBM i credentials - `DB2i_PORT` matches your Mapepire port (default: 8076) **Having connection issues?** See the [troubleshooting section](#troubleshooting) below. </Success> <Card title="Explore All Configuration Options →" icon="gear" href="/configuration"> The Configuration guide covers authentication modes (JWT, OAuth, IBM i), HTTP/HTTPS settings, OpenTelemetry observability, and all environment variables with examples for development and production. </Card> --- ## Step 3: Create Your First SQL Tool SQL tools are YAML-based configurations that define SQL queries the MCP server can execute. Each tool specifies a data source, parameters, and the SQL statement to run. ### Create Tools Directory First, create a directory to store your tool configurations: ```bash mkdir -p tools ``` ### Create a Simple Tool Configuration Create a file named `tools/quickstart.yaml` with the following content: ```yaml sources: ibmi-system: host: ${DB2i_HOST} user: ${DB2i_USER} password: ${DB2i_PASS} port: 8076 ignore-unauthorized: true tools: system_activity: source: ibmi-system description: "Current system activity information including active jobs and resource utilization" parameters: [] statement: | SELECT * FROM TABLE(QSYS2.SYSTEM_ACTIVITY_INFO()) toolsets: performance: tools: - system_activity ``` ### Understanding the YAML Structure The YAML configuration has three main sections: <Steps> <Step title="Sources"> Defines the IBM i data sources your tools will connect to. The environment variables (`${DB2i_HOST}`, etc.) are automatically replaced with values from your `.env` file. ```yaml sources: ibmi-system: host: ${DB2i_HOST} user: ${DB2i_USER} password: ${DB2i_PASS} ``` </Step> <Step title="Tools"> Defines the SQL operations available to AI agents. Each tool specifies: - `source`: Which data source to use - `description`: What the tool does (helps AI understand when to use it) - `parameters`: Input parameters (empty array `[]` means no parameters required) - `statement`: The SQL query to execute ```yaml tools: system_activity: source: ibmi-system description: "Current system activity information including active jobs and resource utilization" parameters: [] statement: | SELECT * FROM TABLE(QSYS2.SYSTEM_ACTIVITY_INFO()) ``` </Step> <Step title="Toolsets"> Groups related tools together for easier management. You can load specific toolsets when starting the server using `--toolsets performance`. ```yaml toolsets: performance: tools: - system_activity ``` </Step> </Steps> <Success> ✓ **Verify your tool configuration:** - `tools/quickstart.yaml` file exists - YAML syntax is valid (no tabs, proper indentation with spaces) - Environment variables are wrapped in `${}` syntax - SQL statement uses the pipe `|` character for multi-line strings </Success> <CardGroup cols={2}> <Card title="Use Pre-Built Tools" icon="box" href="/sql-tools/using-default-tools"> **Start with ready-made tools!** Learn how to run the server with pre-built SQL tools for performance monitoring, security analysis, and system administration. </Card> <Card title="Build Custom Tools" icon="hammer" href="/sql-tools/overview"> **Ready to build more tools?** The SQL Tools documentation covers parameters, validation, multiple data sources, complex queries, and the full YAML configuration reference. </Card> </CardGroup> --- ## Step 4: Start the Server Start the server in HTTP mode with your new SQL tool: <Tabs> <Tab title="NPM Package (Recommended)"> ```bash export MCP_SERVER_CONFIG=.env npx -y @ibm/ibmi-mcp-server@latest --transport http --tools ./tools/quickstart.yaml ``` **Session Modes**: - `auto` (default): Automatically detects client capabilities ← **Start with this** - `stateful`: Maintains persistent sessions with connection state - `stateless`: Each request is independent, no session state Set via environment: `MCP_SESSION_MODE=stateful npx -y @ibm/ibmi-mcp-server@latest --transport http` </Tab> <Tab title="Build from Source"> ```bash # From server/ directory npm run start:http -- --tools ../tools/quickstart.yaml ``` **Session Modes**: - `auto` (default): Automatically detects client capabilities ← **Start with this** - `stateful`: Maintains persistent sessions with connection state - `stateless`: Each request is independent, no session state Set via environment: `MCP_SESSION_MODE=stateful npm run start:http` </Tab> </Tabs> <Note> **Alternative: Stdio Transport** - For MCP Inspector or CLI tools, use `--transport stdio` (NPM package) or `npm run start:stdio` (build from source). However, HTTP transport is recommended for most use cases. </Note> **Available CLI Options**: | Option | Description | Example | |--------|-------------|---------| | `--tools <path>` | Override YAML tools path | `--tools ./my-configs` | | `--toolsets <list>` | Load specific toolsets only | `--toolsets performance,security` | | `--transport <type>` | Force transport type | `--transport http` | | `--help` | Show help information | `--help` | | `--list-toolsets` | List available toolsets | `--list-toolsets` | You should see output similar to: ``` ✓ Server ready! Transport: http Host: 127.0.0.1:3010 Endpoint: http://127.0.0.1:3010/mcp Tools loaded: 1 ``` <Success> ✓ **Verify the server started successfully:** - See "Server ready!" message - HTTP endpoint is displayed (or "Stdio ready" for stdio mode) - Number of tools loaded shown (should be > 0) - No error messages about Mapepire connection - Server process remains running (doesn't exit immediately) **Server not starting?** Check: 1. Mapepire is running on IBM i: `sc check mapepire` 2. Firewall allows connection to port 8076 3. IBM i credentials are correct in `.env` 4. No other process is using port 3010 (HTTP mode) </Success> --- ## Step 5: Test with Sample MCP Client Now that your server is running, test it with the example Python client from the [GitHub repository](https://github.com/IBM/ibmi-mcp-server/tree/main/client) to verify connectivity and tool execution. <Note> **Example Client Location**: The sample client scripts are available in the [`client/`](https://github.com/IBM/ibmi-mcp-server/tree/main/client) directory of the GitHub repository. Clone the repository or download the files to follow along. </Note> ### Install uv (Python Package Manager) If you don't have `uv` installed: ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` <Note> **Why uv?** [uv](https://github.com/astral-sh/uv) is a fast Python package manager that handles virtual environments and dependencies automatically. It's the recommended way to run the client examples. </Note> ### Run the MCP Client Script In a **new terminal window** (keep the server running in the first terminal): ```bash # Clone the repository if you haven't already git clone https://github.com/IBM/ibmi-mcp-server.git cd ibmi-mcp-server/client # Install dependencies and run the test client uv run mcp_client.py ``` <Tip> **Already have the repo cloned?** Just navigate to the `client/` directory and run `uv run mcp_client.py` </Tip> You should see output like this: ``` ================================================================================ AVAILABLE TOOLS ================================================================================ 1. system_activity └─ Get real-time IBM i system activity metrics ================================================================================ SYSTEM ACTIVITY RESULT ================================================================================ ✓ Query executed successfully in 145ms SQL: SELECT * FROM QSYS2.SYSTEM_ACTIVITY_INFO Results (1 row(s)): ---------------------------------------------------------------------------- SYSTEM_NAME : YOURSYSTEM CURRENT_TIMESTAMP : 2024-12-10-15:30:45.123456 CPU_UTILIZATION : 15.2 MEMORY_USED_MB : 8192 ACTIVE_JOBS : 542 ---------------------------------------------------------------------------- ``` <Success> ✓ **Verify your connection works:** - List of available tools displayed - `system_activity` tool executed successfully - Real data from your IBM i system returned - No connection errors or timeouts **Not seeing data?** Check: 1. MCP server is still running (check first terminal) 2. Server started on port 3010 (matches script's `localhost:3010`) 3. No firewall blocking local connections 4. Server logs show the incoming request </Success> <Accordion title="What does this script do?"> The `mcp_client.py` script: 1. Connects to your running MCP server at `http://localhost:3010/mcp` 2. Lists all available tools (SQL tools loaded from your YAML configs) 3. Executes the `system_activity` tool (a pre-built IBM i monitoring query) 4. Formats and displays the results **View Source**: See the implementation at [`client/mcp_client.py`](https://github.com/IBM/ibmi-mcp-server/blob/main/client/mcp_client.py) to understand how to use the MCP client SDK. </Accordion> --- ## Step 6: Run an AI Agent (Optional) Now that you've verified the MCP server works, try the example AI agent from the [GitHub repository](https://github.com/IBM/ibmi-mcp-server/tree/main/client) that can answer natural language questions about your IBM i system. <Note> **Agent Script Location**: The `agent.py` script is in the [`client/`](https://github.com/IBM/ibmi-mcp-server/tree/main/client) directory of the GitHub repository. If you haven't cloned the repo yet (from Step 5), you'll need to do so first. </Note> ### Configure API Key The agent uses an LLM to understand your questions and call the appropriate MCP tools. You'll need an API key: <Tabs> <Tab title="OpenAI (Recommended)"> Create a `.env` file in the `client/` directory: ```bash # From the client directory echo "OPENAI_API_KEY=your-openai-api-key-here" > .env ``` **Get your API key**: Visit [OpenAI API Keys](https://platform.openai.com/api-keys) </Tab> <Tab title="Ollama (Local)"> Install and run Ollama locally: ```bash # Install Ollama (macOS) brew install ollama # Start Ollama and pull a model ollama run qwen2.5 ``` No API key needed—Ollama runs locally. </Tab> </Tabs> ### Run the Agent From the `client/` directory (where you ran the previous step), ask natural language questions about your IBM i system: <Tabs> <Tab title="OpenAI"> ```bash # If you skipped Step 5, clone the repo first: # git clone https://github.com/IBM/ibmi-mcp-server.git # cd ibmi-mcp-server/client # Run the agent with OpenAI uv run agent.py -p "What is my system performing?" --model-id "openai:gpt-4o" # Or use the default prompt uv run agent.py --model-id "openai:gpt-4o" ``` </Tab> <Tab title="Ollama (Local)"> ```bash # If you skipped Step 5, clone the repo first: # git clone https://github.com/IBM/ibmi-mcp-server.git # cd ibmi-mcp-server/client # Run the agent with local Ollama uv run agent.py -p "What is my system performing?" --model-id "ollama:qwen2.5" # Or use the default prompt uv run agent.py --model-id "ollama:qwen2.5" ``` </Tab> </Tabs> **Example interaction**: ``` You: What is my system status? Agent: Your IBM i system "YOURSYSTEM" is running normally with: - CPU utilization at 15.2% - 8GB of memory in use - 542 active jobs - System is responsive and healthy ``` <Tip> The agent automatically: 1. Analyzes your natural language question 2. Selects the appropriate MCP tool(s) to call 3. Executes the tool(s) on your IBM i system 4. Synthesizes the results into a natural language response **View Source**: See [`client/agent.py`](https://github.com/IBM/ibmi-mcp-server/blob/main/client/agent.py) for the implementation details. </Tip> <Card title="Build Production Agents" icon="rocket" href="/agents/overview"> **Ready for more?** Explore our **Agent Integrations** documentation to build production-ready agents with Agno, Google ADK, or LangChain. Learn about FilteredMCPTools, specialized agent patterns, persistent memory, and multi-agent architectures. </Card> --- ## 🎉 Congratulations! You've successfully set up the IBM i MCP Server! Here's what you accomplished: <Steps> <Step title="✅ Server Installed"> Built and configured the MCP server with IBM i connection </Step> <Step title="✅ Connection Verified"> Connected to Mapepire and your IBM i database </Step> <Step title="✅ Tools Tested"> Listed and executed SQL tools via the MCP client </Step> <Step title="✅ Agent Ready (Optional)"> Ran an AI agent that understands natural language queries </Step> </Steps> Your MCP server is now ready for: - **Connecting AI clients** (Claude Desktop, VSCode, Cursor) - **Creating custom SQL tools** for your specific use cases - **Building specialized agents** for IBM i administration and monitoring --- ## Next Steps <CardGroup cols={2}> <Card title="Client Integration" icon="plug" href="/clients/overview"> Connect the server to Claude Desktop, VSCode, Cursor, and 10+ other MCP clients </Card> <Card title="SQL Tools" icon="database" href="/sql-tools/overview"> Learn how to create custom SQL operations using YAML configurations </Card> <Card title="Configuration" icon="gear" href="/configuration"> Explore all configuration options and environment variables </Card> <Card title="Agent Development" icon="robot" href="/agents/building-agents"> Build sophisticated AI agents that understand IBM i concepts </Card> </CardGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Connection Refused" icon=""> - Verify your IBM i host is reachable: `ping your-ibmi-host` - Check that the Mapepire daemon is running on port 8076 - Ensure your user profile has database authorities </Accordion> <Accordion title="Authentication Failed" icon=""> - Verify your IBM i username and password are correct - Check that your user profile is not disabled or expired - Ensure you have appropriate authorities for QSYS2 services </Accordion> <Accordion title="Port Already in Use" icon=""> Change the port in your `.env` file: ```bash MCP_HTTP_PORT=3011 ``` Then restart the server. </Accordion> <Accordion title="Tools Not Loading" icon=""> - Check that `prebuiltconfigs/` directory exists - Verify your YAML tool configurations are valid - Use `--list-toolsets` to see available tools: ```bash npm run start:http -- --list-toolsets ``` </Accordion> <Accordion title="Client Script Fails (mcp_client.py)" icon=""> **Connection refused or timeout:** - Ensure MCP server is running: check for "Server ready!" message - Verify server is on port 3010 (or update script if using different port) - Server must use HTTP transport (not stdio) **uv command not found:** ```bash # Install uv curl -LsSf https://astral.sh/uv/install.sh | sh # Restart terminal or reload shell source ~/.bashrc # or ~/.zshrc ``` **Python version error:** - Client requires Python 3.13+ (check pyproject.toml) - Install Python 3.13: `brew install python@3.13` (macOS) - Or use `uv python install 3.13` **Dependencies fail to install:** ```bash # Clear uv cache and retry cd client rm -rf .venv uv sync ``` </Accordion> </AccordionGroup> <Info> **Completion Time**: This quickstart should take 20-30 minutes including the optional agent setup. Most time is spent waiting for installations and builds. If you encounter issues, check the [configuration guide](/configuration) or review the troubleshooting section above. </Info>

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/IBM/ibmi-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server