Repository containing MCP (Model Context Protocol) servers that provides a suite of tools for managing and interacting with Oracle products.
概览
Repository containing reference implementations of MCP (Model Context Protocol) servers for managing and interacting with Oracle products. Each MCP server under src/ may be written in a different programming language, demonstrating MCP’s language-agnostic approach. The Model Context Protocol (MCP) enables standardized, language-agnostic machine-to-machine workflows across data, models, and cloud resources. MCP servers implement specific tool suites, exposing them to MCP-compatible clients. - This repository is not intended for production use; servers are provided as reference and for exploration, prototyping, and learning. - Each src/ / directory represents a distinct MCP server, and these may use Python, Node.js, Java, or other languages.
README
Oracle MCP Server Repository
Repository containing reference implementations of MCP (Model Context Protocol) servers for managing and interacting with Oracle products. Each MCP server under src/ may be written in a different programming language, demonstrating MCP’s language-agnostic approach.
What is MCP?
The Model Context Protocol (MCP) enables standardized, language-agnostic machine-to-machine workflows across data, models, and cloud resources. MCP servers implement specific tool suites, exposing them to MCP-compatible clients.
Project Scope
-
Proof-of-concept/Reference implementations:
This repository is not intended for production use; servers are provided as reference and for exploration, prototyping, and learning. -
Polyglot architecture:
Eachsrc//directory represents a distinct MCP server, and these may use Python, Node.js, Java, or other languages.
Prerequisites
- Supported OS: Linux, macOS, or Windows (varies by server; check server README)
- Git (for cloning this repository)
- Internet access (for downloading dependencies)
- Cloud access: Some servers require Oracle Cloud Infrastructure (OCI) credentials and configuration (OCI docs)
Note:
Each MCP server has its own specific requirements (e.g., language runtime version, libraries).
Always see the respective src//README.md for detailed setup instructions.
Quick Start
Follow these instructions to get started as quickly as possible. Once finished, look here to set up your local development environment if you wish to contribute changes.
- Install
uvfrom here - Install python with
uv python install 3.13 - If you are using OCI servers, configure your OCI authentication
- Add desired servers to your MCP client configuration
Below is an example MCP client configuration for a typical python server
(For Node.js/Java/other servers, follow respective instructions in that server’s README)
For macOS/Linux:
{
"mcpServers": {
"oracle-oci-api-mcp-server": {
"command": "uvx",
"args": [
"oracle.oci-api-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}
To connect to an OCI MCP server running in HTTP streaming mode: Assuming you started the server by running:
ORACLE_MCP_HOST=127.0.0.1 ORACLE_MCP_PORT=8888 ORACLE_MCP_BASE_URL=http://127.0.0.1:8888 OCI_REGION=us-phoenix-1 IDCS_DOMAIN= IDCS_CLIENT_ID= IDCS_CLIENT_SECRET= IDCS_AUDIENCE= uvx oracle.oci-cloud-mcp-server
Register ${ORACLE_MCP_BASE_URL}/auth/callback as a redirect URI in the OCI IAM confidential application for the server.
then place the following in your MCP client configuration:
:warning: NOTE: the type attribute differs across MCP clients; some use http as the
transport value while others (like Cline) expect streamableHttp.
{
"mcpServers": {
"oracle-oci-cloud-mcp-server": {
"type": "streamableHttp",
"url": "http://127.0.0.1:8888/mcp"
}
}
}
oracle.oci-api-mcp-server is stdio-only. For OCI HTTP servers, IDCS_REQUIRED_SCOPES is optional; if unset, the default is openid profile email oci_mcp..invoke, where `` is the package name without oracle.oci- and -mcp-server, with - replaced by _. For example, oracle.oci-cloud-mcp-server defaults to openid profile email oci_mcp.cloud.invoke.
Running with podman
Some MCP servers in this repository support running via podman.
Installing podman
Use the following instructions to install and run podman
https://podman.io/docs/installation
Building the Container Image
You can build the container image using the following command. The command shows building the container image for the oci-api-mcp-server.
SUBDIRS=src/oci-api-mcp-server make containerize
The above command builds the container image tagged as oracle.oci-api-mcp-server:latest.
MCP Client Configuration
For examples of configuring MCP clients to run the server using podman, see the client-specific sections below. Configurations typically involve using podman run as the command, with appropriate flags and volume mounts for credentials if needed (e.g., mounting ~/.oci for OCI servers running over stdio transport).
Alternatively, if you want to use HTTP transport using the podman container, then start an OCI HTTP-capable MCP server using the following command and configure your client as mentioned in Quickstart section above.
podman run -e ORACLE_MCP_HOST=0.0.0.0 -e ORACLE_MCP_PORT=8888 -e ORACLE_MCP_BASE_URL=http://127.0.0.1:8888 -e OCI_REGION=us-phoenix-1 -e IDCS_DOMAIN= -e IDCS_CLIENT_ID= -e IDCS_CLIENT_SECRET= -e IDCS_AUDIENCE= -p 127.0.0.1:8888:8888 oracle.oci-cloud-mcp-server:latest
For local development, keep -p 127.0.0.1:8888:8888. Changing it to -p 8888:8888 exposes the server beyond localhost.
Authentication
For OCI MCP servers running over stdio transport:
- Install the OCI CLI
- Configure your OCI CLI profile
oci session authenticate --region= --tenancy-name=
where:
is the region you would like to authenticate in (e.g. `us-phoenix-1`) is the name of your OCI tenancy
Some MCP servers may not work with token-based authentication alone. See more about API key-based authentication here.
All stdio actions are performed with the permissions of the configured OCI CLI profile. We advise least-privilege IAM setup, secure credential management, safe network practices, secure logging, and warn against exposing secrets.
Remember to refresh the session once it expires with:
oci session authenticate --profile-name --region --auth security_token
`` is the profile that you set up in the steps above. You can view a list of your profiles by running cat ~/.oci/config on macOS/Linux if you forget which profile you have set up.
For OCI MCP servers running over HTTP transport, use an OCI IAM confidential application and set IDCS_DOMAIN, IDCS_CLIENT_ID, IDCS_CLIENT_SECRET, IDCS_AUDIENCE, ORACLE_MCP_BASE_URL, ORACLE_MCP_HOST, ORACLE_MCP_PORT, and OCI_REGION. Register ${ORACLE_MCP_BASE_URL}/auth/callback as a redirect URI in that application. HTTP requests run as the authenticated OCI IAM user and do not use the local OCI CLI profile for request authentication. IDCS_REQUIRED_SCOPES is optional; if unset, the server defaults to openid profile email oci_mcp..invoke. Create and grant that custom scope in your confidential application, or override it with IDCS_REQUIRED_SCOPES.
Client configuration
Each MCP server exposes endpoints that your client can connect to. To enable this connection, just add the relevant server to your MCP client’s configuration file. You can find the list of servers under the src folder.
Refer to the sections below for client-specific configuration instructions.
Cline
Cursor
MCPHost
Local development
This section will help you set up your environment to prepare it for local development if you wish to contribute changes.
-
Set up python virtual environment and install dev requirements
uv venv --python 3.13 --seed source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install -r requirements-dev.txt -
Locally build and install servers within the virtual environment
make build make install
Note: If you want to run commands in a single server project, you can add the project variable to only run commands for that specific project
For example: make project=oci-compute-mcp-server build will only build the compute mcp server
- Add desired servers to your MCP client configuration, but run them using the locally installed server package instead
Below is an example MCP client configuration for a typical python server using the local server package
(For Node.js/Java/other servers, follow respective instructions in that server’s README)
For macOS/Linux:
{
"mcpServers": {
"oracle-oci-api-mcp-server": {
"command": "uv",
"args": [
"run",
"oracle.oci-api-mcp-server"
],
"env": {
"VIRTUAL_ENV": "/mcp/.venv",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}
where `` is the absolute path to wherever you cloned this repo that will help point to the venv created above (e.g. /Users/myuser/dev/mcp/.venv)
Directory Structure
.
├── src/
│ ├── dbtools-mcp-server/ # MCP server (Python example)
│ ├── another-mcp-server/ # (Possible Node.js, Java, or other implementation)
│ └── ...
├── LICENSE.txt
├── README.md
├── CONTRIBUTING.md
└── SECURITY.md
Each server subdirectory includes its own README.md with language/runtime details, installation, and usage.
Testing
Testing with a Local Development MCP Server
You can modify the settings of your MCP client to run your local server. Open your client json settings file and update it as needed. For instance:
{
"mcpServers": {
"oracle-oci-api-mcp-server": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"oracle.oci-api-mcp-server"
],
"env": {
"VIRTUAL_ENV": "/oci-mcp/.venv",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}
where `` is the absolute path to the server code, for instance
/Users/myuser/dev/oci-mcp/src/oci-identity-mcp-server/oracle/oci_identity_mcp_server.
To build and test servers running in HTTP transport mode:
make build
make install
then start the server:
VIRTUAL_ENV=$(pwd)/.venv ORACLE_MCP_HOST=127.0.0.1 ORACLE_MCP_PORT=8888 uv run oracle.oci-api-mcp-server
Inspector
The Model Context Protocol (MCP) provides Inspector which is a developer tool for testing and debugging MCP servers. More information on Inspector can be found in the documentation.
The Inspector runs directly through npx without requiring installation. For instance, to inspect your locally developed server, you can run:
npx @modelcontextprotocol/inspector \
uv \
--directory \
run \
server.py
Inspector will run your server on localhost (for instance: http://127.0.0.1:6274) which should automatically open the tool for debugging and development.
Running tests
make lint
make test
Publishing
Publish & verify test packages
Publish packages to PyPI test registry:
UV_PUBLISH_TOKEN=$(cat /path/to/testpypi/token-file) make test-publish
Verify installation:
uv run --index=https://test.pypi.org/simple
example:
uv run --index=https://test.pypi.org/simple oracle.oci-api-mcp-server
Publish packages
[!IMPORTANT] NOTE: The
UV_PUBLISH_TOKENdiffers for Test PyPI and PyPI.
UV_PUBLISH_TOKEN=$(cat /path/to/pypi/token-file) make publish
Contributing
This project welcomes contributions from the community. Before submitting a pull request, please review our contribution guide.
Security
Please consult the security guide for our responsible security vulnerability disclosure process.
License
Copyright © 2025 Oracle and/or its affiliates.
Released under the Universal Permissive License v1.0 as shown at
.
Third-Party APIs
Developers choosing to distribute a binary implementation of this project are responsible for obtaining and providing all required licenses and copyright notices for the third-party code used in order to ensure compliance with their respective open source licenses.
Disclaimer
Users are responsible for their local environment and credential safety. Different language model selections may yield different results and performance.
安装
uvx oracle.oci-api-mcp-server@latest配置
{
"mcpServers": {
"oracle-oci-api-mcp-server": {
"command": "uvx",
"args": [
"oracle.oci-api-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}