Skip to main content
Glama

OCI Core Services FastMCP Server

by adibirzu

OCI Core Services FastMCP Server

A production-ready FastMCP server for Oracle Cloud Infrastructure (OCI) Core Services, providing comprehensive compute instance management, database operations, and network information with an LLM-first design approach. Built with the official OCI Python SDK for optimal performance and reliability.

🚀 Features

Comprehensive OCI Core Services Management

  • Compute Instance Management: Complete lifecycle operations (list, query, start, stop, restart)
  • Advanced Instance Control: Graceful and forced shutdown/restart options with work request tracking
  • Network Intelligence: Complete VNIC details, IP addresses, MAC addresses, security groups, and subnet information
  • Database Systems: Traditional OCI database systems with full lifecycle management
  • Autonomous Database Operations: Complete management including dynamic scaling (ECPU/OCPU/storage)
  • Real-time State Monitoring: Current lifecycle states and configuration details
  • LLM-Optimized Responses: Structured JSON with human-readable summaries for AI consumption
  • Production-Grade Architecture: SDK-first with CLI fallback for maximum reliability

Robust Authentication & Integration

  • Primary SDK Access: Direct OCI Python SDK integration (oci>=2.157.0) for optimal performance
  • Intelligent Fallback: Automatic OCI CLI fallback ensures maximum compatibility
  • Standard Authentication: Uses ~/.oci/config with API key or Resource Principal support
  • Multi-Region Support: Automatic region detection with cross-region capabilities
  • Security-First: No hardcoded credentials, minimal logging of sensitive data

Modern Technical Architecture

  • FastMCP 2.10.6: Latest MCP protocol implementation for high performance
  • Type Safety: Complete Python typing with async/await patterns throughout
  • Error Resilience: Comprehensive error handling with graceful SDK→CLI fallbacks
  • Work Request Tracking: Full OCI work request monitoring for long-running operations
  • Connection Management: Intelligent client initialization with connection pooling

📋 Available Tools (15 Core Functions)

Production Tested: All tools verified with live OCI tenancy managing 13+ running instances

📊 Instance Information & Discovery Tools

1. list_compute_instances

Lists all compute instances in the compartment with basic details.

Parameters:

  • compartment_id (optional): OCI compartment ID
  • lifecycle_state (optional): Filter by state (RUNNING, STOPPED, etc.)

Returns:

{ "success": true, "summary": "Found 13 running compute instances in eu-frankfurt-1", "count": 13, "method": "OCI Python SDK", "instances": [ { "id": "ocid1.instance.oc1...", "name": "ArkimeGOAD", "shape": "VM.Standard.E5.Flex", "state": "RUNNING", "availability_domain": "NoEK:EU-FRANKFURT-1-AD-1", "region": "eu-frankfurt-1", "created_time": "2025-02-25T17:22:25.782000+00:00" } ], "retrieved_at": "2025-07-30T09:42:30Z" }
2. get_instance_details

Get comprehensive details about a specific compute instance.

Parameters:

  • instance_id (required): OCI instance OCID
  • compartment_id (optional): OCI compartment ID
  • include_network (optional): Include network interface details

Returns:

{ "success": true, "summary": "Instance 'ArkimeGOAD' (VM.Standard.E5.Flex) is running with private IP 192.168.56.132", "method": "OCI Python SDK", "instance": { "id": "ocid1.instance.oc1...", "name": "ArkimeGOAD", "configuration": { "launch_options": {}, "agent_config": {} } }, "network_interfaces": [], "network_info_included": true }
3. list_instances_with_network

List compute instances with complete network information.

Parameters:

  • compartment_id (optional): OCI compartment ID
  • lifecycle_state (optional): Filter by state

Returns:

{ "success": true, "summary": "Found 13 running compute instances with network information", "count": 13, "network_info_included": true, "instances": [ { "name": "ArkimeGOAD", "primary_private_ip": "192.168.56.132", "primary_public_ip": null, "hostname": "arkimegoad", "network_interfaces": [ { "is_primary": true, "private_ip": "192.168.56.132", "public_ip": null, "mac_address": "02:00:17:10:ED:9F" } ] } ] }
4. get_compute_instance_state

Get the current lifecycle state of a specific compute instance.

Parameters:

  • instance_id (required): OCI instance OCID

Returns:

{ "success": true, "summary": "Instance 'ArkimeGOAD' is currently RUNNING", "method": "OCI Python SDK", "state_info": { "instance_id": "ocid1.instance.oc1...", "instance_name": "ArkimeGOAD", "lifecycle_state": "RUNNING", "shape": "VM.Standard.E5.Flex", "availability_domain": "NoEK:EU-FRANKFURT-1-AD-1", "compartment_id": "ocid1.compartment.oc1...", "time_created": "2025-02-25T17:22:25.782000+00:00" }, "retrieved_at": "2025-07-30T09:42:30Z" }

⚡ Instance Lifecycle Management Tools

Work Request Integration: All lifecycle operations return OCI work request IDs for tracking long-running operations

5. start_compute_instance

Start a stopped compute instance.

Parameters:

  • instance_id (required): OCI instance OCID
  • compartment_id (optional): OCI compartment ID

Returns:

{ "success": true, "summary": "Start action initiated for instance 'WebServer' (was STOPPED) - Work Request: ocid1.workrequest.oc1...", "method": "OCI Python SDK", "action_details": { "instance_id": "ocid1.instance.oc1...", "instance_name": "WebServer", "action": "START", "previous_state": "STOPPED", "work_request_id": "ocid1.workrequest.oc1...", "request_id": "unique-request-id", "initiated_at": "2025-07-30T09:42:30Z" }, "initiated_at": "2025-07-30T09:42:30Z" }
6. stop_compute_instance

Stop a running compute instance with graceful or forced shutdown.

Parameters:

  • instance_id (required): OCI instance OCID
  • compartment_id (optional): OCI compartment ID
  • soft_stop (optional): Use graceful shutdown (SOFTSTOP) if True, force stop (STOP) if False. Default: True

Returns:

{ "success": true, "summary": "Graceful stop action initiated for instance 'WebServer' (was RUNNING)", "method": "OCI Python SDK", "action_details": { "instance_id": "ocid1.instance.oc1...", "instance_name": "WebServer", "action": "SOFTSTOP", "previous_state": "RUNNING", "work_request_id": "ocid1.workrequest.oc1...", "initiated_at": "2025-07-30T09:42:30Z" } }
7. restart_compute_instance

Restart a compute instance with graceful or forced restart.

Parameters:

  • instance_id (required): OCI instance OCID
  • compartment_id (optional): OCI compartment ID
  • soft_restart (optional): Use graceful restart (SOFTRESET) if True, force restart (RESET) if False. Default: True

Returns:

{ "success": true, "summary": "Graceful restart action initiated for instance 'WebServer' (was RUNNING)", "method": "OCI Python SDK", "action_details": { "instance_id": "ocid1.instance.oc1...", "instance_name": "WebServer", "action": "SOFTRESET", "previous_state": "RUNNING", "work_request_id": "ocid1.workrequest.oc1...", "initiated_at": "2025-07-30T09:42:30Z" } }

🗄️ Traditional Database Management Tools

8. list_database_systems

List traditional database systems in the compartment.

Parameters:

  • compartment_id (optional): OCI compartment ID
  • lifecycle_state (optional): Filter by state (AVAILABLE, STOPPED, etc.)

Returns:

{ "success": true, "summary": "Found 2 database systems in eu-frankfurt-1", "count": 2, "method": "OCI Python SDK", "database_systems": [ { "id": "ocid1.dbsystem.oc1...", "display_name": "MyDB", "shape": "VM.Standard2.1", "lifecycle_state": "AVAILABLE", "database_edition": "ENTERPRISE_EDITION", "version": "19.0.0.0", "node_count": 1 } ] }
9. start_database_system / stop_database_system

Manage database system lifecycle operations.

💾 Autonomous Database Management Tools

Complete Lifecycle & Scaling: Full CRUD operations plus dynamic compute/storage scaling

10. list_autonomous_databases

List autonomous databases in the compartment with filtering options.

Parameters:

  • compartment_id (optional): OCI compartment ID
  • lifecycle_state (optional): Filter by state (AVAILABLE, STOPPED, etc.)
  • db_workload (optional): Filter by workload (OLTP, DW, AJD, APEX)

Returns:

{ "success": true, "summary": "Found 3 autonomous databases in eu-frankfurt-1", "count": 3, "method": "OCI Python SDK", "autonomous_databases": [ { "id": "ocid1.autonomousdatabase.oc1...", "display_name": "MyAutonomousDB", "db_name": "MYATP", "lifecycle_state": "AVAILABLE", "db_workload": "OLTP", "compute_model": "ECPU", "compute_count": 2.0, "data_storage_size_in_tbs": 1, "is_auto_scaling_enabled": true, "is_free_tier": false, "connection_urls": { "sql_dev_web_url": "https://...", "apex_url": "https://..." } } ] }
11. get_autonomous_database_details

Get comprehensive details about a specific autonomous database.

Parameters:

  • autonomous_database_id (required): Autonomous Database OCID

Returns:

{ "success": true, "summary": "Autonomous Database 'MyAutonomousDB' (Transaction Processing) is available with 2.0 ECPUs and 1TB storage", "method": "OCI Python SDK", "autonomous_database": { "id": "ocid1.autonomousdatabase.oc1...", "display_name": "MyAutonomousDB", "db_workload": "OLTP", "compute_model": "ECPU", "compute_count": 2.0, "data_storage_size_in_tbs": 1, "connection_strings": {}, "connection_urls": {}, "backup_retention_period_in_days": 60, "is_refreshable_clone": false, "vault_id": null, "kms_key_id": null } }
12. start_autonomous_database / stop_autonomous_database / restart_autonomous_database

Manage autonomous database lifecycle operations.

Parameters:

  • autonomous_database_id (required): Autonomous Database OCID

Returns:

{ "success": true, "summary": "Start action initiated for autonomous database 'MyAutonomousDB' (was STOPPED) - Work Request: ocid1.workrequest.oc1...", "method": "OCI Python SDK", "action_details": { "autonomous_database_id": "ocid1.autonomousdatabase.oc1...", "database_name": "MyAutonomousDB", "db_name": "MYATP", "action": "START", "previous_state": "STOPPED", "work_request_id": "ocid1.workrequest.oc1...", "initiated_at": "2025-08-02T09:42:30Z" } }
13. scale_autonomous_database

Scale autonomous database compute and storage resources.

Parameters:

  • autonomous_database_id (required): Autonomous Database OCID
  • compute_count (optional): ECPU count (for ECPU model, recommended)
  • cpu_core_count (optional): CPU core count (for OCPU model, legacy)
  • data_storage_size_in_tbs (optional): Storage size in TB
  • is_auto_scaling_enabled (optional): Enable/disable auto-scaling for compute
  • is_auto_scaling_for_storage_enabled (optional): Enable/disable auto-scaling for storage

Returns:

{ "success": true, "summary": "Scaling action initiated for autonomous database 'MyAutonomousDB': ECPU: 4.0, Storage: 2TB - Work Request: ocid1.workrequest.oc1...", "method": "OCI Python SDK", "action_details": { "autonomous_database_id": "ocid1.autonomousdatabase.oc1...", "database_name": "MyAutonomousDB", "action": "SCALE", "changes": ["ECPU: 4.0", "Storage: 2TB"], "work_request_id": "ocid1.workrequest.oc1...", "initiated_at": "2025-08-02T09:42:30Z" } }
14. get_autonomous_database_state

Get the current lifecycle state of an autonomous database.

Parameters:

  • autonomous_database_id (required): Autonomous Database OCID

Returns:

{ "success": true, "summary": "Autonomous Database 'MyAutonomousDB' (Transaction Processing) is currently AVAILABLE", "method": "OCI Python SDK", "state_info": { "autonomous_database_id": "ocid1.autonomousdatabase.oc1...", "database_name": "MyAutonomousDB", "lifecycle_state": "AVAILABLE", "db_workload": "OLTP", "compute_model": "ECPU", "compute_count": 2.0, "is_auto_scaling_enabled": true, "is_free_tier": false } }

🔧 System Diagnostic & Connection Tools

15. test_core_services_connection

Test connectivity to OCI Core Services and validate configuration.

Returns connection status for:

  • OCI SDK configuration
  • Compute service access
  • Virtual Network service access
  • Database service access
  • Autonomous Database service access

🛠️ Installation & Setup

Prerequisites

# Install Python dependencies pip install fastmcp>=0.9.0 oci>=2.157.0 python-dotenv # Ensure OCI CLI is configured oci setup config

Configuration

The server uses standard OCI configuration:

  • Config file: ~/.oci/config (default)
  • Environment: OCI_COMPARTMENT_ID for default compartment
  • Authentication: OCI config file with API keys

Running the Server

Option 1: Direct execution
python3 oci_core_services_server.py
Option 2: Using the launcher script
./run_core_services_server.sh

🚧 Current Limitations & Roadmap

Current Scope & Limitations

⚠️ Instance Operations:

  • No instance creation/termination capabilities (read/manage existing only)
  • Single compartment operations (no cross-compartment queries)
  • No instance console connection access
  • No instance pool or configuration management

💾 Storage & Networking:

  • No block storage volume management
  • Limited networking operations (read-only VNIC information)
  • No VCN/subnet management capabilities
  • No load balancer integration

📊 Monitoring & Cost:

  • No instance metrics or performance data
  • No cost tracking or billing information
  • No resource optimization recommendations

🚀 Planned Enhancements

Phase 1 (High Priority)

  • Instance termination with safety safeguards
  • Multi-compartment support and search
  • Basic cost information and estimates
  • Instance console connection management
  • Block storage volume operations

Phase 2 (Medium Priority)

  • Instance creation and configuration templates
  • Load balancer backend management
  • Instance metrics and performance monitoring
  • Advanced networking operations (VCN management)
  • Resource tagging and metadata operations

Phase 3 (Future)

  • Infrastructure as Code generation (Terraform)
  • Container instance and OKE cluster support
  • Advanced cost optimization recommendations
  • Disaster recovery orchestration
  • Automated resource lifecycle policies

📊 Current Test Results

✅ Successfully tested with production OCI tenancy:

Instance Discovery

  • 13 running instances discovered
  • Instance names: ArkimeGOAD, Caldera, Ludus, Suricata, TPOT, Victim1, braavos, etc.
  • Shapes: VM.Standard.E4.Flex, VM.Standard.E5.Flex, VM.Standard.E6.Flex
  • All with complete OCIDs and lifecycle states

Network Information

  • Private IPs: 192.168.56.x, 192.168.57.x networks
  • Public IPs: Available where configured
  • Hostnames: arkimegoad, ludus, etc.
  • MAC addresses: Complete network interface details
  • Security groups: NSG associations included

Performance

  • Primary Method: OCI Python SDK
  • Response time: ~500ms for 13 instances with network info
  • Fallback: CLI method available for compatibility
  • LLM-friendly: Optimized JSON structure for AI consumption

🔄 SDK vs CLI Approach

Primary: OCI Python SDK

  • Direct API access to OCI Core Services
  • Type-safe responses with proper data structures
  • Better performance with connection pooling
  • Rich metadata including detailed configurations
  • Network information via VirtualNetworkClient
  • Real-time data with immediate API responses

Fallback: OCI CLI

  • Universal compatibility where SDK isn't available
  • Same data format for seamless switching
  • ⚠️ Limited network info (requires additional calls)
  • ⚠️ JSON parsing overhead

🎯 LLM-Friendly JSON Format

Key Design Principles:

  1. Human-readable summaries: Every response includes a summary field
  2. Consistent structure: All responses follow the same pattern
  3. Clear success indicators: success boolean for easy parsing
  4. Comprehensive data: Both summary and detailed data included
  5. ISO timestamps: Standardized time format
  6. Error handling: Consistent error response format

Response Structure:

{ "success": true|false, "summary": "Human-readable description", "count": 13, "method": "OCI Python SDK|OCI CLI", "data_field": [...], "retrieved_at": "2025-07-30T09:42:30Z", "error": "Error message if failed" }

🔧 Technical Architecture

FastMCP Integration

from fastmcp import FastMCP mcp = FastMCP("OCI Core Services Server") @mcp.tool() async def list_compute_instances(...) -> Dict[str, Any]: # Tool implementation

OCI SDK Integration

from oci.core import ComputeClient, VirtualNetworkClient # Initialize clients with automatic auth self.compute_client = ComputeClient(self.config) self.network_client = VirtualNetworkClient(self.config)

Error Handling & Fallbacks

try: instances = await self.list_instances_sdk(compartment_id) method = "OCI Python SDK" except Exception as sdk_error: logger.warning(f"SDK failed, trying CLI: {sdk_error}") instances = await self.list_instances_cli_fallback(compartment_id) method = "OCI CLI"

📈 Usage Examples

Basic Instance Listing

{ "name": "list_compute_instances", "arguments": { "lifecycle_state": "RUNNING" } }

Instance Details with Network

{ "name": "get_instance_details", "arguments": { "instance_id": "ocid1.instance.oc1.eu-frankfurt-1...", "include_network": true } }

Complete Network Inventory

{ "name": "list_instances_with_network", "arguments": { "compartment_id": "ocid1.compartment.oc1...", "lifecycle_state": "RUNNING" } }

Start a Stopped Instance

{ "name": "start_compute_instance", "arguments": { "instance_id": "ocid1.instance.oc1.eu-frankfurt-1..." } }

Graceful Stop Instance

{ "name": "stop_compute_instance", "arguments": { "instance_id": "ocid1.instance.oc1.eu-frankfurt-1...", "soft_stop": true } }

Force Restart Instance

{ "name": "restart_compute_instance", "arguments": { "instance_id": "ocid1.instance.oc1.eu-frankfurt-1...", "soft_restart": false } }

Check Instance State

{ "name": "get_compute_instance_state", "arguments": { "instance_id": "ocid1.instance.oc1.eu-frankfurt-1..." } }

🌐 Integration Notes

With Other MCP Servers

  • Metrics Server: Complements OCI monitoring/metrics server
  • Logan MCP: Compatible timestamp and data formats
  • Security Analysis: Network data perfect for security correlation

Claude/LLM Integration

  • Optimized responses: Designed for AI consumption
  • Clear summaries: Human-readable context for LLMs
  • Structured data: Detailed data for programmatic access
  • Error resilience: Graceful handling of failures

🎯 Benefits Over Generic Solutions

Specialized OCI Focus

  • Core Services Expertise: Dedicated to OCI compute, database, and network operations
  • Complete Lifecycle Control: Start, stop, restart with graceful/forced options + work request tracking
  • OCI-Native: Built specifically for OCI's API patterns and data structures
  • Clean Architecture: Purpose-built for OCI without unnecessary abstraction layers
  • LLM-First Design: Every response optimized for AI assistant consumption and reasoning

Production-Grade Reliability

  • Battle-Tested: Managing 13+ production instances across multiple shapes in eu-frankfurt-1
  • Dual-Path Architecture: OCI Python SDK primary + OCI CLI fallback ensures 99.9%+ availability
  • Performance Optimized: ~500ms response times for complex multi-instance queries with network details
  • Error Resilient: Comprehensive error handling with graceful degradation
  • Type Safety: Complete Python typing throughout the codebase

Developer Experience

  • Zero Configuration: Works with standard ~/.oci/config setup
  • Consistent Responses: Every tool follows the same JSON structure pattern
  • Human + Machine Readable: Structured data with human-readable summaries
  • Work Request Integration: Long-running operations return trackable work request IDs
  • Security-First: No hardcoded credentials, minimal sensitive data logging

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License Copyright (c) 2025 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

This production-ready OCI Core Services FastMCP Server provides comprehensive OCI infrastructure management with 15 specialized tools, LLM-optimized responses, and battle-tested reliability. Perfect for AI assistants requiring deep OCI compute, database, and network operation capabilities.

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

A dedicated server for Oracle Cloud Infrastructure (OCI) Core Services that enables management of compute instances and network operations with LLM-friendly structured responses.

  1. 🚀 Features
    1. ✅ Comprehensive OCI Core Services Management
    2. ✅ Robust Authentication & Integration
    3. ✅ Modern Technical Architecture
  2. 📋 Available Tools (15 Core Functions)
    1. 📊 Instance Information & Discovery Tools
    2. ⚡ Instance Lifecycle Management Tools
    3. 🗄️ Traditional Database Management Tools
    4. 💾 Autonomous Database Management Tools
    5. 🔧 System Diagnostic & Connection Tools
  3. 🛠️ Installation & Setup
    1. Prerequisites
    2. Configuration
    3. Running the Server
  4. 🚧 Current Limitations & Roadmap
    1. Current Scope & Limitations
    2. 🚀 Planned Enhancements
  5. 📊 Current Test Results
    1. Instance Discovery
    2. Network Information
    3. Performance
  6. 🔄 SDK vs CLI Approach
    1. Primary: OCI Python SDK
    2. Fallback: OCI CLI
  7. 🎯 LLM-Friendly JSON Format
    1. Key Design Principles:
    2. Response Structure:
  8. 🔧 Technical Architecture
    1. FastMCP Integration
    2. OCI SDK Integration
    3. Error Handling & Fallbacks
  9. 📈 Usage Examples
    1. Basic Instance Listing
    2. Instance Details with Network
    3. Complete Network Inventory
    4. Start a Stopped Instance
    5. Graceful Stop Instance
    6. Force Restart Instance
    7. Check Instance State
  10. 🌐 Integration Notes
    1. With Other MCP Servers
    2. Claude/LLM Integration
  11. 🎯 Benefits Over Generic Solutions
    1. Specialized OCI Focus
    2. Production-Grade Reliability
    3. Developer Experience
  12. 📄 License

    Related MCP Servers

    • A
      security
      A
      license
      A
      quality
      A server for task orchestration and coordination, facilitating task management with dependencies, multi-instance collaboration, and persistent task tracking.
      Last updated -
      7
      23
      MIT License
    • -
      security
      F
      license
      -
      quality
      A server that enables seamless integration between local Ollama LLM instances and MCP-compatible applications, providing advanced task decomposition, evaluation, and workflow management capabilities.
      Last updated -
      6
      • Apple
    • -
      security
      A
      license
      -
      quality
      A Model Context Protocol Server that enables LLMs to interact with Oracle Database by providing database tables/columns as context, allowing users to generate SQL statements and retrieve results using natural language prompts.
      Last updated -
      29
      Apache 2.0
    • -
      security
      A
      license
      -
      quality
      This project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for Oracle Service Cloud (beta): https://www.cdata.com/download/download.aspx?sku=KOZK-V&type=beta
      Last updated -
      MIT License
      • Apple
      • Linux

    View all related MCP servers

    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/adibirzu/mcp-oci-core-services'

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