Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
4d5c77e
Enabling keep alive and adding validation to ucp
aarrasseayoub01 Dec 17, 2025
a68b367
Adding admin tools ("create/edit tools" tool and "list tools" tool) +…
aarrasseayoub01 Jan 14, 2026
0a6be45
Supporting deleting tools and updating readme
aarrasseayoub01 Jan 20, 2026
be87b40
Supporting toolsets and custom toolsets
aarrasseayoub01 Jan 20, 2026
03f1fde
Merging
aarrasseayoub01 Jan 20, 2026
6c18342
add database tools to admin toolset and standardize tool naming
MouhsinElmajdouby Jan 20, 2026
e2f8493
enhance README
MouhsinElmajdouby Jan 21, 2026
015ff5b
Changing log analyzer toolset name
aarrasseayoub01 Jan 21, 2026
aa966e5
Introduce database-operator, rag, and mcp-admin toolsets and update docs
MouhsinElmajdouby Jan 26, 2026
1f5325c
use consistent tool listing pattern for MCP admin tools
MouhsinElmajdouby Jan 27, 2026
a04b4b6
Making DEMO.md about to build it yourself
aarrasseayoub01 Jan 28, 2026
263b05d
Merge branch 'oracle-db-mcp-toolkit' of https://github.com/Youssef-Er…
aarrasseayoub01 Jan 28, 2026
bda6cbb
Container deployment in DEMO.md
aarrasseayoub01 Jan 29, 2026
a553eb0
Priority to built-in tools
aarrasseayoub01 Feb 4, 2026
da41b08
Update MAVEN_VERSION value to 3.9.12
Youssef-Erradi Feb 4, 2026
e2d775f
Merge pull request #23 from Youssef-Erradi/demo-changes
jeandelavarene Feb 4, 2026
419f697
Merge pull request #24 from Youssef-Erradi/fix-maven-version-in-Docke…
jeandelavarene Feb 4, 2026
12f8003
Merge pull request #22 from Youssef-Erradi/custom-tools
jeandelavarene Feb 4, 2026
cd3bd8f
Merge branch 'oracle:main' into oracle-db-mcp-toolkit
Youssef-Erradi Feb 4, 2026
eb88406
Enable keepAliveInterval once every 60 seconds
Youssef-Erradi Feb 4, 2026
bddfb52
Merge pull request #25 from Youssef-Erradi/add-keep-alive
jeandelavarene Feb 4, 2026
c45ad15
Merge pull request #26 from Youssef-Erradi/oracle-db-mcp-toolkit
Youssef-Erradi Feb 5, 2026
cac5277
Change the MAVEN_BASE_URL arg to the archive.apache.org domain
Youssef-Erradi Feb 5, 2026
ff326e4
Merge pull request #27 from Youssef-Erradi/maven-base-url-in-docker
Youssef-Erradi Feb 5, 2026
303ddb8
Remove unused code and add missing JavaDoc
Youssef-Erradi Feb 5, 2026
f3590e9
fix similarity search tool name in the Javadoc
Youssef-Erradi Feb 5, 2026
7aad4f7
Merge pull request #28 from Youssef-Erradi/code-clean-up
jeandelavarene Feb 6, 2026
acac000
Merge branch 'oracle:main' into main
Youssef-Erradi Feb 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 76 additions & 39 deletions src/oracle-db-mcp-java-toolkit/DEMO.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

## 1.Overview

To test the capabilities of the Oracle Database MCP Toolkit, a demo instance of the MCP server is made available via
<https://mcptoolkit.orcl.dev:45453/mcp> with the following tools activated:
This document demonstrates how to try the Oracle Database MCP Toolkit by running your own instance of the MCP server.

The demo focuses on the following tools:

JDBC log analysis tools:

Expand All @@ -12,12 +13,12 @@ JDBC log analysis tools:
- **`get-jdbc-errors`**: Extracts all errors reported by both server and client.
- **`jdbc-log-comparison`**: Compares two log files for performance metrics, errors, and network information.

RDBMS/SQLNet trace analysis Tools:
RDBMS/SQLNet trace analysis tools:

- **`get-rdbms-errors`**: Extracts errors from RDBMS/SQLNet trace files.
- **`get-rdbms-packet-dumps`**: Extracts packet dumps for a specific connection ID.

Custom tools (created using YAML configuration file):
Custom tools (via YAML configuration):

- **`hotels-by-name`**: Returns the details of a hotel given its name. The details include the capacity, rating and address.
This tool is created using the following YAML configuration file:
Expand All @@ -40,33 +41,85 @@ tools:
statement: SELECT * FROM hotels WHERE name LIKE '%' || :name || '%'
```

Where `${db_url}`, `${user}` and `${password}`are environment variables.
Where `${db_url}`, `${user}` and `${password}` are environment variables.

## 2. Requirements

An MCP Client that support Streamable HTTP transport mode is needed, such as MCP Inspector, Cline or Claude Desktop.
- An MCP client that supports the Streamable HTTP transport (e.g., MCP Inspector, Cline, Claude Desktop). Stdio is also
supported by the server; see the README for details.
- A running MCP Toolkit server.

**Note**: If you're using Claude Desktop, you also need [mcp-remote](https://www.npmjs.com/package/mcp-remote).

## 3. Setup
## 3. Start a local MCP Toolkit server (HTTP example)

The deployed instance uses `streamableHttp` transport protocol and a runtime generated `Authorization` token.
You can run the server over HTTPS with authentication enabled. The token can be supplied via the
`ORACLE_DB_TOOLKIT_AUTH_TOKEN` environment variable or, if not set, it will be generated and printed to the logs (see README §4.4).

Use the following token `3e297077-f01e-4045-a9d0-2a71e97e6dfa`.
Example:

### MCP Inspector
```bash
java \
-Dtransport=http \
-Dhttps.port=45450 \
-DcertificatePath=/path/to/your-certificate.p12 \
-DcertificatePassword=yourPassword \
-DenableAuthentication=true \
-Dtools=get-jdbc-stats,get-jdbc-queries,get-jdbc-errors,jdbc-log-comparison,get-rdbms-errors,get-rdbms-packet-dumps \
-jar <path-to-jar>/oracle-db-mcp-toolkit-1.0.0.jar
```

This exposes the MCP endpoint at: `https://localhost:45450/mcp`.

When connecting from a client, include the token in the `Authorization` header as `Bearer YOUR_TOKEN`.

For additional deployment modes (including stdio and Docker/Podman) and OAuth2 configuration, see the project README.

### Run in a container (Podman)

The repository contains a Dockerfile you can use to build and run the server in a container.

1) Build the image (from the repo root):

```bash
podman build -t oracle-db-mcp-toolkit:1.0.0 .
```

2) Run the container with HTTPS and token auth (adjust paths and secrets for your environment):

```bash
podman run --name with_token_auth -d \
-p 45453:45453 \
-v /home/opc/jetty.p12:/app/jetty.p12:ro,z \
-v /home/opc/custom_tools/custom_tools.yaml:/app/custom_tools.yaml:ro,z \
-e JAVA_TOOL_OPTIONS="-Dtransport=http -Dhttps.port=45453 -DcertificatePath=/app/jetty.p12 -DcertificatePassword=CERTIF_PASSWORD -DenableAuthentication=true -Dtools=mcp-admin,log-analyzer,rag -DconfigFile=/app/custom_tools.yaml" \
-e ORACLE_DB_TOOLKIT_AUTH_TOKEN="3e297077-f01e-4045-a9d0-2a71e97e6dfa" \
oracle-db-mcp-toolkit:1.0.0
```

After the container starts, the MCP endpoint is available at:

https://localhost:45453/mcp

Notes:

To use MCP Inspector as an MCP client, specify `streamableHttp`as transport type, `https://mcptoolkit.orcl.dev:45453/mcp` as the URL, _Via Proxy_ as Connection Type,
for Authentication, add a `Authorization` custom header with `Bearer 3e297077-f01e-4045-a9d0-2a71e97e6dfa` as value.
the final configuration should look as shown below:
- The :z volume flag is commonly required on SELinux-enabled hosts (Podman). It is harmless elsewhere.
- For Docker, you can use the same command but omit :z on volume mounts.

## 4. Connect your MCP client

### MCP Inspector

<img src="https://objectstorage.eu-amsterdam-1.oraclecloud.com/n/axumz0amlzwj/b/oracle-db-toolkit-mcp-demo/o/mcp-Inspector-1.png" height="500px" width="auto" alt="MCP Inspector config screenshot">
Configure MCP Inspector with:

After checking the configuration, click the *Connect* button, and the available tools will be shown in the main section:
- Transport: `streamableHttp`
- URL: `https://localhost:45450/mcp`
- Connection Type: Via Proxy
- Authentication: Add a custom header `Authorization: Bearer YOUR_TOKEN`

<img src="https://objectstorage.eu-amsterdam-1.oraclecloud.com/n/axumz0amlzwj/b/oracle-db-toolkit-mcp-demo/o/mcp-Inspector-2.png" height="500px" width="auto" alt="MCP Inspector tools screenshot">
After saving, click Connect and the available tools will be listed.

_Note :_ The filePath should be provided as a URL.
_Note:_ For log analysis tools, provide `filePath` values as URLs where applicable.

### Cline

Expand All @@ -80,22 +133,14 @@ Add or merge this configuration into `cline_mcp_settings.json`:
"disabled": false,
"timeout": 60,
"type": "streamableHttp",
"url": "https://mcptoolkit.orcl.dev:45453/mcp",
"headers": {
"Authorization": "Bearer 3e297077-f01e-4045-a9d0-2a71e97e6dfa"
}
"url": "https://localhost:45450/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}
```

After saving the configuration file, the available tools will be shown in the *Configure* Tab of *MCP Servers* settings:

<img src="https://objectstorage.eu-amsterdam-1.oraclecloud.com/n/axumz0amlzwj/b/oracle-db-toolkit-mcp-demo/o/cline-1.png" height="500px" width="auto" alt="Cline tools screenshot">

Here's an example of a prompt that trigger the `get-jdbc-queries` tool:

<img src="https://objectstorage.eu-amsterdam-1.oraclecloud.com/n/axumz0amlzwj/b/oracle-db-toolkit-mcp-demo/o/cline-2.png" height="500px" width="auto" alt="Cline prompt example screenshot">
After saving, the tools will appear in the MCP Servers settings. You can then invoke tools like `get-jdbc-queries` by prompt.

### Claude Desktop

Expand All @@ -110,22 +155,14 @@ Below is an example of `claude_desktop_config.json` file:
"args": [
"-y",
"mcp-remote",
"https://mcptoolkit.orcl.dev:45453/mcp",
"https://localhost:45450/mcp",
"--header",
"Authorization:${DEMO_TOKEN}"
],
"env": {
"DEMO_TOKEN": "Bearer 3e297077-f01e-4045-a9d0-2a71e97e6dfa"
}
"env": { "DEMO_TOKEN": "Bearer YOUR_TOKEN" }
}
}
}
```

Upon saving the configuration file an opening Claude Desktop, you'll be to see the tools in the *Connectors* section:

<img src="https://objectstorage.eu-amsterdam-1.oraclecloud.com/n/axumz0amlzwj/b/oracle-db-toolkit-mcp-demo/o/claude-1.png" height="500px" width="auto" alt="Claude Desktop tools screenshot">

Here's the result of the same prompt used to know what queries were executed :

<img src="https://objectstorage.eu-amsterdam-1.oraclecloud.com/n/axumz0amlzwj/b/oracle-db-toolkit-mcp-demo/o/claude-2.png" height="500px" width="auto" alt="Claude Desktop prompt example screenshot">
Upon saving, open Claude Desktop and you should see the tools in the Connectors section.
4 changes: 2 additions & 2 deletions src/oracle-db-mcp-java-toolkit/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# ---------- 1) Build stage ----------
FROM container-registry.oracle.com/java/openjdk:17 AS builder

ARG MAVEN_VERSION=3.9.11
ARG MAVEN_BASE_URL=https://dlcdn.apache.org/maven/maven-3
ARG MAVEN_VERSION=3.9.12
ARG MAVEN_BASE_URL=https://archive.apache.org/dist/maven/maven-3

RUN curl -fsSL \
${MAVEN_BASE_URL}/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
Expand Down
Loading