Update Dockerfile and README for Oracle Database clarity and consistency

This commit is contained in:
Marcelo Ochoa 2025-06-13 09:59:14 -03:00
commit 31394acd9a
2 changed files with 17 additions and 11 deletions

View file

@ -21,4 +21,4 @@ WORKDIR /app
RUN npm ci --ignore-scripts --omit-dev RUN npm ci --ignore-scripts --omit-dev
ENTRYPOINT ["node", "dist/index.js"] ENTRYPOINT ["node", "dist/index.js"]

View file

@ -1,18 +1,18 @@
# Oracle # Oracle Database
A Model Context Protocol server that provides read-only access to Oracle databases. This server enables LLMs to inspect database schemas, execute and explain read-only queries. A Model Context Protocol server that provides read-only access to Oracle Database. This server enables LLMs to inspect database schemas, execute and explain read-only queries.
## Components ## Components
### Tools ### Tools
- **query** - **query**
- Execute read-only SQL queries against the connected database - Execute read-only SQL queries against the connected Oracle Database
- Input: `sql` (string): The SQL query to execute - Input: `sql` (string): The SQL query to execute
- All queries are executed within a READ ONLY transaction - All queries are executed within a READ ONLY transaction
- **explain** - **explain**
- Explain plan SQL queries against the connected database - Explain plan SQL queries against the connected Oracle Database
- Input: `sql` (string): The SQL query to execute - Input: `sql` (string): The SQL query to execute
- Requires GRANT SELECT_CATALOG_ROLE TO your_user; - Requires GRANT SELECT_CATALOG_ROLE TO your_user;
@ -21,14 +21,20 @@ A Model Context Protocol server that provides read-only access to Oracle databas
- Input: `name` (string): The table name - Input: `name` (string): The table name
- Table owner is equal to USER SQL function returning value - Table owner is equal to USER SQL function returning value
- **connect**
- Reconnect using new credentials
- Input: `connectionString` (string): SQLNet connect string for example host.docker.internal:1521/freepdb1
- Input: `user` (string): Username for example scott
- Input: `password` (string): Password, for example tiger
### Resources ### Resources
The server provides schema information for each table in the database current connected user: The server provides schema information for each table in the Oracle Database current connected user:
- **Table Schemas** (`oracle://USER/<table>/schema`) - **Table Schemas** (`oracle://USER/<table>/schema`)
- JSON schema information for each table - JSON schema information for each table
- Includes column names and data types - Includes column names and data types
- Automatically discovered from database metadata - Automatically discovered from Oracle Database metadata
## Usage with Claude Desktop ## Usage with Claude Desktop
@ -36,8 +42,8 @@ To use this server with the Claude Desktop app, add the following configuration
### Docker ### Docker
* when running docker on MacOS, use host.docker.internal if the server is running on the host network (eg localhost) * when running docker on macOS, use host.docker.internal if the server is running on the host network (eg localhost)
* username/password must be passed as environment variable * username/password must be passed as environment variables
```json ```json
{ {
@ -84,8 +90,8 @@ Replace `/freepdb1` with your database name.
### Demo Prompts ### Demo Prompts
Sample prompts using Oracle HR schema and Sample prompts using the Oracle Database sample HR schema and
[OracleFree 23c embedded RDBMS - Faststart - Docker Desktop Extension](https://open.docker.com/extensions/marketplace?extensionId=mochoa/oraclefree-docker-extension) . [Oracle Database 23ai Free embedded database - Faststart - Docker Desktop Extension](https://open.docker.com/extensions/marketplace?extensionId=mochoa/oraclefree-docker-extension) .
- query SELECT COUNTRY_NAME, CITY, COUNT(DEPARTMENT_ID) - query SELECT COUNTRY_NAME, CITY, COUNT(DEPARTMENT_ID)
FROM COUNTRIES JOIN LOCATIONS USING (COUNTRY_ID) JOIN DEPARTMENTS USING (LOCATION_ID)  FROM COUNTRIES JOIN LOCATIONS USING (COUNTRY_ID) JOIN DEPARTMENTS USING (LOCATION_ID)