Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
284 commits
Select commit Hold shift + click to select a range
d44542b
md updates, image updates
chrishoina Jul 27, 2022
5fed909
updates to paths task
chrishoina Jul 28, 2022
f6ba008
md and image updates
chrishoina Jul 28, 2022
862f021
updates to images and md
chrishoina Jul 29, 2022
9662c9e
updates to images and md
chrishoina Jul 29, 2022
7b419f3
Set theme jekyll-theme-minimal
chrishoina Jul 29, 2022
a278dbb
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 1, 2022
7e73a6a
WMSID 4602 updates
chrishoina Aug 1, 2022
5a61a49
Update _config.yml
chrishoina Aug 1, 2022
59b5227
Update manifest.json
chrishoina Aug 1, 2022
2583141
Update manifest.json
chrishoina Aug 1, 2022
3f47b1e
requested changes
chrishoina Aug 2, 2022
a0397ef
Merge branch 'main' of https://github.com/chrishoina/developer
chrishoina Aug 2, 2022
6668a87
Delete _config.yml
chrishoina Aug 2, 2022
888f325
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 2, 2022
f838fef
WMS ID 4602
chrishoina Aug 2, 2022
2122bbb
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 4, 2022
ca7fd6a
WMS ID 11130 updates
chrishoina Aug 4, 2022
0cab125
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 5, 2022
338b502
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 8, 2022
8ab851d
Updates to lab
chrishoina Aug 8, 2022
4a77c54
updates to lab
chrishoina Aug 8, 2022
12c33cd
updates to new lab
chrishoina Aug 10, 2022
4999aa1
updates to new lab
chrishoina Aug 10, 2022
a56292a
updates to labs
chrishoina Aug 11, 2022
264328d
updates to labs
chrishoina Aug 11, 2022
56c0db7
uppdates to images
chrishoina Aug 12, 2022
0e4314f
manifest doc updates, image updates.
chrishoina Aug 12, 2022
59077e4
manifest doc updates, image updates.
chrishoina Aug 12, 2022
1605c14
manifest changes
chrishoina Aug 12, 2022
03c2531
manifest
chrishoina Aug 12, 2022
879cf4a
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 17, 2022
c44b3f2
lab updates
chrishoina Aug 23, 2022
64409a6
lab updates
chrishoina Aug 24, 2022
cd2093b
lab updates
chrishoina Aug 24, 2022
386c536
manifest updates
chrishoina Aug 24, 2022
7e901f8
workshop updates
chrishoina Aug 31, 2022
ac63fb2
workshop updates
chrishoina Aug 31, 2022
cf33ec5
workshop updates
chrishoina Aug 31, 2022
882b079
workshop updates
chrishoina Sep 1, 2022
3d2305c
workshop updates
chrishoina Sep 1, 2022
65428b1
workshop updates
chrishoina Sep 1, 2022
b2630b1
workshop updates
chrishoina Sep 2, 2022
e2c75eb
workshop updates
chrishoina Sep 2, 2022
8b7025a
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 2, 2022
fe77fb9
r.e. requested changes to labs
chrishoina Sep 6, 2022
b9953b4
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 6, 2022
bd800fb
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 6, 2022
4963769
WMS ID 4602
chrishoina Sep 7, 2022
f248925
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 7, 2022
97841f8
WMS 11130 update object storage link, fixed emojis
chrishoina Sep 8, 2022
4e15240
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 8, 2022
1651fc1
WMS 11130 update object storage link, fixed emojis
chrishoina Sep 8, 2022
4367b94
manifest changes, corrected next in labs
chrishoina Sep 9, 2022
086de30
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 9, 2022
2a54c09
updates to manifest, titles, emojis
chrishoina Sep 10, 2022
902113a
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 10, 2022
0578c36
fixed manifest files, removed next links
chrishoina Sep 14, 2022
7df9855
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 14, 2022
eb7c9e6
emoji issue, added link to resources
chrishoina Sep 15, 2022
d5aa671
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 15, 2022
707e852
grammarly check
chrishoina Sep 20, 2022
55f873d
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 20, 2022
8c579c2
more grammarly updates
chrishoina Sep 20, 2022
0fb486d
removed title from intro
chrishoina Sep 26, 2022
86a3aba
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 26, 2022
7139844
Merge branch 'oracle-livelabs:main' into main
chrishoina Mar 20, 2023
5804047
qa updates to lab
chrishoina Mar 21, 2023
bcb1af1
updates to images, light edits
chrishoina Mar 23, 2023
d5bfb34
Merge branch 'oracle-livelabs:main' into main
chrishoina Mar 23, 2023
65bd909
Merge branch 'main' of https://github.com/chrishoina/developer
chrishoina Mar 23, 2023
d8c1725
Merge branch 'oracle-livelabs:main' into main
chrishoina May 1, 2023
2c46d60
ocw213 folders
chrishoina May 1, 2023
1316050
ocw213 folders
chrishoina May 2, 2023
8e3a35b
updated manifest
chrishoina Jul 17, 2023
1adb0ee
resolved conflicts.
chrishoina Jul 24, 2023
1cefbbf
Merge branch 'main' into main
chrishoina Jul 24, 2023
50d3af6
updated manifest with additional help section
chrishoina Aug 3, 2023
bb8a517
updated manifest.json with help section
chrishoina Aug 3, 2023
64f0e36
Merge branch 'main' into main
chrishoina Aug 3, 2023
f9beb6e
updates to images, text, updated code
chrishoina Aug 18, 2023
a868327
Merge branch 'main' into main
chrishoina Aug 18, 2023
8fd68b2
Merge branch 'main' into main
anooshapilli Aug 18, 2023
1477d19
corrected manifest.json
chrishoina Aug 22, 2023
63dc949
updates to ocw lab
chrishoina Sep 8, 2023
b1bd4da
updates to ocw labs
chrishoina Sep 11, 2023
ea88a26
updates to rest lab
chrishoina Sep 11, 2023
0d23ef3
updates to md
chrishoina Sep 14, 2023
b8a845d
updates to md
chrishoina Sep 14, 2023
b131168
added wms id in comments
chrishoina Sep 14, 2023
995d85a
Merge branch 'main' into main
malcherm Sep 14, 2023
937e5db
Merge branch 'oracle-livelabs:main' into main
chrishoina Sep 18, 2023
220f404
Merge branch 'oracle-livelabs:main' into main
chrishoina Dec 14, 2023
48dcb90
updates?
chrishoina Dec 14, 2023
bcdc438
intro changes
chrishoina Jan 22, 2024
20afb5f
test
chrishoina Jan 22, 2024
3789941
test
chrishoina Jan 22, 2024
954d817
additions to workshops
chrishoina Feb 14, 2024
e683807
additions to workshops
chrishoina Feb 14, 2024
86febe6
Update application-oracle-rest-api-walkthrough.md
dannymgithub Feb 15, 2024
3d74b64
Merge branch 'oracle-livelabs:main' into main
chrishoina Feb 26, 2024
4b61761
manifest changes
chrishoina Feb 26, 2024
53a838f
Merge branch 'main' of github.com:chrishoina/developer
chrishoina Feb 26, 2024
890674a
new dbactions pages
chrishoina May 22, 2024
37049f8
lintchecker
chrishoina May 30, 2024
ac530b3
Merge branch 'main' into main
chrishoina Jun 6, 2024
7f895d6
sync
chrishoina Aug 13, 2024
574b21a
added help email
chrishoina Aug 13, 2024
32fcdff
sync
chrishoina Aug 13, 2024
204439a
Merge branch 'main' into main
chrishoina Aug 14, 2024
6060986
introduced new lab, changed file names
chrishoina Aug 14, 2024
1262290
Merge branch 'main' of github.com:chrishoina/developer
chrishoina Aug 14, 2024
b2c4b25
added sandbox dir
chrishoina Aug 14, 2024
0f96d85
updates to md
chrishoina Aug 14, 2024
60693b3
md and image updates
chrishoina Aug 15, 2024
fc04ccd
changes to master graphics
chrishoina Aug 15, 2024
d7f7243
Merge branch 'main' into main
chrishoina Aug 15, 2024
b8ed092
removed intro copy
chrishoina Aug 15, 2024
38afa3f
removed 2023 ocw references
chrishoina Aug 19, 2024
eaba210
changes to images, manifest, tasks, steps
chrishoina Aug 21, 2024
672b9d8
removed venv
chrishoina Aug 21, 2024
fa405e5
grammar, spelling
chrishoina Aug 21, 2024
c6f7dcf
grammar, spelling
chrishoina Aug 21, 2024
5cbbc63
grammar, spelling
chrishoina Aug 21, 2024
483bebb
grammar, spelling
chrishoina Aug 21, 2024
4204a9b
grammar, spelling
chrishoina Aug 21, 2024
5ccc2f3
grammar, spelling, code index
chrishoina Aug 21, 2024
a785e71
Merge branch 'oracle-livelabs:main' into main
chrishoina Aug 21, 2024
8308049
fixed image
chrishoina Aug 21, 2024
2a154fb
Merge branch 'main' of github.com:chrishoina/developer
chrishoina Aug 21, 2024
7d16e51
Merge remote-tracking branch 'upstream/main'
chrishoina Aug 21, 2024
90241b5
image updates, content changes
chrishoina Aug 21, 2024
46d68a0
Merge branch 'oracle-livelabs:main' into main
chrishoina Aug 23, 2024
8f78e7c
added clarifying steps in get-started and images
chrishoina Aug 23, 2024
962f6b9
Merge branch 'main' into main
hope-fisher Aug 24, 2024
177835c
blurred ocid and compartment details.
chrishoina Aug 24, 2024
d6308de
updated-images-with-uris-removed
chrishoina Aug 24, 2024
8d57ef2
Merge branch 'oracle-livelabs:main' into main
chrishoina Jul 23, 2025
a9894aa
new ocw2025 files
chrishoina Jul 23, 2025
9bafb26
Merge branch 'main' of https://github.com/chrishoina/developer
chrishoina Jul 23, 2025
e5a864a
new lab manifest and py code
chrishoina Jul 24, 2025
e925e39
new lab
chrishoina Aug 2, 2025
dc535fb
note alert test
chrishoina Aug 2, 2025
7ba5784
note alert test
chrishoina Aug 2, 2025
4dae0b3
space below note
chrishoina Aug 2, 2025
1e8be3a
testing breaks
chrishoina Aug 2, 2025
f293406
testing breaks
chrishoina Aug 2, 2025
b9c508f
button test
chrishoina Aug 2, 2025
4e343da
new button test
chrishoina Aug 2, 2025
0062196
new
chrishoina Aug 2, 2025
6dd859a
new important alert
chrishoina Aug 2, 2025
243806d
testing the note
chrishoina Aug 2, 2025
2120288
new note location
chrishoina Aug 2, 2025
f414496
testing br
chrishoina Aug 2, 2025
e71989c
testing br location
chrishoina Aug 2, 2025
c19d309
Update 2-environment-set-up.md
chrishoina Aug 2, 2025
7d7aeea
omitting br
chrishoina Aug 2, 2025
faa071b
bullets
chrishoina Aug 2, 2025
61285c1
bullets
chrishoina Aug 2, 2025
d75b93e
unit 2 task 2 completed
chrishoina Aug 2, 2025
d3c748c
footnote testing
chrishoina Aug 2, 2025
28a4909
testing image in footnote
chrishoina Aug 2, 2025
bff7be2
testing image in footnote
chrishoina Aug 2, 2025
2fe95ed
testing image in footnote
chrishoina Aug 2, 2025
48f02eb
testing image in footnote
chrishoina Aug 2, 2025
e0e7c36
testing image in footnote
chrishoina Aug 2, 2025
e47f59f
testing image in footnote
chrishoina Aug 2, 2025
2e67968
testing footnote
chrishoina Aug 3, 2025
8753bd1
changes to manifest.json
chrishoina Aug 3, 2025
c8d848b
changed dir name to sqlcl-mcp
chrishoina Aug 3, 2025
a3fe4ab
testing note alert
chrishoina Aug 3, 2025
47a62b5
new tasks
chrishoina Aug 4, 2025
fd154e5
testing alerts
chrishoina Aug 4, 2025
06698e0
note changes
chrishoina Aug 4, 2025
ebdd049
alert change test
chrishoina Aug 4, 2025
94a6068
alert test
chrishoina Aug 4, 2025
bb0e6cd
alert testing
chrishoina Aug 4, 2025
c9959f5
alert change
chrishoina Aug 4, 2025
25ce687
alert test
chrishoina Aug 4, 2025
bde3f8b
alert info
chrishoina Aug 4, 2025
a82bec4
alert
chrishoina Aug 4, 2025
8a5617e
alerts testing
chrishoina Aug 4, 2025
9d84c2d
alert test
chrishoina Aug 4, 2025
fde5755
note alert
chrishoina Aug 4, 2025
a19439d
button colors
chrishoina Aug 4, 2025
61f96d8
html tag correction
chrishoina Aug 4, 2025
c629c4a
tag
chrishoina Aug 4, 2025
6e633c1
tag
chrishoina Aug 4, 2025
fd33b03
tag
chrishoina Aug 4, 2025
499104a
tag
chrishoina Aug 4, 2025
12f0a36
testing admonitions
chrishoina Aug 4, 2025
9da1eeb
latest lab 2 draft
chrishoina Aug 4, 2025
c38e275
fixed broken image
chrishoina Aug 4, 2025
fe84e99
update to the intro lab
chrishoina Aug 13, 2025
70e3d81
changed the repo name, and updated the intro md
chrishoina Aug 14, 2025
f282344
mermaid test
chrishoina Aug 14, 2025
c8e33c8
added mermaid tags to intro
chrishoina Aug 14, 2025
774b5cf
added mermaid tags to intro
chrishoina Aug 14, 2025
7a514d2
added mermaid tags to intro
chrishoina Aug 14, 2025
88b7388
intro changes
chrishoina Aug 14, 2025
6e18421
testing admonitions
chrishoina Aug 18, 2025
8143bf4
capital N in note
chrishoina Aug 18, 2025
8eea585
notes
chrishoina Aug 18, 2025
2a0b952
testing note and para break
chrishoina Aug 18, 2025
8645d1a
notes
chrishoina Aug 18, 2025
d9de5fc
note
chrishoina Aug 18, 2025
f0cae2e
note
chrishoina Aug 18, 2025
2d7eb7f
notes
chrishoina Aug 18, 2025
fc44b55
note
chrishoina Aug 18, 2025
88354fb
warning
chrishoina Aug 18, 2025
011db8c
warning
chrishoina Aug 18, 2025
681cd74
first draft for review
chrishoina Aug 18, 2025
3b83482
note nesting
chrishoina Aug 18, 2025
0feae8a
misspelled labs
chrishoina Aug 18, 2025
f980aad
removed bullet in prereqs
chrishoina Aug 18, 2025
1ab9409
indentation task 1 step 1
chrishoina Aug 18, 2025
8710fd7
spelling
chrishoina Aug 18, 2025
3fdfac5
new images, and md prompt
chrishoina Aug 26, 2025
e271d10
changed md file name for lab 5
chrishoina Aug 26, 2025
bc80a5c
added title to lab five md
chrishoina Aug 26, 2025
b7133e9
added tasks to the sub headings.
chrishoina Aug 26, 2025
c17a02e
copy blocks
chrishoina Aug 27, 2025
41722fb
lab 6 draft
chrishoina Aug 27, 2025
c812888
changed title of lab 4
chrishoina Aug 27, 2025
6fab024
build a react app
chrishoina Aug 28, 2025
78a714f
lab 7 updates
chrishoina Aug 28, 2025
ea7b05b
removed unecessary files
chrishoina Aug 28, 2025
c36b1bc
testing less images
chrishoina Aug 28, 2025
88a23c3
three images
chrishoina Aug 28, 2025
0dd8743
intro draft
chrishoina Aug 29, 2025
348f142
intro updates
chrishoina Aug 29, 2025
bc3a8b9
intro revision
chrishoina Aug 29, 2025
64b5636
references and acks
chrishoina Aug 30, 2025
bfac072
testing anchors
chrishoina Aug 30, 2025
193d98c
href test
chrishoina Aug 30, 2025
4105141
footnote test
chrishoina Aug 30, 2025
b3cc27b
adding skiplink to anchor
chrishoina Aug 30, 2025
6fc9d81
revisions to labs 1, 2
chrishoina Aug 30, 2025
ac19aa8
update
chrishoina Aug 30, 2025
48e9c79
lab 4 updates
chrishoina Sep 1, 2025
88a3b4b
notes for object storage, draft prompts for testing
chrishoina Sep 1, 2025
be9312c
removed images
chrishoina Sep 1, 2025
ec0bc12
9-2 slack feedback from jefe
chrishoina Sep 2, 2025
1135188
incorporated new feedback
chrishoina Sep 3, 2025
7aa5cd3
lab four button
chrishoina Sep 3, 2025
bf0b447
updated prompt sections
chrishoina Sep 4, 2025
b440ee9
updates to md and manifest
chrishoina Sep 8, 2025
3a6e4d0
lint-checking
chrishoina Sep 11, 2025
75484bf
Merge remote-tracking branch 'upstream/main'
chrishoina Sep 11, 2025
cd9d999
removed screenshot files, updated title name in manifest.
chrishoina Sep 11, 2025
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
Binary file added sqlcl-mcp-server-intro.zip
Binary file not shown.
184 changes: 184 additions & 0 deletions sqlcl-mcp-server-intro/1-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,190 @@

## About this Workshop

In this workshop you will learn how to use the SQLcl MCP Server with an AI Agents. You'll discover how the SQLcl MCP Server can safely and securely compliment AI Agents to create the next generation of GenAI: Agentic Workflows.

Estimated Time: 1 hours 10 minutes

### Objectives

In this workshop, you will:
* Learn about the Model Context Protocol (MCP) and the SQLcl MCP Server
* Configure an AI Agent
* Register a SQLcl MCP Server
* Explore SQLcl MCP Server "Tools"
* Rely on sample prompts to accelerate your understanding of the SQLcp MC Server's capabilities

### Prerequisites

This lab assumes you have:
* An Oracle Cloud, LiveSQL, or FreeSQL account
* Access to a currently supported Oracle database (or LiveSQL/FreeSQL account if participating in an instructor-led workshop)
* Organizational Roles/Privileges to install the following software on your employer-provided work station:
* MS Visual Studio Code

### About

#### MCP

The Model Context Protocol (MCP) is a proposed standard for how AI Agents might communicating with you and your information, applications, and data, through an intermediary called an MCP Server.

An MCP Server allows you to take your core tech, like SQLcl, and "connect" it to an AI Agent. Once the Agent is "aware" of an MCP Server, it can then use whatever MCP Server "Tools" are available to it to create highly-developed workflows. This workflows would focus on the context you are in, like in this workshop: database object creation, simple web applictions driven by your data, simple monitoring dashboards, and more.

**What does this mean for you?** You can ask the Agent to perform certain functions in and around your database, its objects, or data while simultaneously being "connected" to the Large-language Model (LLM) of your choice. Communicate using natural, plain-language; in what feels more like a collaboration with you and an AI Agent. This makes working with AI Agents less question-and-answer (Single-shot), and more continuous and iterative (Agentic Workflow).

**Single-shot GenAI vs Agentic Workflows**

Single-Shot AIs rely on constant user intervention; very manual. Whereas Agentic Workflows enable an Agent to orchestrate a complete workflow. But the user is still in control. These workflows are not only fully-fleshed out plans, but they are persistent, observable, and safe.

![1-sqlcl-mcp-interaction-graphic-overview](./images/lab-1/3-single-shot-vs-agentic-ai.jpeg " ")

<p></p>

| | |
| -- | -- |
| **Single-Shot GenAI** | Issue a request/prompt &#8594; LLM performs task &#8594; Done |
| **Agentic Workflow** | User issues prompt &#8594; Agent builds a plan &#8594; User approves/declines/amends plan &#8594; Agent uses available tools to achieve goals &#8594; Agent delivers results &#8594; User iterates on existing/new plan|
{: title="Single-shot vs Agentic"}

**An example Agentic Workflow:**

Here is a sample use case involving the Oracle database, an AI Agent, and the SQLcl MCP Server:

![1-sqlcl-mcp-interaction-graphic-overview](./images/lab-1/1-sqlcl-mcp-interaction-graphic-overview.png " ")

<p></p>

1. A user sets a task in natural language. Something like, "Find the top 10 most expensive queries from last week and recommend an index.”
2. The Agent responds; building or showing a plan, and selecting the best MCP Server Tools to achieve the goal.
3. The LLM (that underpins an AI Agent) might generate SQL or perhaps choose a prebuilt Tool from available MCP Servers. In this case it might call upon SQLcl to aid in performing a task.
4. One of the SQLcl MCP Server's Tools is `connect`<sup id="ref-1"><a href="#fn-1">1</a></sup>. An Agent would know of this ahead of time, and use the `connect` Tool to connect to your Oracle database via JDBC using your stored credentials (an LLM never sees your passwords).
5. Once connected, all of your standard security settings and rules will be enforced since your Agent is actually relying on the SQLcl MCP Server to interact with the Oracle database.
6. Once SQLcl has delivered results to the Agent, the underlying LLM would summarize, validate, and propose next steps.
7. The user might then approve, decline, or modify the revised action plan, at each step.

#### Protocols

Typically you'll interact with your MCP server through an AI Agent, using natural language queries. You can indicate which "Tools" to use from an MCP Server. Or, your Agent might suggest using them with zero prompting (depending on the Agent, and what "guardrails" you have in place). This communication between you, the AI Agent, and MCP Servers is "the Protocol."

<!-- A lot happens under the covers for MCP to work, but you should know that MCP can support the following communication mechanisms:

- Stdio
- HTTP (in the form of `POST` requests)

The SQLcl MCP server utilizes the fast, no overhead Stdio communcation mechanism. And to you, the end user, *this* is what makes up the **Protocol** in Model Context Protocol (MCP). -->

#### Capabilities

Also known as "Primitives," these are the key capabilities of every MCP Server:

| | |
| -- | -- |
| **Tools** | Executable functions that AI applications can invoke to perform actions (e.g., file operations, API calls, database queries) |
|**Resources**| Data sources that provide contextual information to AI applications (e.g., file contents, database records, API responses)|
|**Prompts**| Reusable templates that help structure interactions with language models (e.g., system prompts, few-shot examples)|
{: title="MCP Server Primitives"}

> &#9888; **Important:** You'll use SQLcl MCP Server's "Tools" in this LiveLab.

<p></p>

### The SQLcl MCP server

Since SQLcl is an already existing, and powerful command line tool for the Oracle database, it makes sense to "extend" its capabilitites with an MCP server.

For many users, and scripting tools, SQLcl is the preferred way to interact with an Oracle database.

<!-- And since you are already interacting with the command line; it makes sense to implement the Stdio means of communicating with the SQLcl MCP server. This means that responses are fast, as they are printed directly to your client's Stdout. -->

But as an end-user, you probably want to know what you can do with this SQLcl MCP Server.

#### Tools

The SQLcl MCP server, like other MCP Servers provides you with contextual "Tools." In the case of SQLcl, your MCP server "comes alive" after you've configured your database credentials (Connect String, and/or Cloud Wallet).

And once saved connections have been configured you can securely explore your Oracle database using natural language with an AI Agent (relying on the SQLcl MCP Sever Tools). If you are just beginning your database journey this means your queries become more of a conversation. The AI Agent, with the right MCP Server, ends up becomming more of a soundboard to bounce your ideas and intents off of.

And if you are an experienced user, you can use a combination of natural language, *and* Oracle SQL and PL/SQL to achieve your goals with ease and even more speed.

#### SQLcl MCP Server Tools

|Tool | Parameters | Definition |
| --- | ---------- | ---------- |
| `list-connections` | <ul><li>`filter`</li><li>`mcp_client`</li><li>`model`</li></ul> | <ul><li>This is the filter that will be used to refine the list of connections</li><li>Specify the name and version of the MCP client implementation being used (e.g. Copilot, Claude, Cline...)</li><li>The name (and version) of the language model being used by the MCP client to process requests (e.g. gpt-4.1, claude-sonnet-4, llama4...</li></ul>|
| `connect` | <ul><li>`connection_name`</li><li>`mcp_client`</li><li>`model`</li></ul> | <ul><li>Specify the name and version of the MCP client implementation being used (e.g. Copilot, Claude, Cline...)</li><li>The name (and version) of the language model being used by the MCP client to process requests (e.g. gpt-4.1, claude-sonnet-4, llama4...</li></ul>|
| `disconnect` | <ul><li>`mcp_client`</li><li>`model`</li></ul> | <ul><li>The name of the saved connection you want to connect to</li><li>The name (and version) of the language model being used by the MCP client to process requests (e.g. gpt-4.1, claude-sonnet-4, llama4...</li></ul>|
| `run-sqlcl` | <ul><li>`sqlcl`</li><li>`mcp_client`</li><li>`model`</li></ul> | <ul><li>The SQLcl command to execute</li><li>Specify the name and version of the MCP client implementation being used (e.g. Copilot, Claude, Cline...)</li><li>The name (and version) of the language model being used by the MCP client to process requests (e.g. gpt-4.1, claude-sonnet-4, llama4...</li></ul>|
| `sql` | <ul><li>`sql`</li><li>`mcp_client`</li><li>`model`</li></ul> | <ul><li>The SQL query to execute</li><li>Specify the name and version of the MCP client implementation being used (e.g. Copilot, Claude, Cline...)</li><li>The name (and version) of the language model being used by the MCP client to process requests (e.g. gpt-4.1, claude-sonnet-4, llama4...</li></ul>|
{: title="SQLcl MCP Server Tools"}

#### Security Considerations

Let's talk about security; here is what and how SQLcl enforces security:

![2-trusted-execution-layer](./images/lab-1/2-trusted-execution-layer.jpeg " ")

Some things to consider when working with *any* AI Agent and/or MCP Server:

- **Least Privileges:** Use read-only accounts for analytic/reporting tasks.
- **Segregation of Duties:** Separate querying from DDL/DML (use different connections).
- **Policies:** Apply existing AI data use policies; add Agent specific rules (e.g., “no PII extraction,” “no mass updates”).
- **Avoid Tool Overlap:** Do not ship multiple MCP servers that claim the same capability (e.g., multiple “run SQL” tools) — Agents will get confused.
- **Approval Workflow:** Require per step approval for anything that changes data, schema, security, or performance posture.
- **Monitoring:**
- Tag queries (model + Agent) via SQL comments or logs (SQLcl MCP Server does this by default).
- Store Agent actions (who/what/when/db/plan) in an audit table.
- **Defense in Depth:** Consider using:
- SQL Firewall patterns to block risky statements.
- Data Vault for privileged access management.
- Resource Manager for runaway queries.
- Row level security for least data exposure.

<p></p>

> &#9888; **REMEMBER:** When an AI Agent uses the SQLcl MCP Server, credentials are never shown to the LLM/Agent--its all managed in an Oracle Wallet. Therefore the Agent *must* honor database Roles, Privileges, and security safeguards (VPD/Row Level Security, Data Vault, SQL Firewall, Resource Manager).

#### MCP Best Practices
| | |
| :--: | -- |
|***Do...***|<ul><li>use read only connections by default.</li><li>keep MCP servers "focused" (no overlapping “run SQL” from multiple servers).</li><li>ensure tools explain themselves (clear descriptions).</li><li>log everything the Agent runs (transparency).</li>
|**Do *not...*** | <ul><li>blanket approve session actions.</li><li>expose credentials to the LLM.</li><li>deploy Agents into production without strict database controls (Firewall, Vault, RLS, Resource Manager).</li><li>assume the LLM is always correct—review SQL, PL/SQL, plans, and results.</li></ul>|
{: title="MCP Server Best Practices"}

### Summary

| | |
| -- | -- |
| **What** | MCP Servers aide AI Agents in creating plans and executing workflows and tasks on the Oracle Database. |
| **How** | The SQLcl MCP server provides tools (connect, run sql, awr, etc.) to your preferred AI Agent, using wallet-based credentials and Oracle’s enterprise-grade security features. |
| **Why** | Huge productivity gains (database exploration, reporting, performance triage, etc.) while users remain in control. All while respecting security controls. |
{: title="MCP Server Wrap-up"}

<br></br>

**Footnotes**
<ol>
<li id="fn-1">
An MCP Server will have been developed to have certain capabilities. These capabilites (technically known as Primitives) can be used or called upon by the AI Agent in the *Context* you are currently in. The "context" in the above example involved connecting to and interacting with an Oracle database via the SQLcl command line interface. You'll learn more about these Primitives in a later section.
<a href="#ref-1" title="Jump back to the reference">&uarr;</a>
</li>
</ol>

## Learn More

* [MCP Server Introduction](https://blogs.oracle.com/database/post/introducing-mcp-server-for-oracle-database)
* [Oracle official MCP Server repository](https://github.com/oracle/mcp/tree/main)
* [SQLcl MCP Server Docs](https://docs.oracle.com/en/database/oracle/sql-developer-command-line/25.2/sqcug/using-oracle-sqlcl-mcp-server.html)

## Acknowledgements

* **Author**<ul><li>Chris Hoina, Senior Product Manager, Database Tools</li></ul>
* **Contributors**<ul><li>Jeff Smith, Distinguished Product Manager, Database Tools</li><li>Linda Foindling</li></ul>
* **Last Updated By/Date**<ul><li>Chris Hoina, September 2025</li></ul>

# Introduction

## About this Workshop

![1-sqlcl-mcp-interaction-graphic-overview](./images/lab-1/1-sqlcl-mcp-interaction-graphic-overview.png " ")

```mermaid
Expand Down
Loading