OCI MCP Server
An MCP server that exposes Oracle Cloud Infrastructure (OCI) control plane to LLM clients, enabling management of compute, networking, storage, databases, and more through natural language.
README
OCI MCP Server
Created and maintained by Sarthak Pansare · open-source under Apache-2.0
Drive Oracle Cloud Infrastructure from any MCP-aware LLM client.
A Model Context Protocol server that exposes the OCI control plane — compute, networking, storage, databases, Kubernetes (OKE), load balancers, KMS vaults, functions, monitoring, and cross-service search — to any LLM tool that speaks MCP: Claude Code, Claude Desktop, Cursor, Codex CLI, Continue, VS Code, Zed, Antigravity, and others.
Token-efficient by design: one-line tool descriptions, compact summaries, pagination defaults, null-stripped responses.
What you can do
> Deploy a public web server called demo using my SSH key.
> Show me every resource in compartment XYZ grouped by type.
> Create a flexible Load Balancer fronting subnets A and B.
> List my OKE clusters and their kubernetes versions.
> Summarize CpuUtilization on instance ocid1.instance... for the last hour.
> Tear down the VCN we just created and the instance attached to it.
Tool surface (50+ tools across 12 modules)
| Module | Highlights |
|---|---|
iam |
whoami, health_check, list_compartments, list_users, list_availability_domains, list_regions |
compute |
list/get/launch/action/terminate instances, list_images, list_shapes, list_instance_vnics |
networking |
VCNs, subnets, internet/NAT/service gateways, route tables, security lists |
storage |
Object Storage buckets, list_objects, block volumes |
database |
DB Systems, Autonomous DB |
loadbalancer |
Load Balancer + Network Load Balancer (create/list/delete) |
oke |
OKE clusters, node pools (Container Engine for Kubernetes) |
vault |
KMS vaults + keys (read) |
functions |
Applications + functions (read) |
monitoring |
Alarms, metric definitions, metric summaries (MQL) |
search |
find_resources across every OCI resource type |
composite |
deploy_web_server (full stack in one shot), teardown_stack |
Install
1. Prerequisites
- Python 3.10+
uv(recommended) orpip- An OCI account (cloud.oracle.com — Always-Free tier works)
2. Configure OCI credentials
In the OCI Console: avatar → My profile → API keys → Add API key → Generate API key pair.
Save the files:
~/.oci/oci_api_key.pem # private key
~/.oci/config # config (paste the snippet from the console)
Example ~/.oci/config:
[DEFAULT]
user=ocid1.user.oc1..xxxx
fingerprint=aa:bb:cc:...
tenancy=ocid1.tenancy.oc1..xxxx
region=us-ashburn-1
key_file=~/.oci/oci_api_key.pem
3. Clone + install
git clone https://github.com/sarthak-pansare/oci-mcp-server
cd oci-mcp-server
uv sync
Connect to your LLM client
The server is a standard MCP server that speaks stdio by default. Most clients only need a small JSON snippet.
Claude Code (CLI)
claude mcp add oci -s user -- uv --directory /absolute/path/to/oci-mcp-server run oci-mcp-server
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"oci": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/oci-mcp-server", "run", "oci-mcp-server"]
}
}
}
Cursor
Settings → MCP → + Add new MCP server:
{
"mcpServers": {
"oci": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/oci-mcp-server", "run", "oci-mcp-server"]
}
}
}
Codex CLI
Edit ~/.codex/config.toml:
[mcp_servers.oci]
command = "uv"
args = ["--directory", "/absolute/path/to/oci-mcp-server", "run", "oci-mcp-server"]
Continue (VS Code / JetBrains)
In your .continue/config.yaml:
mcpServers:
- name: oci
command: uv
args: ["--directory", "/absolute/path/to/oci-mcp-server", "run", "oci-mcp-server"]
VS Code (native MCP)
In .vscode/mcp.json:
{
"servers": {
"oci": {
"type": "stdio",
"command": "uv",
"args": ["--directory", "/absolute/path/to/oci-mcp-server", "run", "oci-mcp-server"]
}
}
}
Zed
In ~/.config/zed/settings.json:
{
"context_servers": {
"oci": {
"command": {
"path": "uv",
"args": ["--directory", "/absolute/path/to/oci-mcp-server", "run", "oci-mcp-server"]
}
}
}
}
Antigravity / generic MCP clients
Any client that supports stdio MCP can launch:
command: uv
args: ["--directory", "/abs/path/to/oci-mcp-server", "run", "oci-mcp-server"]
Remote mode (HTTP/SSE)
For shared deployments or web-based clients:
uv run oci-mcp-server --transport sse --host 0.0.0.0 --port 3000
# or
uv run oci-mcp-server --transport streamable-http --host 0.0.0.0 --port 3000
Put it behind an authenticating reverse proxy. See SECURITY.md.
Docker
docker build -t oci-mcp-server .
docker run --rm -p 3000:3000 \
-v ~/.oci:/root/.oci:ro \
-e OCI_MCP_TRANSPORT=sse \
oci-mcp-server
Configuration
| Env var | Purpose | Default |
|---|---|---|
OCI_CONFIG_FILE |
Override OCI config path | ~/.oci/config |
OCI_PROFILE |
Config profile name | DEFAULT |
OCI_REGION |
Override region from config | (from file) |
OCI_MCP_TRANSPORT |
stdio | sse | streamable-http |
stdio |
OCI_MCP_HOST |
Host for HTTP/SSE transports | 127.0.0.1 |
OCI_MCP_PORT |
Port for HTTP/SSE transports | 3000 |
OCI_MCP_ENABLE |
Comma-separated module list, or all |
all |
Reduce token surface further
If you only need a subset of OCI services, register fewer tools — every tool's description is sent to the LLM on every turn:
uv run oci-mcp-server --enable iam,compute,networking,composite
Token-efficiency strategy
Designed to minimize the cost of using OCI tools with an LLM:
- One-line docstrings. Every tool's description fits on a single line. Across all 50+ tools the schema fits in roughly 2 000 tokens.
- Compact summaries by default.
list_*calls return{id, name, state, ...}— not the full SDK object. Useverbose=Trueorget_*for full detail. - Pagination + limits. Every list call defaults to
limit=50(max 200) and accepts apagetoken. - Null-stripping.
None/ empty fields are removed from every response. - Module gating.
--enablelets users register only the services they need.
Smoke test
After installing and restarting your client:
1. Run mcp__oci__whoami → confirms credentials work
2. Run mcp__oci__list_regions → confirms network path
3. Run mcp__oci__find_resources query: "query all resources"
For a full end-to-end deployment:
Deploy a web server called demo with this SSH key: ssh-ed25519 AAAAC3...
Roadmap
- v0.2: Logging, DNS, Events, Notifications, Streaming, Vault crypto, full Tagging UX
- v0.3: Instance-principal / resource-principal auth, work-request polling helpers
- v0.4: Terraform-style diffs, cost estimation tool, multi-region fan-out
Contributing
See CONTRIBUTING.md. PRs welcome.
Author
Sarthak Pansare — @sarthak-pansare
If this project saves you time, a ⭐ on the GitHub repo is appreciated.
License
Apache-2.0 — see LICENSE. Copyright © 2026 Sarthak Pansare.
Acknowledgements
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.