{"id":48245,"date":"2026-10-31T02:47:08","date_gmt":"2026-10-31T01:47:08","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=48245"},"modified":"2026-10-31T02:49:12","modified_gmt":"2026-10-31T01:49:12","slug":"ai-meets-oem-use-native-oem-mcp-server","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/","title":{"rendered":"AI meets OEM, use native OEM MCP server"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I have recently been configuring and testing Oracle AI Database Assistant integrated with Oracle Enterprise Manager 24ai Release 1 Update 10, to interact with the Oracle Management Repository (OMR) using natural language prompts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is time now to test the MCP server integrated with OEM 24ai Release 1 Update 12. In this blog, I will show you how I configured a client to connect and interact with OEM MCP server in order to get information from the OMR, and perform first short tests.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3>Requirements<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I need to be at least in OEM 24ai Release 1 Update 12.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,6,8,25,26,27,28,29,30]\">\n[oracle@oem24ai ~]$ $OMS_HOME\/bin\/emctl getversion oms\nOracle Enterprise Manager 24ai Release 1\nCopyright (c) 1996, 2024 Oracle Corporation.  All rights reserved.\n       Oracle Enterprise Manager OMS 24ai Release 1\n\n[oracle@oem24ai ~]$ export ORACLE_HOME=$OMS_HOME\n\n[oracle@oem24ai ~]$ $ORACLE_HOME\/OPatch\/opatch lspatches\n39984317;EM Stack Patch Bundle 24.1.0.0.0(ID:260906.1632) (Patch 39984254)\n39979941;OPSS Bundle Patch 12.2.1.4.260904\n39930279;ADF BUNDLE PATCH 12.2.1.4.260825\n39919567;WLS PATCH SET UPDATE 12.2.1.4.260823\n39901894;WebCenter Core Bundle Patch 12.2.1.4.260818\n39896168;OWSM BUNDLE PATCH 12.2.1.4.260818\n39861406;PERL 5.42.2 patch for EM 24.1.0.0.0\n39798204;RDA release 26.3-2026915 for OFM 12.2.1.4 SPB\n39611663;OHS (NATIVE) DB19C BUNDLE PATCH 12.2.1.4.260624\n39574504;FMW Thirdparty Bundle Patch 12.2.1.4.260617\n39567777;OSS 19C BUNDLE PATCH 12.2.1.4.260616\n39487427;JDBC19.31 BUNDLE PATCH 12.2.1.4.260603\n39425385;DB CLIENT 19.31 FOR FMW BUNDLE PATCH 12.2.1.4.260721 (39425385)\n38832179;One-off\n38098858;One-off\n1221432;Coherence Cumulative Patch 12.2.1.4.32\n39808046;Oracle Enterprise Manager for Cloud Framework 24ai Release 1 Plug-in Update 13 (24.1.1.13) for Oracle Management Service\n39808030;Oracle Enterprise Manager for Systems Infrastructure 24ai Release 1 Plug-in Update 13 (24.1.1.13) for Oracle Management Service\n39808017;Oracle Enterprise Manager for Exadata 24ai Release 1 Plug-in Update 13 (24.1.1.13) for Oracle Management Service\n39807976;Oracle Enterprise Manager for Oracle Database 24ai Release 1 Plug-in Update 13 (24.1.1.13) for Oracle Management Service\n39807963;Oracle Enterprise Manager for Fusion Middleware 24ai Release 1 Plug-in Update 13 (24.1.1.13) for Oracle Management Service\n39807951;Oracle Enterprise Manager 24ai Release 1 Platform Update 13 (24.1.0.13) for Oracle Management Service\n36789759;FMW PLATFORM BUNDLE PATCH 12.2.1.4.240812\n34065178;One-off\n30152128;One-off\n34809489;One-off\n35965629;ADR FOR WEBLOGIC SERVER 12.2.1.4.0 CPU JAN 2024\n\nOPatch succeeded.\n[oracle@oem24ai ~]$\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">This is ok as I patched my OEM before performing further tests, and I&#8217;m now running Update 13.<\/p>\n\n\n\n<h3>Connectivity tests without any client<\/h3>\n\n\n\n<h4>TCP connectivity<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The address to reach the MCP server from my lab is the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;oem24ai.jew.lab:7803\/em\/api\/mcp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Before going further in configuring any client, I made a local connection test to the MCP server from my Mac using curl command. Option v for verbose and k to disable TLS certificate verification.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The command confirmed the connection is ok (DNS resolution, TCP connectivity). HTTP Error 401 (Unauthorized) is ok as we did not provide any user and password, so OEM rejected the unauthorized request.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,34]\">maw@dbi-servicess-MacBook-Pro-2 ~ % curl -vk \\\n&gt; https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp\n* Host oem24ai.jew.lab:7803 was resolved.\n* IPv6: (none)\n* IPv4: 10.0.10.250\n*   Trying 10.0.10.250:7803...\n* Connected to oem24ai.jew.lab (10.0.10.250) port 7803\n* ALPN: curl offers h2,http\/1.1\n* (304) (OUT), TLS handshake, Client hello (1):\n* (304) (IN), TLS handshake, Server hello (2):\n* TLSv1.2 (IN), TLS handshake, Certificate (11):\n* TLSv1.2 (IN), TLS handshake, Server key exchange (12):\n* TLSv1.2 (IN), TLS handshake, Server finished (14):\n* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):\n* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (OUT), TLS handshake, Finished (20):\n* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (IN), TLS handshake, Finished (20):\n* SSL connection using TLSv1.2 \/ ECDHE-RSA-AES256-GCM-SHA384 \/ [blank] \/ UNDEF\n* ALPN: server did not agree on a protocol. Uses default.\n* Server certificate:\n*  subject: CN=oem24ai.iaas.jewlab.oraclevcn.com\n*  start date: Oct 13 13:55:47 2026 GMT\n*  expire date: Oct 11 13:55:47 2036 GMT\n*  issuer: O=EnterpriseManager on oem24ai.iaas.jewlab.oraclevcn.com; OU=EnterpriseManager on oem24ai.iaas.jewlab.oraclevcn.com; L=EnterpriseManager on oem24ai.iaas.jewlab.oraclevcn.com; ST=CA; C=US; CN=oem24ai.iaas.jewlab.oraclevcn.com\n*  SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.\n* using HTTP\/1.x\n&gt; GET \/em\/api\/mcp HTTP\/1.1\n&gt; Host: oem24ai.jew.lab:7803\n&gt; User-Agent: curl\/8.7.1\n&gt; Accept: *\/*\n&gt;\n* Request completely sent off\n&lt; HTTP\/1.1 401 Unauthorized\n&lt; Date: Mon, 26 Oct 2026 13:07:26 GMT\n&lt; Date: Mon, 26 Oct 2026 13:07:26 GMT\n&lt; X-ORACLE-DMS-ECID: d5e13a8c-fc9e-4654-8dd2-ecd46f90471c-000004af\n&lt; X-ORACLE-DMS-RID: 0\n&lt; X-ORCL-EM-APIGW-ERR: 0\n&lt; X-ORCL-EM-APIGW-GUID: e525b50c-f555-1c15-b8ca-a13fe481ea20\n&lt; X-ORCL-EMOA: true\n&lt; X-Content-Type-Options: nosniff\n&lt; X-XSS-Protection: 1; mode=block\n&lt; X-Frame-Options: SAMEORIGIN\n&lt; Content-Length: 0\n&lt;\n* Connection #0 to host oem24ai.jew.lab left intact\nmaw@dbi-servicess-MacBook-Pro-2 ~ %\n<\/pre>\n<br>\n\n\n\n<h4>MCP connection<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s test MCP connection with user and password using curl command. We will use following options:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>-s for silent execution<\/li>\n\n\n\n<li>-S to show errors<\/li>\n\n\n\n<li>-k to skip TLS certificate verification<\/li>\n\n\n\n<li>-u to provide user\/password<\/li>\n\n\n\n<li>-H to provide the header<\/li>\n\n\n\n<li>-X to give the HTTP method<\/li>\n\n\n\n<li>-d to display the data to be sent in the HTTP request body in json format<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The MCP method specified in the JSON request body is initialize. We use this method to establish an initial connection with the MCP server and negotiate protocol capabilities.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First securely read the password into a shell variable.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">[oracle@oem24ai ~]$ read -rs -p \"OEM password: \" OEM_PASS\nOEM password: [oracle@oem24ai ~]$\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">Then run the curl command to test the MCP connection.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]\">[oracle@oem24ai ~]$ curl -sS -k -u \"sysman:${OEM_PASS}\" \\\n  -H \"Content-Type: application\/json\" \\\n  -H \"Accept: application\/json, text\/event-stream\" \\\n  -X POST \"https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"id\": 1,\n    \"method\": \"initialize\",\n    \"params\": {\n      \"protocolVersion\": \"2025-06-18\",\n      \"capabilities\": {},\n      \"clientInfo\": {\n        \"name\": \"oem-mcp-test\",\n        \"version\": \"1.0\"\n      }\n    }\n  }'\n{\"id\":1,\"jsonrpc\":\"2.0\",\"result\":{\"protocolVersion\":\"2025-06-18\",\"serverInfo\":{\"version\":\"1.0.0\",\"name\":\"em-mcp-server\",\"title\":\"Enterprise Manager MCP Server\"},\"capabilities\":{\"prompts\":{\"listChanged\":false},\"resources\":{\"listChanged\":false,\"subscribe\":false},\"tools\":{\"listChanged\":false}},\"instructions\":\"This is an MCP server to interface with Enterprise Manager (EM) Unless otherwise specified, assume that databases and database targets refers to the following target types: oracle_database, oracle_pdb, rac_database, oracle_cloud_atp, oracle_cloud_adw.\"}}[oracle@oem24ai ~]$\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">As we can see in the result, the connection to the MCP server was successful.<\/p>\n\n\n\n<h3>Query MCP tool lists<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s retrieve the lists of available tools exposed by the MCP server. This time, we will use the MCP method tools\/list.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5,6,7,8,9,10,11]\">[oracle@oem24ai ~]$ curl -sS -k -u \"sysman:$OEM_PASS\" \\\n  -H \"Content-Type: application\/json\" \\\n  -H \"Accept: application\/json, text\/event-stream\" \\\n  -H \"MCP-Protocol-Version: 2025-06-18\" \\\n  -X POST \"https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"id\": 2,\n    \"method\": \"tools\/list\",\n    \"params\": {}\n  }'\n{\"id\":2,\"jsonrpc\":\"2.0\",\"result\":{\"tools\":[{\"name\":\"ExecuteSql\",\"title\":\"Execute SQL\",\"description\":\"Execute SQL through the Free Query API. By default the query runs against the Enterprise Manager repository; include targetConnection to run against a target database. Use bind parameters instead of direct text substitution when applicable. The response contains query results, response time, and available result metadata.\",\"inputSchema\":{\"properties\":{\"isSqlMonitorEnabled\":{\"description\":\"optional flag to enable SQL monitoring. Defaults to false\",\"type\":\"boolean\"},\"excludeNullValues\":{\"description\":\"optional flag to omit null-valued properties from repository query results. Defaults to false\",\"type\":\"boolean\"},\"resourcePlan\":{\"description\":\"optional resource plan action information for query tracking. Target database queries require action because it cannot be inferred from a query name\",\"type\":\"object\",\"properties\":{\"action\":{\"type\":\"string\",\"description\":\"optional repository query action and required target database query action\"}}},\"query\":{\"description\":\"the sql query to execute\",\"type\":\"string\"},\"bindType\":{\"description\":\"optional bind parameter mode. Defaults to INDEX. Use NAME when parameters are bound by alias\",\"type\":\"string\",\"enum\":[\"INDEX\",\"NAME\"]},\"transforms\":{\"description\":\"optional response transforms currently used for localized target type columns\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\",\"description\":\"transform type\"},\"columnName\":{\"type\":\"string\",\"description\":\"source column name\"},\"localizedColumnName\":{\"type\":\"string\",\"description\":\"localized output column name\"}}}},\"limit\":{\"description\":\"optional positive integer row limit. Va\n...\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">As we can see in the result we see the list of all available tools exposed by the MCP server, the first one been ExecuteSql.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This confirm our connection and use of the MCP server is ok.<\/p>\n\n\n\n<h3>Configure the MCP client<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As MCP client I will use my Visual Studio Code installed on my Mac. To use it with the MCP server, I will install and use the Codex extension from OpenAI. I will sign in with my ChatGPT account.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenAI Codex is an AI-powered coding agent developed by OpenAI. It helps developers write, understand, debug, test, and modify code, often working directly with an existing software project.<\/p>\n\n\n\n<h4>Configure Codex extension<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">I will configure Codex with sysman password converted into a Base64-encoded string. For this I will use the base64 linux command:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nmaw@dbi-servicess-MacBook-Pro-2 ~ % printf '%s' 'sysman:XXXXXXX' | base64 | tr -d '\\n'\nc3lzbXXXXXXXXXXXXXXyMDI2%                                                                                                                                            maw@dbi-servicess-MacBook-Pro-2 ~ %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">And I will configure Codex extension, see next 2 pictures. I provided OEM-MCP-native as MCP server name.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644ca7936&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644ca7936\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"739\" height=\"342\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png\" alt=\"\" class=\"wp-image-48258\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png 739w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1-300x139.png 300w\" sizes=\"auto, (max-width: 739px) 100vw, 739px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644ca7e76&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644ca7e76\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"835\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-2.png\" alt=\"\" class=\"wp-image-48259\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-2.png 747w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-2-268x300.png 268w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This configuration will be stored in the config.toml file from the .codex directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The connection was not working. Asking for the list of tools exposed by the MCP server was just provided an output that no tool was existing. I could find the following in the codex output terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>026-10-26 15:03:53.265 &#091;warning] Failed to discover app tools authStatus=bearerToken error=\"MCP startup failed: handshaking with MCP server failed: Send message error Transport &#091;codex_rmcp_client::tool_list_changes::ToolListChanges&lt;codex_rmcp_client::event_notification_transport::EventNotificationTransport&lt;rmcp::transport::worker::WorkerTransport&lt;rmcp::transport::streamable_http_client::StreamableHttpClientWorker&lt;codex_rmcp_client::http_client_adapter::StreamableHttpClientAdapter&gt;&gt;&gt;&gt;] error: Client error: HTTP request failed: http\/request failed: error sending request for url (https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp), when send initialize request: Send message error Transport &#091;codex_rmcp_client::tool_list_changes::ToolListChanges&lt;codex_rmcp_client::event_notification_transport::EventNotificationTransport&lt;rmcp::transport::worker::WorkerTransport&lt;rmcp::transport::streamable_http_client::StreamableHttpClientWorker&lt;codex_rmcp_client::http_client_adapter::StreamableHttpClientAdapter&gt;&gt;&gt;&gt;] error: Client error: HTTP request failed: http\/request failed: error sending request for url (https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp), when send initialize request\" hostId=local pluginId=null server=OEM-MCP-native<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I made some further check with curl command omitting -k option:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,14,15]\">\nmaw@dbi-servicess-MacBook-Pro-2 .codex % curl -v \\\n  https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp\n* Host oem24ai.jew.lab:7803 was resolved.\n* IPv6: (none)\n* IPv4: 10.0.10.250\n*   Trying 10.0.10.250:7803...\n* Connected to oem24ai.jew.lab (10.0.10.250) port 7803\n* ALPN: curl offers h2,http\/1.1\n* (304) (OUT), TLS handshake, Client hello (1):\n*  CAfile: \/etc\/ssl\/cert.pem\n*  CApath: none\n* (304) (IN), TLS handshake, Server hello (2):\n* TLSv1.2 (IN), TLS handshake, Certificate (11):\n* TLSv1.2 (OUT), TLS alert, unknown CA (560):\n* SSL certificate problem: self signed certificate in certificate chain\n* Closing connection\n* TLSv1.2 (IN), TLS handshake, Certificate (11):\n* TLSv1.2 (OUT), TLS alert, unknown CA (560):\ncurl: (60) SSL certificate problem: self signed certificate in certificate chain\nMore details here: https:\/\/curl.se\/docs\/sslcerts.html\n\ncurl failed to verify the legitimacy of the server and therefore could not\nestablish a secure connection to it. To learn more about this situation and\nhow to fix it, please visit the web page mentioned above.\nmaw@dbi-servicess-MacBook-Pro-2 .codex %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">And I could confirm that the problem comes from missing TLS certificate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I ran following command to see what certificate was sent by the MCP server and understand why certificate verification failed.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5]\">\n[oracle@oem24ai ~]$ openssl s_client \\\n  -connect oem24ai.jew.lab:7803 \\\n  -servername oem24ai.jew.lab \\\n  -showcerts &amp;1 |\ngrep -E 'subject=|issuer=|verify error|Verify return code'\nverify error:num=19:self-signed certificate in certificate chain\nsubject=CN=oem24ai.iaas.jewlab.oraclevcn.com\nissuer=O=EnterpriseManager on oem24ai.iaas.jewlab.oraclevcn.com, OU=EnterpriseManager on oem24ai.iaas.jewlab.oraclevcn.com, L=EnterpriseManager on oem24ai.iaas.jewlab.oraclevcn.com, ST=CA, C=US, CN=oem24ai.iaas.jewlab.oraclevcn.com\n    Verify return code: 19 (self-signed certificate in certificate chain)\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">The return code: 19 confirm that the certificate could not be considered as trusted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second command will display the DNS name available in the certificate, here we do not have any:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4]\">\n[oracle@oem24ai ~]$ openssl s_client \\\n  -connect oem24ai.jew.lab:7803 \\\n  -servername oem24ai.jew.lab 2&gt;\/dev\/null |\nopenssl x509 -noout -ext subjectAltName\nNo extensions in certificate\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">Also we can see that the domain name registered in the MCP Server certificate is not the same that the one we use to connect: . jew.lab versus jewlab.oraclevcn.com. We will have to provide both names in the new certificate we will create.<\/p>\n\n\n\n<h4>Configure a new trusted certificate and implement it into OEM<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">To help with this following oracle documentation is useful:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.oracle.com\/en\/enterprise-manager\/cloud-control\/enterprise-manager-cloud-control\/24.1\/emadm\/emctl-security-commands.html\">https:\/\/docs.oracle.com\/en\/enterprise-manager\/cloud-control\/enterprise-manager-cloud-control\/24.1\/emadm\/emctl-security-commands.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.oracle.com\/en\/enterprise-manager\/cloud-control\/enterprise-manager-cloud-control\/24.1\/emsec\/configuring-secure-communication.html\">https:\/\/docs.oracle.com\/en\/enterprise-manager\/cloud-control\/enterprise-manager-cloud-control\/24.1\/emsec\/configuring-secure-communication.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">See parts: \u201cConfiguring Third Party Certificates\u201d, then \u201cConfiguring a Third Party Certificate for HTTPS Console Users\u201d.<\/p>\n\n\n\n<h5>Generate the private Certificate Authority (CA)<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s create the private key to be used to sign certificates (CA private key):<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,10]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % pwd\n\/Users\/maw\/Documents\/Dokument\/pem_ssh_key\/OEM-Lab\/oem-pki\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl genrsa -out oem-root-ca.key 4096\nGenerating RSA private key, 4096 bit long modulus\n.......++++\n.............................................................................................................................................................................++++\ne is 65537 (0x10001)\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 8\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I generated the CA certificate:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,8,16]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % pwd\n\/Users\/maw\/Documents\/Dokument\/pem_ssh_key\/OEM-Lab\/oem-pki\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 8\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl req -new -x509 -sha256 \\\n  -days 3650 \\\n  -key oem-root-ca.key \\\n  -out oem-root-ca.crt \\\n  -subj \"\/CN=OEM Lab Root CA\" \\\n  -addext \"basicConstraints=critical,CA:TRUE\" \\\n  -addext \"keyUsage=critical,keyCertSign,cRLSign\"\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 16\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.7K Oct 29 11:08 oem-root-ca.crt\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I checked the certificate:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl x509 -in oem-root-ca.crt \\\n  -noout -subject -issuer -dates\nsubject= \/CN=OEM Lab Root CA\nissuer= \/CN=OEM Lab Root CA\nnotBefore=Oct 29 10:08:18 2026 GMT\nnotAfter=Oct 26 10:08:18 2036 GMT\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I checked the basic constraints extension:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl x509 -in oem-root-ca.crt -noout -text | \\\n  grep -A 3 \"Basic Constraints\"\n            X509v3 Basic Constraints: critical\n                CA:TRUE\n            X509v3 Key Usage: critical\n                Certificate Sign, CRL Sign\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">All good, the certificate is marked as a Certificate Authority.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I verified the Root CA is self-signed:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl verify -CAfile oem-root-ca.crt oem-root-ca.crt\noem-root-ca.crt: OK\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<h5>Generate the OMS server certificate with both DNS names<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">I generated the OMS private key and CSR:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,9,10,11,12,13,20]\">maw@dbi-servicess-MacBook-Pro-2 oem-pki % pwd\n\/Users\/maw\/Documents\/Dokument\/pem_ssh_key\/OEM-Lab\/oem-pki\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 16\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.7K Oct 29 11:08 oem-root-ca.crt\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl req -new -newkey rsa:3072 -nodes \\\n  -keyout oem24ai.key \\\n  -out oem24ai.csr \\\n  -subj \"\/CN=oem24ai.iaas.jewlab.oraclevcn.com\" \\\n  -addext \"subjectAltName=DNS:oem24ai.iaas.jewlab.oraclevcn.com,DNS:oem24ai.jew.lab\"\nGenerating a 3072 bit RSA private key\n.....................++++\n........................++++\nwriting new private key to 'oem24ai.key'\n-----\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 32\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.7K Oct 29 11:08 oem-root-ca.crt\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   2.4K Oct 29 11:16 oem24ai.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.3K Oct 29 11:16 oem24ai.csr\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">We have now oem24ai.key which is OMS server private key, oem24ai.csr which is certificate signing request.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I created the certificate extensions (we need to ensure the signed certificate contains the correct SAN entries):<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5,6,7,8,10]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % cat &gt; oem24ai.ext &lt;&lt;&#039;EOF&#039;\nbasicConstraints=critical,CA:FALSE\nkeyUsage=critical,digitalSignature,keyEncipherment\nextendedKeyUsage=serverAuth\nsubjectAltName=DNS:oem24ai.iaas.jewlab.oraclevcn.com,DNS:oem24ai.jew.lab\nsubjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nEOF\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 40\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.7K Oct 29 11:08 oem-root-ca.crt\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   2.4K Oct 29 11:16 oem24ai.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.3K Oct 29 11:16 oem24ai.csr\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   249B Oct 29 11:18 oem24ai.ext\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I signed the certificate with my private CA:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5,6,7,8,9,14]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl x509 -req \\\n  -in oem24ai.csr \\\n  -CA oem-root-ca.crt \\\n  -CAkey oem-root-ca.key \\\n  -CAcreateserial \\\n  -out oem24ai.crt \\\n  -days 825 \\\n  -sha256 \\\n  -extfile oem24ai.ext\nSignature ok\nsubject=\/CN=oem24ai.iaas.jewlab.oraclevcn.com\nGetting CA Private Key\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 56\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.7K Oct 29 11:08 oem-root-ca.crt\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   2.4K Oct 29 11:16 oem24ai.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.3K Oct 29 11:16 oem24ai.csr\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   249B Oct 29 11:18 oem24ai.ext\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users    17B Oct 29 11:19 oem-root-ca.srl\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.8K Oct 29 11:19 oem24ai.crt\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">oem24ai.crt is now created and signed by my private CA.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">oem-root-ca.key must never be copied and must stay locally on my Mac.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I checked the certificate subject, issuer, validity and SAN:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl x509 -in oem24ai.crt -noout -subject -issuer -dates\nsubject= \/CN=oem24ai.iaas.jewlab.oraclevcn.com\nissuer= \/CN=OEM Lab Root CA\nnotBefore=Oct 29 10:19:27 2026 GMT\nnotAfter=Jan 31 10:19:27 2029 GMT\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl x509 -in oem24ai.crt -noout -text | \\\ngrep -A 1 \"Subject Alternative Name\"\n            X509v3 Subject Alternative Name:\n                DNS:oem24ai.iaas.jewlab.oraclevcn.com, DNS:oem24ai.jew.lab\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I can see that both my DNS names are now existing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I verified the certificate chain:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl verify -CAfile oem-root-ca.crt oem24ai.crt\noem24ai.crt: OK\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I also verified if the certificate is suitable for HTTPS:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl x509 -in oem24ai.crt -noout -text | \\\ngrep -A 2 -E \"Basic Constraints:|Key Usage:\"\n            X509v3 Basic Constraints: critical\n                CA:FALSE\n            X509v3 Key Usage: critical\n                Digital Signature, Key Encipherment\n            X509v3 Extended Key Usage:\n                TLS Web Server Authentication\n            X509v3 Subject Alternative Name:\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<h5>Create the Oracle Wallet for OEM 24ai<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">I have created all needed certificates for my OEM HTTPS console access. Following are available.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\"><strong>File<\/strong><\/td><td>P<strong>urpose<\/strong><\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">oem-root-ca.crt<\/td><td>Private CA certificate<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">oem24ai.crt<\/td><td>Signed OMS server certificate<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\">oem24ai.key<\/td><td>OMS server private key<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I transferred the needed certificate files to the OMS server:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % scp -i \/Users\/maw\/Documents\/Dokument\/pem_ssh_key\/OEM-lab\/OEM-lab.key oem-root-ca.crt oem24ai.crt oem24ai.key oracle@oem24ai.jew.lab:\/home\/oracle\/\noem-root-ca.crt                                                                                                                                                                                                                                                           100% 1744   121.2KB\/s   00:00\noem24ai.crt                                                                                                                                                                                                                                                               100% 1822   127.0KB\/s   00:00\noem24ai.key                                                                                                                                                                                                                                                               100% 2488   156.6KB\/s   00:00\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I created the needed directory for certificate and moved the files:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,6,8,10,17]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] pwd\n\/u01\/app\/oracle\/oms24ai\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] mkdir -p oem-ssl\/wallet\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] chmod -R 700 oem-ssl\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] mv ~\/oem-root-ca.crt ~\/oem24ai.crt ~\/oem24ai.key oem-ssl\/\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -ltrh oem-ssl\ntotal 12K\n-rw-r--r--. 1 oracle oinstall 1.8K Oct 29 10:33 oem-root-ca.crt\n-rw-r--r--. 1 oracle oinstall 1.8K Oct 29 10:33 oem24ai.crt\n-rw-r--r--. 1 oracle oinstall 2.5K Oct 29 10:33 oem24ai.key\ndrwx------. 2 oracle oinstall    6 Oct 29 10:39 wallet\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] chmod 600 oem-ssl\/oem24ai.key\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I created the Oracle Wallet:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,4,5]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] export WALLET_DIR=\/u01\/app\/oracle\/oms24ai\/oem-ssl\/wallet\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/orapki wallet create \\\n  -wallet \"$WALLET_DIR\" \\\n  -auto_login\nOracle PKI Tool Release 19.0.0.0.0 - Production\nVersion 19.32.0.0.0\nCopyright (c) 2004, 2026, Oracle and\/or its affiliates. All rights reserved.\n\nEnter password:\nEnter password again:\nOperation is successfully completed.\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I checked the created wallet files:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -ltrh \"$WALLET_DIR\"\ntotal 8.0K\n-rw-------. 1 oracle oinstall   0 Oct 29 10:46 ewallet.p12.lck\n-rw-------. 1 oracle oinstall 235 Oct 29 10:46 ewallet.p12\n-rw-------. 1 oracle oinstall   0 Oct 29 10:46 cwallet.sso.lck\n-rw-------. 1 oracle oinstall 280 Oct 29 10:46 cwallet.sso\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I checked the private key format, should be private key:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] head -n 1 \/u01\/app\/oracle\/oms24ai\/oem-ssl\/oem24ai.key\n-----BEGIN PRIVATE KEY-----\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">The private key format should be compatible with storing it into Oracle Wallet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We can check that certificate and private keys match:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,5,6]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] openssl x509 -in \/u01\/app\/oracle\/oms24ai\/oem-ssl\/oem24ai.crt \\\n  -pubkey -noout | openssl dgst -sha256\nSHA2-256(stdin)= 5a80b1977405XXXXf5b0cc39ab1ea\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] openssl pkey -in \/u01\/app\/oracle\/oms24ai\/oem-ssl\/oem24ai.key \\\n  -pubout | openssl dgst -sha256\nSHA2-256(stdin)= 5a80b1977405XXXXf5b0cc39ab1ea\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">Both SHA-256 digests match.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now I will import the signed OMS certificate and private key into the wallet. I will first setup variable for the directories and check wallet files:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,6,9]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] echo $WALLET_DIR\n\/u01\/app\/oracle\/oms24ai\/oem-ssl\/wallet\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] export CERT_DIR=\/u01\/app\/oracle\/oms24ai\/oem-ssl\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] echo $CERT_DIR\n\/u01\/app\/oracle\/oms24ai\/oem-ssl\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -l \"$WALLET_DIR\"\/ewallet.p12 \"$WALLET_DIR\"\/cwallet.sso\n-rw-------. 1 oracle oinstall 280 Oct 29 10:46 \/u01\/app\/oracle\/oms24ai\/oem-ssl\/wallet\/cwallet.sso\n-rw-------. 1 oracle oinstall 235 Oct 29 10:46 \/u01\/app\/oracle\/oms24ai\/oem-ssl\/wallet\/ewallet.p12\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I will secure wallet password into a variable:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] read -rs -p \"Wallet password: \" WALLET_PWD\nWallet password: oracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">And import the key into the wallet:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5,6,7]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/orapki wallet import_private_key \\\n  -wallet \"$WALLET_DIR\" \\\n  -pwd \"$WALLET_PWD\" \\\n  -alias oem24ai \\\n  -pvtkeyfile \"$CERT_DIR\/oem24ai.key\" \\\n  -cert \"$CERT_DIR\/oem24ai.crt\" \\\n  -cacert \"$CERT_DIR\/oem-root-ca.crt\"\nOracle PKI Tool Release 19.0.0.0.0 - Production\nVersion 19.32.0.0.0\nCopyright (c) 2004, 2026, Oracle and\/or its affiliates. All rights reserved.\n\nEnter private key password:\nPKI-07014: Unable to import private key. Header not present in private key\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">It seems the format of the key is not compatible. openSSL created a PKCS#8 PEM format key, let&#8217;s convert it to RSA PEM format:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,8]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] cp $CERT_DIR\/oem24ai.key $CERT_DIR\/oem24ai.key.bak.20261029_1202\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ssh-keygen -p -m PEM -f $CERT_DIR\/oem24ai.key\nEnter new passphrase (empty for no passphrase):\nEnter same passphrase again:\nYour identification has been saved with the new passphrase.\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] head -n 1 \"\/u01\/app\/oracle\/oms24ai\/oem-ssl\/oem24ai.key\"\n-----BEGIN RSA PRIVATE KEY-----\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">Now I have a RSA key format.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s retry the import of the key into the wallet:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5,6,7]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/orapki wallet import_private_key \\\n  -wallet \"$WALLET_DIR\" \\\n  -pwd \"$WALLET_PWD\" \\\n  -alias oem24ai \\\n  -pvtkeyfile \"$CERT_DIR\/oem24ai.key\" \\\n  -cert \"$CERT_DIR\/oem24ai.crt\" \\\n  -cacert \"$CERT_DIR\/oem-root-ca.crt\"\nOracle PKI Tool Release 19.0.0.0.0 - Production\nVersion 19.32.0.0.0\nCopyright (c) 2004, 2026, Oracle and\/or its affiliates. All rights reserved.\n\nEnter private key password:\nPKI-07014: Unable to import private key. Header not present in private key\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">Still not ok. Let&#8217;s try converting it into a new p12 format key.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5,6,10]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] openssl pkcs12 -export \\\n  -inkey \"$CERT_DIR\/oem24ai.key\" \\\n  -in \"$CERT_DIR\/oem24ai.crt\" \\\n  -certfile \"$CERT_DIR\/oem-root-ca.crt\" \\\n  -name oem24ai \\\n  -out \"$CERT_DIR\/oem24ai.p12\"\nEnter Export Password:\nVerifying - Enter Export Password:\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -ltrh $CERT_DIR\ntotal 24K\n-rw-r--r--. 1 oracle oinstall 1.8K Oct 29 10:33 oem-root-ca.crt\n-rw-r--r--. 1 oracle oinstall 1.8K Oct 29 10:33 oem24ai.crt\ndrwx------. 2 oracle oinstall   90 Oct 29 10:46 wallet\n-rw-------. 1 oracle oinstall 2.5K Oct 29 11:02 oem24ai.key.bak.20261029_1202\n-rw-------. 1 oracle oinstall 2.5K Oct 29 11:02 oem24ai.key\n-rw-------. 1 oracle oinstall 4.9K Oct 29 11:12 oem24ai.p12\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I secured the new p12 key password and try the import again.<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,5,6,7,8]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] read -rs -p \"PKCS12 password: \" PKCS12_PWD\nPKCS12 password: oracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/orapki wallet import_pkcs12 \\\n  -wallet \"$WALLET_DIR\" \\\n  -pwd \"$WALLET_PWD\" \\\n  -pkcs12file \"$CERT_DIR\/oem24ai.p12\" \\\n  -pkcs12pwd \"$PKCS12_PWD\"\nOracle PKI Tool Release 19.0.0.0.0 - Production\nVersion 19.32.0.0.0\nCopyright (c) 2004, 2026, Oracle and\/or its affiliates. All rights reserved.\n\norapki command import_pkcs12 executed successfully.\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">The import was successful now!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I checked the wallet content:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/orapki wallet display \\\n  -wallet \"$WALLET_DIR\" \\\n  -complete\nOracle PKI Tool Release 19.0.0.0.0 - Production\nVersion 19.32.0.0.0\nCopyright (c) 2004, 2026, Oracle and\/or its affiliates. All rights reserved.\n\nRequested Certificates:\nUser Certificates:\nSubject:        CN=oem24ai.iaas.jewlab.oraclevcn.com\nIssuer:         CN=OEM Lab Root CA\nSerial Number:  00:B3:5D:86:6A:43:33:F1:1F\nKey Length      3072\nMD5 digest:     EC:14:E4:12:22:16:34:FC:28:1D:59:B8:F9:EA:F0:B2\nSHA digest:     31:EE:0B:44:44:2C:05:A7:CC:B8:3B:70:C6:F9:E8:83:0E:55:F2:7D\n\nTrusted Certificates:\nSubject:        CN=OEM Lab Root CA\nIssuer:         CN=OEM Lab Root CA\nSerial Number:  00:D7:B3:06:4D:B3:41:CF:9F\nKey Length      4096\nMD5 digest:     C5:16:F1:A9:AA:AE:9A:FD:1A:A6:6E:72:9C:0B:0A:95\nSHA digest:     AA:E4:F4:49:EF:6C:17:4D:9E:30:42:E9:34:A6:80:5D:AB:F3:7D:02\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<h5>Configure OEM 24ai to use the new wallet for HTTPS on port 7803<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">I first checked that the Wallet is autologin and checked wallet content (should have the OEM server certificate):<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,5,6,7]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -l \"$WALLET_DIR\"\/ewallet.p12 \"$WALLET_DIR\"\/cwallet.sso\n-rw-------. 1 oracle oinstall 4931 Oct 29 11:14 \/u01\/app\/oracle\/oms24ai\/oem-ssl\/wallet\/cwallet.sso\n-rw-------. 1 oracle oinstall 4886 Oct 29 11:14 \/u01\/app\/oracle\/oms24ai\/oem-ssl\/wallet\/ewallet.p12\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/orapki wallet display \\\n  -wallet \"$WALLET_DIR\" \\\n  -summary\nOracle PKI Tool Release 19.0.0.0.0 - Production\nVersion 19.32.0.0.0\nCopyright (c) 2004, 2026, Oracle and\/or its affiliates. All rights reserved.\n\nRequested Certificates:\nUser Certificates:\nSubject:        CN=oem24ai.iaas.jewlab.oraclevcn.com\nTrusted Certificates:\nSubject:        CN=OEM Lab Root CA\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I backuped the current OMS configuration:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,3,7,9,13,18]\">oracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] mkdir oem-ssl\/backup-20261029\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -ld oem-ssl\/backup-20261029\/\n\ndrwxr-xr-x. 2 oracle oinstall 6 Oct 29 12:46 oem-ssl\/backup-20261029\/\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] cp -a \/u01\/app\/oracle\/oms24ai\/gc_inst\/em\/EMGC_OMS1 .\/oem-ssl\/backup-20261029\/\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -ltrh .\/oem-ssl\/backup-20261029\/\ntotal 0\ndrwxr-x---. 3 oracle oinstall 43 Oct 29 08:17 EMGC_OMS1\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -ltrh .\/oem-ssl\/backup-20261029\/EMGC_OMS1\/\ntotal 4.0K\ndrwxr-x---. 10 oracle oinstall  110 Oct 21 05:33 sysman\n-rw-r-----.  1 oracle oinstall 2.7K Oct 29 08:17 emgc.properties\n\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] ls -ltrh .\/oem-ssl\/backup-20261029\/EMGC_OMS1\/sysman\/\ntotal 12K\ndrwxr--r--.  2 oracle oinstall    6 Oct 14 13:52 state\ndrwxr--r--.  3 oracle oinstall   19 Oct 14 13:57 emcli\ndrwxr-x---.  2 oracle oinstall   89 Oct 14 14:07 ocm\ndrwxr-----.  2 oracle oinstall   43 Oct 14 14:09 backup\ndrwxr--r--.  2 oracle oinstall    6 Oct 15 09:56 tmp\ndrwxr-x---.  9 oracle oinstall 4.0K Oct 21 11:55 agentpush\ndrwxr--r--.  5 oracle oinstall 4.0K Oct 29 08:16 log\ndrwxr-x---. 11 oracle oinstall 4.0K Oct 29 08:17 config\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I added the wallet to the console (This targets the HTTPS Console certificate):<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/emctl secure console -wallet \/u01\/app\/oracle\/oms24ai\/oem-ssl\/wallet\nOracle Enterprise Manager 24ai Release 1\nCopyright (c) 1996, 2024 Oracle Corporation.  All rights reserved.\nSecuring Console... Started.\nEnter Enterprise Manager Root (SYSMAN) Password :\nSecuring Console... Successful\nRun SSL Reload Command\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I ran the command to reload the certificate without having to restart the OMS:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] $OMS_HOME\/bin\/emctl secure ssl_reload\nOracle Enterprise Manager 24ai Release 1\nCopyright (c) 1996, 2024 Oracle Corporation.  All rights reserved.\nSSL Reload... Started.\nSSL Reload completed successfully.\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">I verified the certificate actually presented by port&nbsp;<code>7803<\/code>:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4]\">\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320] echo | openssl s_client \\\n  -connect oem24ai.iaas.jewlab.oraclevcn.com:7803 \\\n  -servername oem24ai.iaas.jewlab.oraclevcn.com \\\n  2&gt;\/dev\/null | openssl x509 -noout -subject -issuer -dates\nsubject=CN=oem24ai.iaas.jewlab.oraclevcn.com\nissuer=CN=OEM Lab Root CA\nnotBefore=Oct 29 10:19:27 2026 GMT\nnotAfter=Jan 31 10:19:27 2029 GMT\noracle@oem24ai:\/u01\/app\/oracle\/oms24ai\/ [rdbms19320]\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">OEM is presenting the new certificate on port&nbsp;<code>7803<\/code><\/p>\n\n\n\n<h5>Trust the OEM Root CA on my local Mac<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">The OEM 24ai server now presents the new certificate on port&nbsp;<code>7803<\/code>. Next, I need my Mac to trust the CA that signed it, so Codex can establish a TLS connection to the OEM MCP endpoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I checked the certificate again:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,4,14]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % pwd\n\/Users\/maw\/Documents\/Dokument\/pem_ssh_key\/OEM-Lab\/oem-pki\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % ls -ltrh\ntotal 56\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   3.2K Oct 29 11:01 oem-root-ca.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.7K Oct 29 11:08 oem-root-ca.crt\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   2.4K Oct 29 11:16 oem24ai.key\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.3K Oct 29 11:16 oem24ai.csr\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   249B Oct 29 11:18 oem24ai.ext\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users    17B Oct 29 11:19 oem-root-ca.srl\n-rw-r--r--@ 1 maw  DBI-SERVICES\\Domain Users   1.8K Oct 29 11:19 oem24ai.crt\n\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % openssl x509 -in oem-root-ca.crt -noout -subject -issuer -dates\nsubject= \/CN=OEM Lab Root CA\nissuer= \/CN=OEM Lab Root CA\nnotBefore=Oct 29 10:08:18 2026 GMT\nnotAfter=Oct 26 10:08:18 2036 GMT\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">And finally I added the Root CA to macOS trusted certificates:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,4,5]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % sudo security add-trusted-cert \\\n  -d \\\n  -r trustRoot \\\n  -k \/Library\/Keychains\/System.keychain \\\n  \/Users\/maw\/Documents\/Dokument\/pem_ssh_key\/OEM-Lab\/oem-pki\/oem-root-ca.crt\nPassword:\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">Successful. This installed the CA into the system keychain and marks it as trusted.<\/p>\n\n\n\n<h5>Test connection with curl command<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s test the connection with curl command activating TLS verification, so omitting -k option.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I explicitly tested providing the CA file:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,3,33,41]\">maw@dbi-servicess-MacBook-Pro-2 oem-pki % curl -v \\\n&gt; -cacert \/Users\/maw\/Documents\/Dokument\/pem_ssh_key\/OEM-Lab\/oem-pki\/oem-root-ca.crt \\\n&gt; https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp\n* URL rejected: No host part in the URL\n* Closing connection\ncurl: (3) URL rejected: No host part in the URL\n* Host oem24ai.jew.lab:7803 was resolved.\n* IPv6: (none)\n* IPv4: 10.0.10.250\n*   Trying 10.0.10.250:7803...\n* Connected to oem24ai.jew.lab (10.0.10.250) port 7803\n* ALPN: curl offers h2,http\/1.1\n* (304) (OUT), TLS handshake, Client hello (1):\n*  CAfile: \/etc\/ssl\/cert.pem\n*  CApath: none\n* (304) (IN), TLS handshake, Server hello (2):\n* TLSv1.2 (IN), TLS handshake, Certificate (11):\n* TLSv1.2 (IN), TLS handshake, Server key exchange (12):\n* TLSv1.2 (IN), TLS handshake, Server finished (14):\n* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):\n* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (OUT), TLS handshake, Finished (20):\n* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (IN), TLS handshake, Finished (20):\n* SSL connection using TLSv1.2 \/ ECDHE-RSA-AES256-GCM-SHA384 \/ [blank] \/ UNDEF\n* ALPN: server did not agree on a protocol. Uses default.\n* Server certificate:\n*  subject: CN=oem24ai.iaas.jewlab.oraclevcn.com\n*  start date: Oct 29 10:19:27 2026 GMT\n*  expire date: Jan 31 10:19:27 2029 GMT\n*  subjectAltName: host \"oem24ai.jew.lab\" matched cert's \"oem24ai.jew.lab\"\n*  issuer: CN=OEM Lab Root CA\n*  SSL certificate verify ok.\n* using HTTP\/1.x\n&gt; GET \/em\/api\/mcp HTTP\/1.1\n&gt; Host: oem24ai.jew.lab:7803\n&gt; User-Agent: curl\/8.7.1\n&gt; Accept: *\/*\n&gt;\n* Request completely sent off\n&lt; HTTP\/1.1 401 Unauthorized\n&lt; Date: Thu, 29 Oct 2026 13:01:26 GMT\n&lt; Date: Thu, 29 Oct 2026 13:01:26 GMT\n&lt; X-ORACLE-DMS-ECID: d5217381-6141-4190-9a60-0a7f609ee162-00000beb\n&lt; X-ORACLE-DMS-RID: 0\n&lt; X-ORCL-EM-APIGW-ERR: 0\n&lt; X-ORCL-EM-APIGW-GUID: 9a1bdced-2748-8952-d070-7f568cfcb7fe\n&lt; X-ORCL-EMOA: true\n&lt; X-Content-Type-Options: nosniff\n&lt; X-XSS-Protection: 1; mode=block\n&lt; X-Frame-Options: SAMEORIGIN\n&lt; Content-Length: 0\n&lt;\n* Connection #0 to host oem24ai.jew.lab left intact\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">Working now. All ok. HTTP 401 Unauthorized is expected because we&#8217;re testing without credentials.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also tested with default certificate trust configuration:<\/p>\n\n\n\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,28,36]\">\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki % curl -v https:\/\/oem24ai.jew.lab:7803\/em\/api\/mcp\n* Host oem24ai.jew.lab:7803 was resolved.\n* IPv6: (none)\n* IPv4: 10.0.10.250\n*   Trying 10.0.10.250:7803...\n* Connected to oem24ai.jew.lab (10.0.10.250) port 7803\n* ALPN: curl offers h2,http\/1.1\n* (304) (OUT), TLS handshake, Client hello (1):\n*  CAfile: \/etc\/ssl\/cert.pem\n*  CApath: none\n* (304) (IN), TLS handshake, Server hello (2):\n* TLSv1.2 (IN), TLS handshake, Certificate (11):\n* TLSv1.2 (IN), TLS handshake, Server key exchange (12):\n* TLSv1.2 (IN), TLS handshake, Server finished (14):\n* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):\n* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (OUT), TLS handshake, Finished (20):\n* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):\n* TLSv1.2 (IN), TLS handshake, Finished (20):\n* SSL connection using TLSv1.2 \/ ECDHE-RSA-AES256-GCM-SHA384 \/ [blank] \/ UNDEF\n* ALPN: server did not agree on a protocol. Uses default.\n* Server certificate:\n*  subject: CN=oem24ai.iaas.jewlab.oraclevcn.com\n*  start date: Oct 29 10:19:27 2026 GMT\n*  expire date: Jan 31 10:19:27 2029 GMT\n*  subjectAltName: host \"oem24ai.jew.lab\" matched cert's \"oem24ai.jew.lab\"\n*  issuer: CN=OEM Lab Root CA\n*  SSL certificate verify ok.\n* using HTTP\/1.x\n&gt; GET \/em\/api\/mcp HTTP\/1.1\n&gt; Host: oem24ai.jew.lab:7803\n&gt; User-Agent: curl\/8.7.1\n&gt; Accept: *\/*\n&gt;\n* Request completely sent off\n&lt; HTTP\/1.1 401 Unauthorized\n&lt; Date: Thu, 29 Oct 2026 13:03:09 GMT\n&lt; Date: Thu, 29 Oct 2026 13:03:09 GMT\n&lt; X-ORACLE-DMS-ECID: d5217381-6141-4190-9a60-0a7f609ee162-00000bf3\n&lt; X-ORACLE-DMS-RID: 0\n&lt; X-ORCL-EM-APIGW-ERR: 0\n&lt; X-ORCL-EM-APIGW-GUID: 23898c58-68b4-bb57-a5fb-1baf10253a9e\n&lt; X-ORCL-EMOA: true\n&lt; X-Content-Type-Options: nosniff\n&lt; X-XSS-Protection: 1; mode=block\n&lt; X-Frame-Options: SAMEORIGIN\n&lt; Content-Length: 0\n&lt;\n* Connection #0 to host oem24ai.jew.lab left intact\nmaw@dbi-servicess-MacBook-Pro-2 oem-pki %\n<\/pre>\n<br>\n\n\n\n<p class=\"wp-block-paragraph\">My Mac now trusts the new OEM certificate.<\/p>\n\n\n\n<h5>Run a discovery test with Codex<\/h5>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644ca995d&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644ca995d\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"605\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/VS-MCP-MCP-discovery-1024x605.png\" alt=\"\" class=\"wp-image-48272\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/VS-MCP-MCP-discovery-1024x605.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/VS-MCP-MCP-discovery-300x177.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/VS-MCP-MCP-discovery-768x454.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/VS-MCP-MCP-discovery.png 1516w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And now I could successfully list the tools exposed by the MCP server using codex, as you can see in previous picture.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The MCP connection is working and exposes 113 tools.<\/p>\n\n\n\n<h3>Make some tests with Visual Studio Code and Codex as MCP client<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s test and request to list the targets that are up.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644ca9e5f&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644ca9e5f\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"881\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_1.1.png\" alt=\"\" class=\"wp-image-48274\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_1.1.png 762w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_1.1-259x300.png 259w\" sizes=\"auto, (max-width: 762px) 100vw, 762px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I can request which MCP server Codex is using and he will give me the tool that was used to retrieve the information.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644caa2b9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644caa2b9\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"543\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_1.2.png\" alt=\"\" class=\"wp-image-48276\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_1.2.png 764w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_1.2-300x213.png 300w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I queried to list the databases targets that are up:<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644caa7b9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644caa7b9\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"763\" height=\"918\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_2.png\" alt=\"\" class=\"wp-image-48277\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_2.png 763w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_2-249x300.png 249w\" sizes=\"auto, (max-width: 763px) 100vw, 763px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And I finally queried to show the databases by tablespace allocated space. Here we can see that Codex will use the ExecuteSql tool and run SQL queries on OMR:<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644caac5f&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644caac5f\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"763\" height=\"699\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.1.png\" alt=\"\" class=\"wp-image-48279\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.1.png 763w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.1-300x275.png 300w\" sizes=\"auto, (max-width: 763px) 100vw, 763px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644cab05e&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644cab05e\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"753\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.2.png\" alt=\"\" class=\"wp-image-48280\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.2.png 764w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.2-300x296.png 300w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ae5644cab48b&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ae5644cab48b\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"840\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.3.png\" alt=\"\" class=\"wp-image-48281\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.3.png 762w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/Check-VS-MCP_3.3-272x300.png 272w\" sizes=\"auto, (max-width: 762px) 100vw, 762px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3>To wrap up&#8230;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In this blog I showed how to configure client connection to MCP server built directly in OEM and how to use and query it. We can see that this solution is more powerful and flexible than using Oracle AI Database Assistant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here additional interesting websites:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.oracle.com\/en\/enterprise-manager\/cloud-control\/enterprise-manager-cloud-control\/24.1\/emadm\/enterprise-manager-model-context-protocol-server.html\">https:\/\/docs.oracle.com\/en\/enterprise-manager\/cloud-control\/enterprise-manager-cloud-control\/24.1\/emadm\/enterprise-manager-model-context-protocol-server.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/blogs.oracle.com\/observability\/oracle-enterprise-manager-mcp-server-bringing-enterprise-manager-data-to-ai-agents\">https:\/\/blogs.oracle.com\/observability\/oracle-enterprise-manager-mcp-server-bringing-enterprise-manager-data-to-ai-agents<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have recently been configuring and testing Oracle AI Database Assistant integrated with Oracle Enterprise Manager 24ai Release 1 Update 10, to interact with the Oracle Management Repository (OMR) using natural language prompts. It is time now to test the MCP server integrated with OEM 24ai Release 1 Update 12. In this blog, I will [&hellip;]<\/p>\n","protected":false},"author":48,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[59],"tags":[4141,3865],"type_dbi":[],"class_list":["post-48245","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-enterprise-manager-24ai","tag-mcp-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.8 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>AI meets OEM, use native OEM MCP server - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI meets OEM, use native OEM MCP server\" \/>\n<meta property=\"og:description\" content=\"I have recently been configuring and testing Oracle AI Database Assistant integrated with Oracle Enterprise Manager 24ai Release 1 Update 10, to interact with the Oracle Management Repository (OMR) using natural language prompts. It is time now to test the MCP server integrated with OEM 24ai Release 1 Update 12. In this blog, I will [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-31T01:47:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-31T01:49:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"739\" \/>\n\t<meta property=\"og:image:height\" content=\"342\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Marc Wagner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Wagner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/\"},\"author\":{\"name\":\"Marc Wagner\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8688ab6d4f96298817f7ecef541cd1cf\"},\"headline\":\"AI meets OEM, use native OEM MCP server\",\"datePublished\":\"2026-10-31T01:47:08+00:00\",\"dateModified\":\"2026-10-31T01:49:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/\"},\"wordCount\":1537,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/10\\\/20261026-Configure_MCP-1.png\",\"keywords\":[\"Enterprise Manager 24ai\",\"MCP Server\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/\",\"name\":\"AI meets OEM, use native OEM MCP server - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/10\\\/20261026-Configure_MCP-1.png\",\"datePublished\":\"2026-10-31T01:47:08+00:00\",\"dateModified\":\"2026-10-31T01:49:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8688ab6d4f96298817f7ecef541cd1cf\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/10\\\/20261026-Configure_MCP-1.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/10\\\/20261026-Configure_MCP-1.png\",\"width\":739,\"height\":342},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/ai-meets-oem-use-native-oem-mcp-server\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI meets OEM, use native OEM MCP server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8688ab6d4f96298817f7ecef541cd1cf\",\"name\":\"Marc Wagner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g\",\"caption\":\"Marc Wagner\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/marc-wagner\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"AI meets OEM, use native OEM MCP server - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/","og_locale":"en_US","og_type":"article","og_title":"AI meets OEM, use native OEM MCP server","og_description":"I have recently been configuring and testing Oracle AI Database Assistant integrated with Oracle Enterprise Manager 24ai Release 1 Update 10, to interact with the Oracle Management Repository (OMR) using natural language prompts. It is time now to test the MCP server integrated with OEM 24ai Release 1 Update 12. In this blog, I will [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/","og_site_name":"dbi Blog","article_published_time":"2026-10-31T01:47:08+00:00","article_modified_time":"2026-10-31T01:49:12+00:00","og_image":[{"width":739,"height":342,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png","type":"image\/png"}],"author":"Marc Wagner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Wagner","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/"},"author":{"name":"Marc Wagner","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8688ab6d4f96298817f7ecef541cd1cf"},"headline":"AI meets OEM, use native OEM MCP server","datePublished":"2026-10-31T01:47:08+00:00","dateModified":"2026-10-31T01:49:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/"},"wordCount":1537,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png","keywords":["Enterprise Manager 24ai","MCP Server"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/","url":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/","name":"AI meets OEM, use native OEM MCP server - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png","datePublished":"2026-10-31T01:47:08+00:00","dateModified":"2026-10-31T01:49:12+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8688ab6d4f96298817f7ecef541cd1cf"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/10\/20261026-Configure_MCP-1.png","width":739,"height":342},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/ai-meets-oem-use-native-oem-mcp-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"AI meets OEM, use native OEM MCP server"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8688ab6d4f96298817f7ecef541cd1cf","name":"Marc Wagner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a873cc6e7fbdbbcbdbcaf5dbded14ad9a77b2ec2c3e03b4d724ed33d35d5f328?s=96&d=mm&r=g","caption":"Marc Wagner"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/marc-wagner\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/48245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=48245"}],"version-history":[{"count":35,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/48245\/revisions"}],"predecessor-version":[{"id":48289,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/48245\/revisions\/48289"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=48245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=48245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=48245"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=48245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}