docs: update README for v1.5 with MCP Tool Use and multi-table ADB features

This commit is contained in:
nogueiraguh
2026-03-04 23:24:13 -03:00
parent 0f5c805601
commit f259239a17

View File

@@ -9,7 +9,7 @@
</p> </p>
<p align="center"> <p align="center">
<img src="https://img.shields.io/badge/version-1.4-C74634?style=flat-square" alt="Version"> <img src="https://img.shields.io/badge/version-1.5-C74634?style=flat-square" alt="Version">
<img src="https://img.shields.io/badge/python-3.12-3776AB?style=flat-square" alt="Python"> <img src="https://img.shields.io/badge/python-3.12-3776AB?style=flat-square" alt="Python">
<img src="https://img.shields.io/badge/FastAPI-0.115-009688?style=flat-square" alt="FastAPI"> <img src="https://img.shields.io/badge/FastAPI-0.115-009688?style=flat-square" alt="FastAPI">
<img src="https://img.shields.io/badge/OCI-GenAI-C74634?style=flat-square" alt="OCI"> <img src="https://img.shields.io/badge/OCI-GenAI-C74634?style=flat-square" alt="OCI">
@@ -29,13 +29,15 @@ The platform combines security compliance scanning, AI-powered chat with **RAG (
## Features ## Features
### 🤖 AI Chat Agent with RAG ### 🤖 AI Chat Agent with RAG + MCP Tool Use
- **OCI Generative AI** integration via official SDK (`oci.generative_ai_inference`) - **OCI Generative AI** integration via official SDK (`oci.generative_ai_inference`)
- **RAG (Retrieval-Augmented Generation)**: automatically queries ADB vector store for relevant context before generating responses - **RAG (Retrieval-Augmented Generation)**: automatically queries ADB vector store for relevant context before generating responses
- **MCP Tool Use (Function Calling)**: GenAI models can call tools from registered MCP servers during chat — supports both Cohere and Generic (OpenAI-style) function calling formats with automatic tool execution loop (max 5 iterations)
- 69 chat models + 11 embedding models across 6 providers: **Cohere**, **Meta**, **Google**, **OpenAI** (GPT-5.3/5.2/5.1/5/4.1/4o, Codex, Image, Audio, o1/o3/o4-mini, GPT-oss), **xAI** (Grok 4.1/4/3), **ProtectAI** - 69 chat models + 11 embedding models across 6 providers: **Cohere**, **Meta**, **Google**, **OpenAI** (GPT-5.3/5.2/5.1/5/4.1/4o, Codex, Image, Audio, o1/o3/o4-mini, GPT-oss), **xAI** (Grok 4.1/4/3), **ProtectAI**
- OCID-based model resolution: catalog maps model IDs to OCI resource IDs per region for reliable API calls - OCID-based model resolution: catalog maps model IDs to OCI resource IDs per region for reliable API calls
- 16 OCI regions supported with auto-generated endpoints - 16 OCI regions supported with auto-generated endpoints
- Full parameter control: temperature, max_tokens, top_p, top_k, frequency/presence penalty - Full parameter control: temperature, max_tokens, top_p, top_k, frequency/presence penalty
- Toggle MCP tools on/off per chat session
- Conversation history with session management - Conversation history with session management
- On-Demand and Dedicated serving modes - On-Demand and Dedicated serving modes
@@ -52,8 +54,11 @@ The platform combines security compliance scanning, AI-powered chat with **RAG (
- Optional MCP server selection per report execution - Optional MCP server selection per report execution
- Region filtering - Region filtering
### 🔌 MCP Server Registry ### 🔌 MCP Server Registry + Tool Discovery
- Register multiple MCP servers (stdio, SSE, Python module) - Register multiple MCP servers (stdio, SSE, Python module)
- **Automatic tool discovery**: connect to MCP servers and discover available tools with names, descriptions, and input schemas
- **Manual tool definition**: add/edit tools with JSON Schema parameter definitions
- **Chat Agent integration**: discovered tools are automatically available as GenAI function calls during chat
- Upload `.py` scripts directly to servers - Upload `.py` scripts directly to servers
- **Link MCP servers to ADB Vector** databases as tools - **Link MCP servers to ADB Vector** databases as tools
- Activate/deactivate servers - Activate/deactivate servers
@@ -64,16 +69,19 @@ The platform combines security compliance scanning, AI-powered chat with **RAG (
- `python-oracledb` Thin mode (no Oracle Client needed) - `python-oracledb` Thin mode (no Oracle Client needed)
- Wallet ZIP upload and automatic extraction - Wallet ZIP upload and automatic extraction
- Connection testing - Connection testing
- Configurable embeddings table name (default: `CIS_EMBEDDINGS`) - **Multiple vector tables per ADB**: register, edit, toggle active/inactive for each table
- **Multi-table RAG search**: queries all active tables across all ADB configs, merges results by cosine distance
- Link to GenAI config for embedding generation via OCI GenAI - Link to GenAI config for embedding generation via OCI GenAI
### 🧬 Embeddings Management ### 🧬 Embeddings Management
- Dedicated tab for managing vector embeddings - Dedicated tab for managing vector embeddings
- **Embed CIS Reports**: automatically chunk reports by section (IAM, Networking, Compute, etc.) and generate embeddings - **Preview chunks before embedding**: review generated sections before creating embeddings
- **Embed CIS Reports**: automatically chunk reports by section with tenancy name, regions, and compartments enrichment
- **Upload text files**: upload `.txt` files, automatically chunked by paragraphs - **Upload text files**: upload `.txt` files, automatically chunked by paragraphs
- **OCI GenAI Embeddings**: uses Cohere Embed models (v3.0, multilingual, light) via OCI GenAI `embed_text` API - **Table selector**: choose which ADB vector table to store embeddings in
- **OCI GenAI Embeddings**: uses Cohere Embed models (v3.0/v4.0, multilingual, light) via OCI GenAI `embed_text` API
- Browse, inspect and delete individual embeddings from the ADB vector store - Browse, inspect and delete individual embeddings from the ADB vector store
- 4 embedding models supported: Cohere Embed English/Multilingual v3.0 (1024d), Light variants (384d) - 11 embedding models supported including Cohere Embed v4.0 and OpenAI Text Embedding 3
### 📜 Configuration Logs ### 📜 Configuration Logs
- **Persistent activity log** per configuration tab (OCI, GenAI, ADB, MCP) - **Persistent activity log** per configuration tab (OCI, GenAI, ADB, MCP)
@@ -107,8 +115,10 @@ The platform combines security compliance scanning, AI-powered chat with **RAG (
│ │ │ OCI SDK │──▶ OCI APIs │ │ │ │ │ OCI SDK │──▶ OCI APIs │ │
│ │ ├─────────────┤ │ │ │ │ ├─────────────┤ │ │
│ │ │ GenAI Client │──▶ LLM │ │ │ │ │ GenAI Client │──▶ LLM │ │
│ │ ├─────────────┤ │ │ │ │ ├─────────────┤ (tools) │ │
│ │ │ MCP Servers │──▶ Tools │ │ │ │ │ MCP Client │──▶ MCP Svrs │ │
│ │ ├─────────────┤ (discover │ │
│ │ │ │ +execute) │ │
│ │ ├─────────────┤ │ │ │ │ ├─────────────┤ │ │
│ │ │ oracledb │──▶ ADB │ │ │ │ │ oracledb │──▶ ADB │ │
│ │ ├─────────────┤ │ │ │ │ ├─────────────┤ │ │
@@ -220,7 +230,7 @@ chat_detail.compartment_id = compartment_id
### Step 3 — MCP Servers (Optional) ### Step 3 — MCP Servers (Optional)
Register MCP servers for extended task execution: Register MCP servers for extended task execution and **Chat Agent tool use**:
| Type | Use Case | | Type | Use Case |
|------|----------| |------|----------|
@@ -230,6 +240,8 @@ Register MCP servers for extended task execution:
MCP servers can be **linked to ADB Vector** databases, enabling them to use the vector store as a tool during report execution. MCP servers can be **linked to ADB Vector** databases, enabling them to use the vector store as a tool during report execution.
**Tool Discovery**: After registering a server, click **"Descobrir Tools"** to automatically discover available tools via MCP protocol. You can also add tools manually with name, description, and JSON Schema parameters. Discovered tools are automatically available as **function calls** in the Chat Agent.
### Step 4 — ADB Vector + RAG (Optional) ### Step 4 — ADB Vector + RAG (Optional)
For persistent vector storage and RAG-powered chat: For persistent vector storage and RAG-powered chat:
@@ -237,20 +249,21 @@ For persistent vector storage and RAG-powered chat:
1. Add DSN (TNS name from tnsnames.ora, e.g., `myatp_high`) 1. Add DSN (TNS name from tnsnames.ora, e.g., `myatp_high`)
2. Set credentials (username/password) 2. Set credentials (username/password)
3. Select a **GenAI Config** (for embedding generation via OCI GenAI) 3. Select a **GenAI Config** (for embedding generation via OCI GenAI)
4. Select an **Embedding Model** (Cohere Embed v3.0 recommended) 4. Select an **Embedding Model** (Cohere Embed v4.0 recommended)
5. Upload Wallet ZIP (for mTLS) 5. Upload Wallet ZIP (for mTLS)
6. Test the connection 6. Test the connection
7. Click **Create Table** to initialize the embeddings table in ADB 7. **Register vector tables**: add the names of existing tables in your ADB that contain vectorized data (e.g., `CIS_REPORT`, `CIS_RECOMMENDATIONS`). Toggle tables active/inactive to control which are queried during RAG.
### Step 5 — Embeddings (Optional) ### Step 5 — Embeddings (Optional)
Navigate to the **Embeddings** tab to populate the vector store: Navigate to the **Embeddings** tab to populate the vector store:
1. **From CIS Reports**: Select a completed report and generate embeddings (1 per section) 1. **From CIS Reports**: Select a completed report, **preview chunks** (with tenancy/regions/compartments context), then generate embeddings
2. **From text files**: Upload `.txt` files for automatic chunking and embedding 2. **From text files**: Upload `.txt` files for automatic chunking and embedding
3. Browse and manage existing embeddings 3. **Select target table**: choose which ADB vector table to store embeddings in
4. Browse and manage existing embeddings per table
Once embeddings exist, the **chat automatically uses RAG** — it queries the ADB vector store for relevant context before generating responses with the selected GenAI model. Once embeddings exist, the **chat automatically uses RAG** — it queries all active vector tables across all ADB configs for relevant context before generating responses with the selected GenAI model.
--- ---
@@ -276,12 +289,12 @@ Allow group <group-name> to read buckets in compartment <compartment-name>
``` ```
oci-cis-agent/ oci-cis-agent/
├── backend/ ├── backend/
│ ├── app.py # FastAPI application (~1100 lines) │ ├── app.py # FastAPI application (~2200 lines)
│ ├── cis_runner.py # CIS Benchmark check executor │ ├── cis_runner.py # CIS Benchmark check executor
│ ├── Dockerfile # Python 3.12 + OCI CLI │ ├── Dockerfile # Python 3.12 + OCI CLI
│ └── requirements.txt # Dependencies │ └── requirements.txt # Dependencies
├── frontend/ ├── frontend/
│ └── index.html # SPA with Oracle Cloud theme (~620 lines) │ └── index.html # SPA with Oracle Cloud theme (~900 lines)
├── nginx/ ├── nginx/
│ └── default.conf # Reverse proxy config │ └── default.conf # Reverse proxy config
├── docker-compose.yml # Orchestration ├── docker-compose.yml # Orchestration
@@ -346,6 +359,8 @@ oci-cis-agent/
| PUT | `/api/mcp/servers/{id}/toggle` | Activate/deactivate | | PUT | `/api/mcp/servers/{id}/toggle` | Activate/deactivate |
| POST | `/api/mcp/servers/{id}/upload` | Upload script file | | POST | `/api/mcp/servers/{id}/upload` | Upload script file |
| PUT | `/api/mcp/servers/{id}/link-adb` | Link to ADB Vector | | PUT | `/api/mcp/servers/{id}/link-adb` | Link to ADB Vector |
| POST | `/api/mcp/servers/{id}/discover-tools` | Auto-discover tools from MCP server |
| PUT | `/api/mcp/servers/{id}/tools` | Manually update tool definitions |
| DELETE | `/api/mcp/servers/{id}` | Delete MCP server | | DELETE | `/api/mcp/servers/{id}` | Delete MCP server |
### ADB Vector ### ADB Vector
@@ -353,28 +368,32 @@ oci-cis-agent/
| Method | Endpoint | Description | | Method | Endpoint | Description |
|--------|----------|-------------| |--------|----------|-------------|
| POST | `/api/adb/config` | Save ADB connection (with GenAI config + embedding model) | | POST | `/api/adb/config` | Save ADB connection (with GenAI config + embedding model) |
| GET | `/api/adb/configs` | List ADB connections | | GET | `/api/adb/configs` | List ADB connections (includes vector tables) |
| PUT | `/api/adb/configs/{id}` | Update ADB connection (multipart) | | PUT | `/api/adb/configs/{id}` | Update ADB connection (multipart) |
| POST | `/api/adb/parse-wallet` | Parse wallet ZIP and extract DSN names | | POST | `/api/adb/parse-wallet` | Parse wallet ZIP and extract DSN names |
| POST | `/api/adb/{id}/upload-wallet` | Upload wallet ZIP | | POST | `/api/adb/{id}/upload-wallet` | Upload wallet ZIP |
| POST | `/api/adb/test/{id}` | Test ADB connection | | POST | `/api/adb/test/{id}` | Test ADB connection |
| POST | `/api/adb/{id}/ensure-table` | Create embeddings table in ADB | | GET | `/api/adb/{id}/tables` | List vector tables for ADB config |
| POST | `/api/adb/{id}/tables` | Add vector table |
| PUT | `/api/adb/{id}/tables/{tid}` | Update vector table (name, description, active) |
| DELETE | `/api/adb/{id}/tables/{tid}` | Remove vector table |
| DELETE | `/api/adb/configs/{id}` | Delete ADB config | | DELETE | `/api/adb/configs/{id}` | Delete ADB config |
### Embeddings ### Embeddings
| Method | Endpoint | Description | | Method | Endpoint | Description |
|--------|----------|-------------| |--------|----------|-------------|
| POST | `/api/embeddings/report/{rid}` | Generate embeddings from CIS report (chunked by section) | | GET | `/api/embeddings/preview/{rid}` | Preview report chunks before embedding (with tenancy/regions/compartments) |
| POST | `/api/embeddings/upload` | Upload .txt file and generate embeddings (chunked by paragraphs) | | POST | `/api/embeddings/report/{rid}` | Generate embeddings from CIS report (chunked by section, accepts `table_name`) |
| GET | `/api/embeddings/{vid}/list` | List embeddings in ADB (paginated) | | POST | `/api/embeddings/upload` | Upload .txt file and generate embeddings (accepts `table_name`) |
| DELETE | `/api/embeddings/{vid}/{doc_id}` | Delete individual embedding | | GET | `/api/embeddings/{vid}/list` | List embeddings in ADB (paginated, accepts `table_name` query param) |
| DELETE | `/api/embeddings/{vid}/{doc_id}` | Delete individual embedding (accepts `table_name` query param) |
### Chat & Reports ### Chat & Reports
| Method | Endpoint | Description | | Method | Endpoint | Description |
|--------|----------|-------------| |--------|----------|-------------|
| POST | `/api/chat` | Send message (with optional GenAI model) | | POST | `/api/chat` | Send message (with RAG + MCP tool use, accepts `use_tools` flag) |
| POST | `/api/reports/run` | Execute CIS report | | POST | `/api/reports/run` | Execute CIS report |
| GET | `/api/reports` | List reports | | GET | `/api/reports` | List reports |
| GET | `/api/reports/{id}/html` | View HTML report | | GET | `/api/reports/{id}/html` | View HTML report |
@@ -514,7 +533,7 @@ All models include OCID mapping for `us-ashburn-1`. For other regions, use the "
| ADB | `python-oracledb` 2.4.1 (Thin mode) | | ADB | `python-oracledb` 2.4.1 (Thin mode) |
| GenAI | `oci.generative_ai_inference` | | GenAI | `oci.generative_ai_inference` |
| Container | Docker Compose, Nginx reverse proxy | | Container | Docker Compose, Nginx reverse proxy |
| MCP | Model Context Protocol (stdio/SSE/module) | | MCP | Model Context Protocol SDK (stdio/SSE) with tool discovery + execution |
--- ---
@@ -522,6 +541,7 @@ All models include OCID mapping for `us-ashburn-1`. For other regions, use the "
| Version | Date | Changes | | Version | Date | Changes |
|---------|------|---------| |---------|------|---------|
| **v1.5** | 2026-03 | MCP Tool Use in Chat (GenAI function calling with auto tool discovery + execution via MCP SDK), multi-table ADB vector search, preview chunks before embedding, enriched embeddings with tenancy/regions/compartments, searchable dropdowns, editable vector tables, orphaned report cleanup on restart |
| **v1.4** | 2026-03 | In-place config editing, 69 chat + 11 embedding models with OCID resolution (OpenAI GPT-5.3/5.2/5.1/5/4.1/4o/Codex/Image/Audio, xAI, Google, Meta, ProtectAI), OpenAI Text Embedding 3, custom OCID support, wallet auto-parse with DSN extraction | | **v1.4** | 2026-03 | In-place config editing, 69 chat + 11 embedding models with OCID resolution (OpenAI GPT-5.3/5.2/5.1/5/4.1/4o/Codex/Image/Audio, xAI, Google, Meta, ProtectAI), OpenAI Text Embedding 3, custom OCID support, wallet auto-parse with DSN extraction |
| **v1.3** | 2026-03 | Persistent config logs per tab, GenAI auto-fill from OCI credentials, inline UX feedback with loading spinners, MCP type-switch fix, encrypted key passphrase support, Docker stdin hang fix | | **v1.3** | 2026-03 | Persistent config logs per tab, GenAI auto-fill from OCI credentials, inline UX feedback with loading spinners, MCP type-switch fix, encrypted key passphrase support, Docker stdin hang fix |
| **v1.2** | 2026-03 | RAG pipeline (OCI GenAI embeddings + ADB vector search), dedicated Embeddings tab, CIS report chunking, file upload embedding | | **v1.2** | 2026-03 | RAG pipeline (OCI GenAI embeddings + ADB vector search), dedicated Embeddings tab, CIS report chunking, file upload embedding |