Oracle Cloud Infrastructure (OCI) MCP Server
A comprehensive, robust, and highly extensible Model Context Protocol (MCP) server for managing Oracle Cloud Infrastructure (OCI) services. This server enables LLMs and MCP-compatible clients to securely interact with your Oracle Cloud account to manage compute instances, storage, identity, and databases.
๐ Features
- Standardized Authentication: Automatically integrates with your existing OCI CLI configuration (
~/.oci/config). - Identity & Access Management (IAM): Manage compartments and list users across your tenancy.
- Compute & Networking: View Virtual Cloud Networks (VCNs), list instances, fetch details, and execute lifecycle operations (START, STOP, RESET, SOFTRESET).
- Object Storage: Explore your tenancy's namespaces, list storage buckets, and view bucket objects.
- Database: Monitor and list your Autonomous Databases.
- Docker Ready: Fully containerized and optimized for secure isolation.
- Extensible Architecture: Designed with modularity in mind, allowing you to easily plug in any of the hundreds of other OCI services using the official
@oracle/oci-sdk.
๐ Prerequisites
Before running this MCP server, ensure you have the following set up:
- Oracle Cloud Account: An active OCI account.
- OCI CLI Configuration: You must have the Oracle Cloud CLI installed and configured on your machine.
- The default location is
~/.oci/config(Linux/Mac) orC:\Users\<YourUser>\.oci\config(Windows). - Tip: You can set this up using the
oci setup configcommand if you have the OCI CLI installed.
- The default location is
- Node.js: Node.js 18 or higher (if running locally without Docker).
- Docker: (Optional) If you prefer running the server in an isolated container.
๐ Installation & Setup
Option A: Running Locally (Node.js)
Clone/Navigate to the repository:
cd f:\MCP_Server\Oracle_cloud_MCP_serverInstall dependencies:
npm installBuild the TypeScript code:
npm run buildRun the server (for testing):
npm startNote: MCP servers communicate over
stdio, so running it directly in your terminal will make it wait for JSON-RPC inputs.
Option B: Running with Docker
Running with Docker requires mounting your local ~/.oci directory into the container so the server can authenticate using your credentials.
Build the Docker Image:
docker build -t oracle-cloud-mcp .Run the Docker Container:Replace
~/.ociwith the path to your OCI configuration folder.docker run -i -v ~/.oci:/root/.oci oracle-cloud-mcp
๐ Connecting to an MCP Client
To use this server, you must configure your MCP client (such as Claude Desktop, Cline, etc.) to spawn this process.
Example: Claude Desktop Configuration
Edit your claude_desktop_config.json:
For Local Node.js Execution:
{
"mcpServers": {
"oracle-cloud": {
"command": "node",
"args": [
"f:/MCP_Server/Oracle_cloud_MCP_server/dist/index.js"
]
}
}
}
For Docker Execution:
{
"mcpServers": {
"oracle-cloud": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"~/.oci:/root/.oci",
"oracle-cloud-mcp"
]
}
}
}
Note: The -i flag is required for interactive standard input (stdio) communication.
๐ ๏ธ Available MCP Tools
Once connected, the LLM will have access to the following tools:
Identity Services
oci_list_compartments: List all compartments in the tenancy. If nocompartmentIdis provided, it defaults to the root tenancy.oci_list_users: List all users within the specified compartment or the root tenancy.
Compute & Networking Services
oci_list_instances: List all compute instances inside a specificcompartmentId.oci_get_instance: Get detailed metadata about a specific compute instance using itsinstanceId.oci_instance_action: Execute lifecycle actions on an instance (e.g.,START,STOP,SOFTRESET,RESET,SOFTSTOP).oci_list_vcns: List all Virtual Cloud Networks (VCNs) in a givencompartmentId.
Object Storage Services
oci_get_namespace: Fetch the Object Storage namespace associated with your tenancy.oci_list_buckets: List all storage buckets within a specified namespace and compartment.oci_list_objects: List all objects (files) inside a specific bucket.
Database Services
oci_list_autonomous_databases: List all Autonomous Databases (ADW/ATP) within a specified compartment.
๐ Project Structure
Oracle_cloud_MCP_server/
โโโ src/
โ โโโ index.ts # Main MCP server entry point and tool definitions
โ โโโ auth/
โ โ โโโ auth.ts # OCI Authentication module
โ โโโ tool/ # Modular tool implementations
โ โโโ compute/index.ts # Compute and VCN APIs
โ โโโ database/index.ts # Autonomous Database APIs
โ โโโ identity/index.ts # Compartment and User APIs
โ โโโ objectstorage/index.ts # Bucket and Object APIs
โโโ dist/ # Compiled JavaScript output (generated)
โโโ Dockerfile # Docker container definition
โโโ .dockerignore # Excluded files for Docker build
โโโ .gitignore # Excluded files for Git tracking
โโโ package.json # Node.js dependencies and scripts
โโโ tsconfig.json # TypeScript compiler configuration
๐งฉ Extending the Server
Because Oracle Cloud has hundreds of services, this server is designed to be easily extensible. To add a new service (e.g., oci-dns):
- Install the SDK package:
npm install oci-dns - Create a new tool module: Create
src/tool/dns/index.ts. - Initialize the client: Import
getAuthProviderfrom../../auth/auth.jsand instantiate the DNS client. - Export your function: Write your async function calling the OCI API.
- Register the tool: In
src/index.ts, import your new module, add a tool definition in theListToolsRequestSchemahandler, and map the tool execution in theCallToolRequestSchemaswitch statement.
โ ๏ธ Troubleshooting
- Authentication Errors: If you see
Failed to initialize OCI Config File Provider, ensure that the OCI CLI is installed and configured. If running via Docker, verify that you correctly mounted the~/.ocifolder using-v. - Permission Errors: If you get a 404 or 401 error from the Oracle Cloud API, ensure the user profile configured in your
~/.oci/configfile has the correct IAM policies to read compartments, instances, etc. - No Compartment ID: Many OCI operations require a
compartmentId. The root compartment OCID is usually the same as your Tenancy OCID, which is defined in your~/.oci/configfile.
Built with Model Context Protocol and the Oracle Cloud Infrastructure Node.js SDK.