<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vertica 26.3.x – MCP server</title>
    <link>/en/admin/mcp-server/</link>
    <description>Recent content in MCP server on Vertica 26.3.x</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/en/admin/mcp-server/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Admin: Installing the MCP server RPM</title>
      <link>/en/admin/mcp-server/installing-mcp-server/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/mcp-server/installing-mcp-server/</guid>
      <description>
        
        
        &lt;p&gt;The Vertica MCP server RPM cannot be installed on a host that has Vertica installed, whether Vertica is running or not. Install the MCP server on a dedicated host outside the Vertica cluster. An existing Vertica database cluster is not required at RPM installation time, but you must specify the required connection information before the MCP server can connect to the database.&lt;/p&gt;
&lt;h2 id=&#34;upgrading-from-a-bundled-mcp-server-to-a-standalone-mcp-server&#34;&gt;Upgrading from a bundled MCP server to a standalone MCP server&lt;/h2&gt;
&lt;p&gt;Vertica version 26.2 and earlier bundle the MCP server with the database. To upgrade to the 26.3 standalone MCP server from an earlier release:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Upgrade the Vertica cluster to version 26.2.0-1.&lt;/li&gt;
&lt;li&gt;On a host that does not have Vertica installed, install the MCP server RPM by following the steps described here.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;installing-the-mcp-server&#34;&gt;Installing the MCP server&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;As root or with sudo, install the &lt;code&gt;vertica-mcp-server&lt;/code&gt; RPM:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MCP_OWNER_USER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mcpuser rpm -Uvh --replacepkgs --ignoresize &lt;span class=&#34;code-variable&#34;&gt;mcp_server_rpm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;where &lt;em&gt;&lt;code&gt;mcp_server_rpm&lt;/code&gt;&lt;/em&gt; is the RPM path and filename, for example &lt;code&gt;/tmp/vertica-mcp-server-26.3.0-0.x86_64.rpm&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MCP_OWNER_USER&lt;/code&gt; sets the operating system user that owns the MCP server installation. The default value is &lt;code&gt;mcpuser&lt;/code&gt;. Use &lt;code&gt;--owner-user&lt;/code&gt; to specify a different user.&lt;/p&gt;
&lt;p&gt;On success, you should see the following output:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Installed MCP binary to /opt/vertica/bin/vertica_mcp_server
Ensured log directory exists at /opt/vertica/log
Set ownership to mcpuser:mcpuser
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The installation process runs a compatibility check with the Vertica cluster. The check is skipped if the cluster is not reachable or the cluster URL is not provided at installation time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Confirm the installed RPM version:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -qa vertica-mcp-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output shows the installed version, for example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vertica-mcp-server-26.3.0-0.x86_64
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Switch to the MCP user:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;su - mcpuser
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&#34;admonition caution&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Caution&lt;/h4&gt;

You must switch to the MCP user before starting the MCP server for the first time. Starting the server as root sets incorrect permissions on &lt;code&gt;/opt/vertica/config&lt;/code&gt; and &lt;code&gt;/opt/vertica/log&lt;/code&gt;. If you start the server as root, you must manually correct permissions on those directories before the MCP user can start the server.

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;View the contents of the MCP server configuration file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /opt/vertica/config/mcp_server.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The file contains default values after a fresh installation, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# MCP Server Configuration File&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# This file was auto-generated with default values&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Configuration priority (highest to lowest):&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 1. Environment variables (MCP_*)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 2. This YAML file&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 3. Built-in defaults&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# For environment variable overrides, use:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# MCP_SERVER_ADDR, MCP_LOG_DIR, MCP_SSL_BASE_PATH, etc.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;server_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8667&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;read_timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;15s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;write_timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;1m40s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;idle_timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;1m0s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;shutdown_timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;30s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;max_header_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1048576&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ssl_base_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/mcp_server&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ssl_cert_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/mcp_server/server.pem&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ssl_key_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/mcp_server/server.key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ca_cert_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/mcp_server/ca.pem&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ca_key_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/mcp_server/ca.key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;use_pg_client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vertica_host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;vnode1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vertica_port&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;5433&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vertica_dbname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vertica_sslmode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;query_timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;20s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;max_query_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;storage_type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;leveldb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;storage_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/mcp_storage/userdb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vcluster_enabled&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vcluster_server_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;https://vnode1:8665&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vcluster_cert_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/vcluster_server/admin.pem&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vcluster_key_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/vcluster_server/admin.key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vcluster_ca_cert_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/config/vcluster_server/ca.pem&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vcluster_skip_tls_verify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vcluster_nodes_cache_ttl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;5m0s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;log_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/vertica/log&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;max_active_jobs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;max_running_jobs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;max_finished_jobs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;finished_job_retention&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;240h0m0s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;query_tree_retention&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;8760h0m0s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;external_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;node_host_overrides&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;192.168.1.101&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;vnode1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;192.168.1.102&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;vnode2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;192.168.1.103&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;vnode3&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;192.168.1.104&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;vnode4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;job_queue_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/opt/mcp_storage/job_queue&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Edit the following fields in &lt;code&gt;mcp_server.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vi /opt/vertica/config/mcp_server.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vertica_host&lt;/code&gt;: The hostname or IP address of the Vertica database server.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vertica_dbname&lt;/code&gt;: The name of the Vertica database to connect to.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vcluster_server_url&lt;/code&gt;: The URL of the VCluster Web Service, for example &lt;code&gt;https://&lt;/code&gt;&lt;em&gt;&lt;code&gt;&amp;lt;vcluster_server_node&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;code&gt;:8665&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

If you are upgrading from a previous bundled MCP server deployment, you can use your existing &lt;code&gt;mcp_server.yaml&lt;/code&gt; config file instead of manually editing the default values.

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy the VCluster server SSL certificate files to the MCP server host.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scp -r &amp;lt;vcluster-server-node&amp;gt;:/opt/vertica/config/vcluster_server/admin.pem &amp;lt;mcp-server-node&amp;gt;:/opt/vertica/config/vcluster_server/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scp -r &amp;lt;vcluster-server-node&amp;gt;:/opt/vertica/config/vcluster_server/admin.key &amp;lt;mcp-server-node&amp;gt;:/opt/vertica/config/vcluster_server/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scp -r &amp;lt;vcluster-server-node&amp;gt;:/opt/vertica/config/vcluster_server/ca.pem &amp;lt;mcp-server-node&amp;gt;:/opt/vertica/config/vcluster_server/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start the MCP server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/opt/vertica/bin/manage_mcp_server.sh start mcp_server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On success, you should see output similar to the following:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Doing action start
Starting MCP server
Started MCP server with PID 874791
MCP server startup verified successfully
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Verify that the MCP server binary exists at &lt;code&gt;/opt/vertica/bin/vertica_mcp_server&lt;/code&gt; and certificate files exist at &lt;code&gt;/opt/vertica/config/mcp_server&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generate a JWT token for the MCP server. For more information about JWT token generation options, see &lt;a href=&#34;../../../en/admin/mcp-server/#&#34;&gt;MCP server&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/opt/vertica/bin/vertica_mcp_server --generate-token --userid &lt;span class=&#34;code-variable&#34;&gt;user_id&lt;/span&gt; --dbpass &lt;span class=&#34;code-variable&#34;&gt;password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy the JWT token string from the output of the previous command.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update your AI agent configuration with the JWT token and the MCP server URL. The steps required depend on the type of agent you are using.&lt;/p&gt;
&lt;p&gt;For an example using Claude Desktop, see &lt;a href=&#34;../../../en/admin/mcp-server/claude-desktop-example/#&#34;&gt;Claude Desktop example&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The MCP server URL has the following format: &lt;code&gt;https://&lt;/code&gt;&lt;em&gt;&lt;code&gt;&amp;lt;mcp_server_node&amp;gt;&lt;/code&gt;&lt;/em&gt;&lt;code&gt;:8667/mcp&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The AI agent can now connect to the database and query data.&lt;/p&gt;
&lt;h2 id=&#34;starting-and-stopping-the-mcp-server&#34;&gt;Starting and stopping the MCP server&lt;/h2&gt;
&lt;p&gt;Switch to the MCP user and run the following command to start the MCP server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/opt/vertica/bin/manage_mcp_server.sh start mcp_server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To stop the MCP server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/opt/vertica/bin/manage_mcp_server.sh stop mcp_server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;uninstalling-the-mcp-server&#34;&gt;Uninstalling the MCP server&lt;/h2&gt;
&lt;p&gt;To uninstall the MCP server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -e vertica-mcp-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To verify uninstallation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -qa &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i vertica-mcp-server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After uninstallation, the MCP server binary is removed from &lt;code&gt;/opt/vertica/bin&lt;/code&gt;. The configuration &lt;code&gt;.yaml&lt;/code&gt; file and log files are preserved.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: MCP server environment variables</title>
      <link>/en/admin/mcp-server/environ-variables/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/mcp-server/environ-variables/</guid>
      <description>
        
        
        &lt;p&gt;The Vertica MCP server is configured through a YAML configuration file and environment variables, with the following order of precedence:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;li&gt;YAML configuration file (default path: &lt;code&gt;/opt/vertica/config/mcp_server.yaml&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Built-in defaults&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The following sections list the available environment variables and their corresponding YAML keys, grouped by area: server, TLS/SSL, database, storage and secrets, VCluster server, and job queue settings.&lt;/p&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

Duration values (timeouts, TTLs, and retentions) accept Go duration strings, such as &lt;code&gt;30s&lt;/code&gt;, &lt;code&gt;5m&lt;/code&gt;, &lt;code&gt;1h30m&lt;/code&gt;, or &lt;code&gt;240h&lt;/code&gt;.

&lt;/div&gt;
&lt;h2 id=&#34;server-settings&#34;&gt;Server settings&lt;/h2&gt;
&lt;p&gt;These variables control the HTTP server&#39;s network and request-handling behavior.&lt;/p&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Environment variable&lt;/th&gt; 

&lt;th &gt;
YAML key&lt;/th&gt; 

&lt;th &gt;
Default value&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_SERVER_ADDR&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;server_addr&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;:8667&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Listen address for the MCP server (for example, &lt;code&gt;:8667&lt;/code&gt;).&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_READ_TIMEOUT&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;read_timeout&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;15s&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum duration to read a full HTTP request.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_WRITE_TIMEOUT&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;write_timeout&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;100s&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum duration to write an HTTP response.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_IDLE_TIMEOUT&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;idle_timeout&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;60s&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum idle time on keep-alive connections.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_SHUTDOWN_TIMEOUT&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;shutdown_timeout&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;30s&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum wait time for graceful server shutdown.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_MAX_HEADER_BYTES&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;max_header_bytes&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;1048576&lt;/code&gt; (1 MB)&lt;/td&gt; 

&lt;td &gt;
Maximum bytes parsed from request headers.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_LOG_DIR&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;log_dir&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;/opt/vertica/log&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Directory where server log files are written.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_EXTERNAL_URL&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;external_url&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
(empty)&lt;/td&gt; 

&lt;td &gt;
External base URL for building download links (for example, profile exports and query trees). Set this when the server runs behind Docker, proxies, or firewalls so that generated links are reachable from outside.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h2 id=&#34;tlsssl-settings&#34;&gt;TLS/SSL settings&lt;/h2&gt;
&lt;p&gt;The MCP server requires TLS. If it does not find a certificate/key pair at startup, it automatically generates a self-signed CA and server certificate.&lt;/p&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

&lt;code&gt;MCP_SSL_BASE_PATH&lt;/code&gt; is applied first. Individual certificate paths (&lt;code&gt;MCP_SSL_CERT_PATH&lt;/code&gt;, and so on) override the paths derived from the base path.

&lt;/div&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Environment variable&lt;/th&gt; 

&lt;th &gt;
YAML key&lt;/th&gt; 

&lt;th &gt;
Default value&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_SSL_BASE_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;ssl_base_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;/opt/vertica/config/mcp_server&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Base directory for TLS files. Certificate and key paths are derived from this if not set individually.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_SSL_CERT_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;ssl_cert_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;&amp;lt;ssl_base_path&amp;gt;/server.pem&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Path to the TLS server certificate (PEM format).&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_SSL_KEY_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;ssl_key_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;&amp;lt;ssl_base_path&amp;gt;/server.key&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Path to the TLS server private key.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_CA_CERT_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;ca_cert_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;&amp;lt;ssl_base_path&amp;gt;/ca.pem&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Path to the root CA certificate for client verification.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_CA_KEY_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;ca_key_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;&amp;lt;ssl_base_path&amp;gt;/ca.key&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Path to the CA private key.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h2 id=&#34;database-settings&#34;&gt;Database settings&lt;/h2&gt;
&lt;p&gt;These variables configure the connection to the Vertica database.&lt;/p&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

&lt;code&gt;VERTICA_HOSTS&lt;/code&gt; accepts a comma-separated list of hostnames (for example, &lt;code&gt;host1,host2,host3&lt;/code&gt;). Duplicate entries are automatically removed.

&lt;/div&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Environment variable&lt;/th&gt; 

&lt;th &gt;
YAML key&lt;/th&gt; 

&lt;th &gt;
Default value&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;VERTICA_HOST&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vertica_host&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;localhost&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Vertica host to which the MCP server connects.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;VERTICA_PORT&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vertica_port&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;5433&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Vertica server port.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;VERTICA_DBNAME&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vertica_dbname&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
(empty — server default)&lt;/td&gt; 

&lt;td &gt;
Database name. If empty, the server&#39;s default database is used.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;VERTICA_SSLMODE&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vertica_sslmode&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;disable&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
TLS mode for the Vertica connection. Accepted values are &lt;code&gt;disable&lt;/code&gt;, &lt;code&gt;require&lt;/code&gt;, &lt;code&gt;verify-ca&lt;/code&gt;, and &lt;code&gt;verify-full&lt;/code&gt;. This setting is not supported by the native Vertica client (the default client); if you use the native client, set it to &lt;code&gt;disable&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_USE_PG_CLIENT&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;use_pg_client&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Use the PostgreSQL wire protocol client instead of the native Vertica client.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_QUERY_TIMEOUT&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;query_timeout&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;20s&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum duration for a single database query.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_MAX_QUERY_ROWS&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;max_query_rows&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;10000&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum rows returned per query to prevent runaway result sets.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_USE_LOAD_BALANCING&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;use_load_balancing&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;false&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Enable connection load balancing for the Vertica native client.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h2 id=&#34;storage-and-secrets&#34;&gt;Storage and secrets&lt;/h2&gt;
&lt;p&gt;These variables control how user credentials are stored and internal secrets are managed.&lt;/p&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

&lt;code&gt;MCP_JWT_SECRET&lt;/code&gt; is sensitive. Never store it in the YAML file. Always supply it as an environment variable.

&lt;/div&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Environment variable&lt;/th&gt; 

&lt;th &gt;
YAML key&lt;/th&gt; 

&lt;th &gt;
Default value&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_STORAGE_TYPE&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;storage_type&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;leveldb&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Backend used to store credentials. Accepted values are &lt;code&gt;leveldb&lt;/code&gt; and &lt;code&gt;memory&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_STORAGE_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;storage_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;/opt/vertica/config/mcp_server/userdb&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Filesystem path for the LevelDB database directory.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_STORAGE_ENCRYPTION_KEY&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
(internal)&lt;/td&gt; 

&lt;td &gt;
(derived from server key)&lt;/td&gt; 

&lt;td &gt;
32-byte AES key for encrypting passwords at rest. If not set, a key is automatically derived from the server private key file using SHA-256.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_JWT_SECRET&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
(internal)&lt;/td&gt; 

&lt;td &gt;
(derived from server key)&lt;/td&gt; 

&lt;td &gt;
HMAC secret used for signing and verifying API key JWTs. Derived from the server key at startup if not explicitly set.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h2 id=&#34;vcluster-server-settings&#34;&gt;VCluster server settings&lt;/h2&gt;
&lt;p&gt;These variables configure integration with VCluster server, which provides cluster-management tools.&lt;/p&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

If the client certificate or private key at the configured paths is missing or invalid, VCluster tools are automatically disabled at startup.

&lt;/div&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Environment variable&lt;/th&gt; 

&lt;th &gt;
YAML key&lt;/th&gt; 

&lt;th &gt;
Default value&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_VCLUSTER_ENABLED&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vcluster_enabled&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Enable or disable VCluster server tools.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_VCLUSTER_SERVER_URL&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vcluster_server_url&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;https://localhost:8665&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Base URL of the VCluster server API.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_VCLUSTER_CERT_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vcluster_cert_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;/opt/vertica/config/vcluster_server/admin.pem&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Path to the client certificate for authenticating with VCluster server.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_VCLUSTER_KEY_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vcluster_key_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;/opt/vertica/config/vcluster_server/admin.key&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Path to the private key for the VCluster server client certificate.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_VCLUSTER_CA_CERT_PATH&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vcluster_ca_cert_path&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;/opt/vertica/config/vcluster_server/ca.pem&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
CA certificate for verifying the VCluster server TLS certificate. Leave this empty to use system defaults.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_VCLUSTER_SKIP_TLS_VERIFY&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vcluster_skip_tls_verify&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;true&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
When &lt;code&gt;true&lt;/code&gt;, skips TLS server verification for VCluster connections. Enabled by default; set to &lt;code&gt;false&lt;/code&gt; in production to enforce verification.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_VCLUSTER_NODES_CACHE_TTL&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;vcluster_nodes_cache_ttl&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;5m&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
How long the node topology is cached before a refresh is triggered.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h2 id=&#34;job-queue-settings&#34;&gt;Job queue settings&lt;/h2&gt;
&lt;p&gt;These variables tune the server&#39;s internal asynchronous job queue for long-running operations.&lt;/p&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Environment variable&lt;/th&gt; 

&lt;th &gt;
YAML key&lt;/th&gt; 

&lt;th &gt;
Default value&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_MAX_ACTIVE_JOBS&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;max_active_jobs&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;50&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Total queue capacity, including both pending and running jobs.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_MAX_RUNNING_JOBS&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;max_running_jobs&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;10&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum number of concurrently running jobs.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_MAX_FINISHED_JOBS&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;max_finished_jobs&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;100000&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Maximum number of completed job records retained for status queries.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_FINISHED_JOB_RETENTION&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;finished_job_retention&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;240h&lt;/code&gt; (10 days)&lt;/td&gt; 

&lt;td &gt;
How long completed job records are kept before they are removed.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;MCP_QUERY_TREE_RETENTION&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;query_tree_retention&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;8760h&lt;/code&gt; (1 year)&lt;/td&gt; 

&lt;td &gt;
How long the generated query tree HTML files are kept before automatic cleanup.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;


      </description>
    </item>
    
    <item>
      <title>Admin: Claude Desktop example</title>
      <link>/en/admin/mcp-server/claude-desktop-example/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/mcp-server/claude-desktop-example/</guid>
      <description>
        
        
        &lt;p&gt;This page provides examples for configuring the Vertica MCP server with Claude Desktop.&lt;/p&gt;
&lt;h2 id=&#34;configuring-mcp-server-with-claude-desktop&#34;&gt;Configuring MCP server with Claude Desktop&lt;/h2&gt;
&lt;p&gt;Claude Desktop can connect to your MCP server to enable database query capabilities within Claude conversations.&lt;/p&gt;
&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Claude Desktop installed (latest version).&lt;/li&gt;
&lt;li&gt;MCP server running and accessible.&lt;/li&gt;
&lt;li&gt;Valid JWT token for authentication.&lt;/li&gt;
&lt;li&gt;Certificates to access VCluster server from the database administrator. For database adminstrators, the default certificates are located at &lt;code&gt;/opt/vertica/config/vcluster_server/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;NPX tool mcp-remote (&lt;code&gt;npm install -g mcp-remote&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;configuration&#34;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;The Claude Desktop configuration file location varies by OS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS: &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux: &lt;code&gt;~/.config/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Edit the configuration file and add your MCP server. Example configuration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;vertica-mcp-server&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;npx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;mcp-remote&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://&amp;lt;mcp_server_node&amp;gt;/mcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--insecure&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--tls-skip-verify&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--cert&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;path_to_certificate&amp;gt;\\admin.pem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--key&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;path_to_key_file&amp;gt;\\admin.key&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--ca-cert&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;path_to_ca_cert&amp;gt;\\ca.pem&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--header&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-API-Key:${API_KEY_VALUE}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;NODE_TLS_REJECT_UNAUTHORIZED&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;API_KEY_VALUE&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;replace with your API key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;where&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;path_to_certificate&amp;gt;&lt;/em&gt; is the path to the admin.pem file, such as &amp;quot;C:\Users\username\vcluster_server\admin.pem&amp;quot;.
&lt;em&gt;&amp;lt;path_to_key_file&amp;gt;&lt;/em&gt; is the path to the admin.key file, such as &amp;quot;C:\Users\username\vcluster_server\admin.key&amp;quot;.
&lt;em&gt;&amp;lt;path_to_ca_cert&amp;gt;&lt;/em&gt; is the path to the ca.pem file, such as &amp;quot;C:\Users\username\vcluster_server\ca.pem&amp;quot;.&lt;/p&gt;
&lt;h3 id=&#34;verifying-the-configuration&#34;&gt;Verifying the configuration&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Restart Claude Desktop after saving the configuration (make sure kill all background processes)&lt;/li&gt;
&lt;li&gt;Check Claude&#39;s MCP status - look for your server in the MCP panel&lt;/li&gt;
&lt;li&gt;Test with a simple query:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SELECT version()
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Curl examples</title>
      <link>/en/admin/mcp-server/curl-examples/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/mcp-server/curl-examples/</guid>
      <description>
        
        
        &lt;p&gt;This page provides curl examples for testing and automating interactions with the Vertica MCP server. This is provided as a developer guide for interacting with the APIs.&lt;/p&gt;
&lt;h2 id=&#34;using-the-mcp-server-with-curl&#34;&gt;Using the MCP server with curl&lt;/h2&gt;
&lt;p&gt;For testing and automation, you can interact with the MCP server directly using curl.&lt;/p&gt;
&lt;h3 id=&#34;basic-request-format&#34;&gt;Basic request format&lt;/h3&gt;
&lt;p&gt;All MCP requests use JSON-RPC 2.0 format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: YOUR_JWT_TOKEN&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;METHOD_NAME&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;key&amp;#34;: &amp;#34;value&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;initialize-connection&#34;&gt;Initialize connection&lt;/h3&gt;
&lt;p&gt;First, initialize the MCP session:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;initialize&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;protocolVersion&amp;#34;: &amp;#34;2024-11-05&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;capabilities&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;roots&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;          &amp;#34;listChanged&amp;#34;: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;clientInfo&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;curl-client&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;version&amp;#34;: &amp;#34;1.0.0&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Response:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;jsonrpc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;result&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;protocolVersion&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2024-11-05&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;serverInfo&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;vertica-mcp-server&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1.0.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;capabilities&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;resources&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;prompts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;list-available-tools&#34;&gt;List available tools&lt;/h3&gt;
&lt;p&gt;Discover what tools are available:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/list&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {},
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Response:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;jsonrpc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;result&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;execute_query&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Execute SQL queries against Vertica database&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;inputSchema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;SQL query to execute&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;subcluster&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Optional subcluster name&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;required&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;query&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;submit_queue_query&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Submit long-running query to job queue&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;list_jobs&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;List all jobs in the queue&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;execute-a-query&#34;&gt;Execute a query&lt;/h3&gt;
&lt;p&gt;Run a simple SQL query:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;name&amp;#34;: &amp;#34;execute_query&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;arguments&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;query&amp;#34;: &amp;#34;SELECT version()&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Response:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;jsonrpc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;result&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{\&amp;#34;columns\&amp;#34;:[\&amp;#34;version\&amp;#34;],\&amp;#34;rows\&amp;#34;:[{\&amp;#34;version\&amp;#34;:\&amp;#34;Vertica Analytic Database v24.3.0-0\&amp;#34;}],\&amp;#34;count\&amp;#34;:1}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;execute-query-with-subcluster-routing&#34;&gt;Execute query with subcluster routing&lt;/h3&gt;
&lt;p&gt;Route query to a specific subcluster:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;name&amp;#34;: &amp;#34;execute_query&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;arguments&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;query&amp;#34;: &amp;#34;SELECT node_name, subcluster_name FROM nodes&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;subcluster&amp;#34;: &amp;#34;analytics_cluster&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;submit-long-running-query-to-queue&#34;&gt;Submit long-running query to queue&lt;/h3&gt;
&lt;p&gt;For complex analytics queries that take longer to complete:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;name&amp;#34;: &amp;#34;submit_queue_query&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;arguments&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;query&amp;#34;: &amp;#34;SELECT customer_id, SUM(amount) FROM sales GROUP BY customer_id&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;description&amp;#34;: &amp;#34;Monthly sales by customer&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Response:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;jsonrpc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;result&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Job submitted successfully. Job ID: 550e8400-e29b-41d4-a716-446655440000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;check-job-status&#34;&gt;Check job status&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;name&amp;#34;: &amp;#34;get_job&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;arguments&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;job_id&amp;#34;: &amp;#34;550e8400-e29b-41d4-a716-446655440000&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 6
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;list-all-jobs&#34;&gt;List all jobs&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;name&amp;#34;: &amp;#34;list_jobs&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;arguments&amp;#34;: {}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 7
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;cancel-a-job&#34;&gt;Cancel a job&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;name&amp;#34;: &amp;#34;cancel_job&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;arguments&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;job_id&amp;#34;: &amp;#34;550e8400-e29b-41d4-a716-446655440000&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;health-check&#34;&gt;Health check&lt;/h3&gt;
&lt;p&gt;Check server health without authentication:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k https://localhost:8667/health
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Response:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;healthy&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;total_pools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;max_pools&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;using-jq-for-pretty-output&#34;&gt;Using jq for pretty output&lt;/h3&gt;
&lt;p&gt;Format JSON responses with jq:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST https://localhost:8667/mcp &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;jsonrpc&amp;#34;: &amp;#34;2.0&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;params&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;name&amp;#34;: &amp;#34;execute_query&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      &amp;#34;arguments&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;#34;query&amp;#34;: &amp;#34;SELECT table_name FROM tables LIMIT 5&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;id&amp;#34;: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; jq &lt;span class=&#34;s1&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;bash-script-example&#34;&gt;Bash script example&lt;/h3&gt;
&lt;p&gt;Create a reusable script for queries:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# mcp_query.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SERVER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://localhost:8667/mcp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;QUERY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$QUERY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Usage: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &amp;#39;SQL QUERY&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -k -X POST &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SERVER&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;X-Api-Key: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$API_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    \&amp;#34;jsonrpc\&amp;#34;: \&amp;#34;2.0\&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    \&amp;#34;method\&amp;#34;: \&amp;#34;tools/call\&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    \&amp;#34;params\&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;      \&amp;#34;name\&amp;#34;: \&amp;#34;execute_query\&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;      \&amp;#34;arguments\&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;        \&amp;#34;query\&amp;#34;: \&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$QUERY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;\&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;    \&amp;#34;id\&amp;#34;: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;  }&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; jq -r &lt;span class=&#34;s1&#34;&gt;&amp;#39;.result.content[0].text&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Usage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x mcp_query.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./mcp_query.sh &lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT COUNT(*) FROM customers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Admin: Query profiling</title>
      <link>/en/admin/mcp-server/query-profiling/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/mcp-server/query-profiling/</guid>
      <description>
        
        
        &lt;p&gt;The Query Profiling feature in MCP server enables deep analysis of SQL queries, visualization of execution plans, and export of detailed query profile data. These tools help you understand query performance, resource usage, and execution flow across Vertica nodes and subclusters.&lt;/p&gt;
&lt;h2 id=&#34;key-features&#34;&gt;Key features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Profile storage in tables:&lt;/strong&gt; Save query profiles in persistent tables within a specified schema, or use temporary tables for ad-hoc analysis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Large Language Model (LLM)-driven analysis:&lt;/strong&gt; Analyze queries using the MCP server&#39;s LLM, which processes operator statistics and performance aggregates (such as execution time and resource usage) computed by profiling tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interactive plan tree visualization:&lt;/strong&gt; Visualize query plan trees, including data flow volumes and execution times per node, with interactive HTML output.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export/import profile data:&lt;/strong&gt; Export all profile tables as a compressed tarball (.tar.gz) for sharing or offline analysis, and import them into other clusters or tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subcluster and sandbox support:&lt;/strong&gt; Profile query execution on specific subclusters or sandboxes by routing requests to the desired subcluster or sandbox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt support:&lt;/strong&gt; Configure and execute analysis prompts with flexible input parameters to tailor profiling to your specific needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;profiling-workflows&#34;&gt;Profiling workflows&lt;/h2&gt;
&lt;p&gt;Query profiling supports two distinct workflows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Profile and analyze using prompts&lt;/strong&gt; – A guided, step-by-step approach where the LLM orchestrates the entire workflow, including job monitoring and analysis generation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct tool access&lt;/strong&gt; – Ask the LLM to use specific profiling tools directly without the built-in prompts, giving you fine-grained control over each step.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both approaches produce the same profiling results that can be visualized, exported, and imported. Choose the approach that best fits your workflow.&lt;/p&gt;
&lt;h2 id=&#34;profile-and-analyze-a-query-using-prompts&#34;&gt;Profile and analyze a query using prompts&lt;/h2&gt;
&lt;h3 id=&#34;configure-prompt-inputs&#34;&gt;Configure prompt inputs&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the LLM, click &lt;strong&gt;Add Connectors&lt;/strong&gt;, select &lt;strong&gt;Add from vertica-mcp-server&lt;/strong&gt;, and then click &lt;strong&gt;Analyze Query&lt;/strong&gt;.
&lt;img src=&#34;../../../images/mcp-server/add-connectors-analyze-query.png&#34; alt=&#34;MCP Server analyze query button&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To begin profiling a SQL query, enter the required prompt details and click &lt;strong&gt;Add prompt&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/prompt-inputs.png&#34; alt=&#34;MCP Server prompt inputs&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mode:&lt;/strong&gt; Set to &lt;code&gt;new&lt;/code&gt; to execute and profile a new query, or &lt;code&gt;existing&lt;/code&gt; to analyze a previously executed query by providing its transaction ID and statement ID.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query:&lt;/strong&gt; The query you want to profile (for example, &lt;code&gt;select avg(price) from sales;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target_schema:&lt;/strong&gt; The schema where results will be stored (for example, &lt;code&gt;qprof1&lt;/code&gt;). A new schema is automatically created if it does not already exist.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key_id&lt;/strong&gt;: A unique identifier for this profiling run (for example, &lt;code&gt;k1&lt;/code&gt;). Profile table names have this ID appended (for example, &lt;code&gt;qprof_query_profiles_k1&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transaction_id:&lt;/strong&gt;  The transaction id for an existing query.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Statement_id:&lt;/strong&gt; The statement id for an existing query.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User_instructions:&lt;/strong&gt; Additional instructions to customize the analysis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analysis_scope:&lt;/strong&gt; Specify the depth of analysis (&lt;code&gt;basic&lt;/code&gt; or &lt;code&gt;detailed&lt;/code&gt;). Defaults is &lt;code&gt;basic&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subcluster:&lt;/strong&gt; The subcluster where the query should be executed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox:&lt;/strong&gt; The sandbox where the query should be executed. If both subcluster and sandbox are specified, sandbox is ignored.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Transaction ID and Statement ID:&lt;/strong&gt; Provide &lt;code&gt;Transaction_id&lt;/code&gt; and &lt;code&gt;Statement_id&lt;/code&gt; to profile an already-executed query, or provide &lt;code&gt;Query&lt;/code&gt; with &lt;code&gt;Mode=new&lt;/code&gt; to execute and profile a new query. These fields are required when using &lt;code&gt;Mode=existing&lt;/code&gt;, and should be left empty when using &lt;code&gt;Mode=new&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key ID:&lt;/strong&gt; If you leave the Key ID blank for mode &lt;code&gt;existing&lt;/code&gt;, the system auto-generates a timestamp-based identifier. Using an explicit Key ID makes it easier to reference and retrieve your profiling results later.&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;code&gt;analyze_query_text&lt;/code&gt; in the chat to view the analysis workflow and tools the LLM will use.
&lt;img src=&#34;../../../images/mcp-server/analyze-query-text.png&#34; alt=&#34;MCP Server analyze query text block&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;review-workflow-steps&#34;&gt;Review workflow steps&lt;/h3&gt;
&lt;p&gt;The analysis workflow displays the following steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Execute query:&lt;/strong&gt; The &lt;code&gt;qprof_execute&lt;/code&gt; tool runs the query with profiling enabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate job ID:&lt;/strong&gt; A &lt;code&gt;job_id&lt;/code&gt; is created to track the asynchronous execution.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor completion:&lt;/strong&gt; The LLM checks the job status once. If still running, it pauses and waits for your confirmation before checking again to prevent infinite loops.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/analyze-query-details.png&#34; alt=&#34;MCP Server analyze query details&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;execute-monitor-and-review-analysis&#34;&gt;Execute, monitor, and review analysis&lt;/h3&gt;
&lt;p&gt;When processing your analysis, the LLM performs these steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Submit and monitor:&lt;/strong&gt; The job is submitted and checked for completion. If still running, the LLM pauses and requests confirmation before checking again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate summary:&lt;/strong&gt; Once the job completes, the LLM produces a comprehensive profile analysis, including performance assessment, key metrics (duration, success, queue wait time, nodes involved), bottleneck analysis, and optimization recommendations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/analysis-summary-1.png&#34; alt=&#34;MCP Server analysis summary&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/analysis-summary-2.png&#34; alt=&#34;MCP Server analysis summary&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;profile-storage&#34;&gt;Profile storage&lt;/h3&gt;
&lt;p&gt;Profile data persists in the specified database schema and tables.&lt;/p&gt;
&lt;h2 id=&#34;analyze-query-profiles-directly&#34;&gt;Analyze query profiles directly&lt;/h2&gt;
&lt;p&gt;Alternatively, you can ask the LLM to use specific profiling tools without the built-in prompts. This approach gives you direct control and works independently of the prompt-based workflow.&lt;/p&gt;
&lt;p&gt;To use these tools, ask the LLM directly in the chat. For example, &amp;quot;Analyze this query profile using &lt;code&gt;qprof_get_operator_stats&lt;/code&gt;&amp;quot; or &amp;quot;Get a summary of my query execution&amp;quot;.&lt;/p&gt;
&lt;p&gt;You can also analyze existing query profiles saved from previous runs. Provide the schema and key ID where the profile data is stored. For example: &amp;quot;Give me a summary of the query profile that is saved in the schema &lt;code&gt;xyz&lt;/code&gt; with key &lt;code&gt;slow_query&lt;/code&gt;&amp;quot;. This is useful for analyzing historical query executions without re-executing them.&lt;/p&gt;
&lt;p&gt;Available tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qprof_get_profile_summary&lt;/code&gt;: Get a high-level summary of the query execution, including duration, status, and resource usage.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qprof_get_events&lt;/code&gt;: Retrieve warnings, optimization hints, and execution issues.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qprof_get_resources&lt;/code&gt;: Examine resource pool acquisition details and queue wait times.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qprof_get_steps&lt;/code&gt;: See a detailed breakdown of execution phases and timing.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qprof_get_operator_stats&lt;/code&gt;: Analyze operator-level performance metrics (for example, slowest operators, memory usage).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qprof_get_path_stats&lt;/code&gt;: View aggregated statistics at the query plan path level.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qprof_get_plan&lt;/code&gt;: Get the raw EXPLAIN plan for the query.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qprof_get_plan_tree&lt;/code&gt;: Retrieve the complete query plan tree with structure, metrics, and operator details. This is best suited for LLM or programmatic analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each tool provides a focused view or set of metrics to help you understand and troubleshoot query performance.&lt;/p&gt;
&lt;h2 id=&#34;visualize-export-and-import-results&#34;&gt;Visualize, export, and import results&lt;/h2&gt;
&lt;p&gt;The following capabilities work with both profiling approaches above. Use them to interact with and share your profiling data.&lt;/p&gt;
&lt;h3 id=&#34;visualize-query-profile-tree&#34;&gt;Visualize query profile tree&lt;/h3&gt;
&lt;p&gt;You can visualize the query execution tree by asking the LLM to generate an interactive visualization:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask the LLM to visualize the query profile tree. Optionally, provide your MCP server IP and port.&lt;/li&gt;
&lt;li&gt;The LLM generates an HTML file saved on the MCP server and provides a link to view it. To access the link, ensure you have network access to the MCP server&#39;s IP address and port (accounting for any port mappings in your environment).&lt;/li&gt;
&lt;li&gt;Open the provided link in a browser to view the visualization.&lt;/li&gt;
&lt;li&gt;The visualization tree displays all the details of the query profile. You can zoom in and out and interact with the query tree to analyze query execution.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

The query profile tree is generated as an HTML file on the MCP server rather than sent directly to your agent. This approach significantly reduces token usage. Alternatively, you can request an embedded object format to load the tree directly in agents such as Claude Desktop, though this option requires more tokens.

&lt;/div&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/query-tree-visualization.png&#34; alt=&#34;Query tree visualization&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;export-query-profile-data&#34;&gt;Export query profile data&lt;/h3&gt;
&lt;p&gt;You can export all profile tables as a compressed tarball (.tar.gz) for sharing or further analysis.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask the LLM to export the profiling data.&lt;/li&gt;
&lt;li&gt;The system generates the profile export details and a download link for the profile tarball (.tar.gz).&lt;/li&gt;
&lt;li&gt;Open the link in a browser to download the tarball (.tar.gz) to share or analyze offline.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;import-and-analyze-query-profiles&#34;&gt;Import and analyze query profiles&lt;/h3&gt;
&lt;p&gt;You can import profile data from other clusters or tools for analysis in your current environment. You can also import a tarball (.tar.gz) into VCluster using &lt;strong&gt;Query Profile&lt;/strong&gt; and use the target schema and key ID to analyze using the MCP Server Query Profiling tools. For more information about Query Profile in the VCluster UI, see &lt;a href=&#34;../../../en/admin/vcluster/vcluster-ui/vcluster-query-profile/#&#34;&gt;Query Profile&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Machine learning with the MCP server</title>
      <link>/en/admin/mcp-server/machine-learning/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/mcp-server/machine-learning/</guid>
      <description>
        
        
        &lt;p&gt;The MCP server extends beyond SQL execution by providing integrated machine learning (ML) capabilities that support end-to-end data science workflows directly within the database. Using MCP tools and natural-language interaction, you can explore and prepare data, perform train-test splits, train and evaluate models, generate predictions, and interpret results without moving data out of Vertica or writing external code.&lt;/p&gt;
&lt;p&gt;This in-database approach eliminates traditional ML pipeline complexity and preserves security and governance, while allowing you to iterate quickly through conversational, AI-assisted workflows. The integrated ML tools make advanced analytics accessible to both experienced data scientists and users with limited machine learning expertise, allowing them to build predictive models and derive actionable insights using simple natural-language prompts.&lt;/p&gt;
&lt;p&gt;For users familiar with VerticaPy, the MCP server provides a no-code alternative for accessing similar in-database ML functionality without relying on VerticaPy or its associated dependencies.&lt;/p&gt;
&lt;p&gt;For a complete reference of every ML tool, its input schema, and outputs, see &lt;a href=&#34;../../../en/admin/mcp-server/machine-learning/ml-tools-reference/#&#34;&gt;ML tools reference&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before you run ML workflows, make sure the following requirements are met:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The MCP server is running and your AI client is connected. For installation, startup, JWT token generation, and role and privilege requirements, see &lt;a href=&#34;../../../en/admin/mcp-server/#&#34;&gt;MCP server&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install the &lt;code&gt;MachineLearningLib&lt;/code&gt; UDx library and the &lt;code&gt;approximate&lt;/code&gt; package on the target database. These are required to run the ML tools. For installation steps, see &lt;a href=&#34;../../../en/admin/vcluster/vcluster-cli/vcluster-commands/install_packages/#&#34;&gt;install_packages&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The ML tools rely on in-database machine learning functions, which are available in both Enterprise Mode and Eon Mode. Some tools have additional version requirements. For example, &lt;code&gt;ml_correlation_matrix&lt;/code&gt; uses &lt;code&gt;CORR_MATRIX&lt;/code&gt;, which requires version 9.2.1 or later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ml-tools-overview&#34;&gt;ML tools overview&lt;/h2&gt;
&lt;p&gt;The MCP server provides a comprehensive set of tools that support the complete machine learning lifecycle, from data preparation through model governance. These tools can be combined to build end-to-end ML workflows using natural language.&lt;/p&gt;
&lt;h3 id=&#34;data-preparation-and-feature-engineering&#34;&gt;Data preparation and feature engineering&lt;/h3&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Tool&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt; 

&lt;th &gt;
Key parameters&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_apply_encoding&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Applies a previously fit encoder or label mapping to a new source table (for example, test or inference data), enforcing the same &lt;code&gt;NULL&lt;/code&gt;/unseen-category sentinel policy used at fit time.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;encoding_type&lt;/code&gt;, &lt;code&gt;encoder_model_name&lt;/code&gt; (for &lt;code&gt;one_hot&lt;/code&gt;), &lt;code&gt;label_mapping_tables&lt;/code&gt; (for &lt;code&gt;label&lt;/code&gt;), &lt;code&gt;output_table&lt;/code&gt;, &lt;code&gt;overwrite&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_apply_normalize&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Applies a previously fit normalization model to a new source table, producing a normalized output table (async).&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt; (optional, for pre-flight validation), &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;output_table&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_encode_columns&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Encodes categorical columns into numeric representations. Persists encoder artifacts for later reuse on test/inference data.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;encoding_type&lt;/code&gt; (&lt;code&gt;one_hot&lt;/code&gt; | &lt;code&gt;label&lt;/code&gt;), &lt;code&gt;output_table&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_impute&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Fills missing &lt;code&gt;NULL&lt;/code&gt; values using a specified strategy. Results are materialized as a view (async).&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;method&lt;/code&gt; (&lt;code&gt;auto&lt;/code&gt; | &lt;code&gt;mean&lt;/code&gt; | &lt;code&gt;mode&lt;/code&gt; | &lt;code&gt;ffill&lt;/code&gt; | &lt;code&gt;bfill&lt;/code&gt;), &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;order_by&lt;/code&gt; (required for &lt;code&gt;ffill&lt;/code&gt;/&lt;code&gt;bfill&lt;/code&gt;), &lt;code&gt;partition_columns&lt;/code&gt;, &lt;code&gt;output_view&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_normalize&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Normalizes numeric columns and materializes the result as a view (async, no model persisted).&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;normalization_method&lt;/code&gt; (&lt;code&gt;minmax&lt;/code&gt; | &lt;code&gt;zscore&lt;/code&gt; | &lt;code&gt;robust_zscore&lt;/code&gt;), &lt;code&gt;output_view&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_normalize_fit&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Computes normalization parameters and persists them as a model in &lt;code&gt;v_catalog.models&lt;/code&gt;. Optionally creates a normalized view. Use this when the same scaling must be applied consistently to train, test, and inference data.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;normalization_method&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;output_view&lt;/code&gt; (optional), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_train_test_split&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Splits a source table into separate training and testing tables using a seeded random partition.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;test_ratio&lt;/code&gt; (default: &lt;code&gt;0.3&lt;/code&gt;), &lt;code&gt;seed&lt;/code&gt; (default: &lt;code&gt;42&lt;/code&gt;), &lt;code&gt;output_prefix&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h3 id=&#34;exploratory-data-analysis&#34;&gt;Exploratory data analysis&lt;/h3&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Tool&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt; 

&lt;th &gt;
Key parameters&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_correlation_matrix&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Computes the pairwise correlation matrix for numeric columns. Uses &lt;code&gt;CORR_MATRIX&lt;/code&gt; on Vertica 9.2.1 and later, with a fallback for older versions.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt; (optional; defaults to all numeric/boolean columns), &lt;code&gt;method&lt;/code&gt; (&lt;code&gt;pearson&lt;/code&gt; | &lt;code&gt;spearman&lt;/code&gt; | &lt;code&gt;spearmand&lt;/code&gt;), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_detect_outliers&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Detects outliers in numeric columns using statistical thresholds. Read-only — no output table is created.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;method&lt;/code&gt; (&lt;code&gt;z_score&lt;/code&gt; | &lt;code&gt;robust_zscore&lt;/code&gt; | &lt;code&gt;iqr&lt;/code&gt;), &lt;code&gt;threshold&lt;/code&gt; (default: &lt;code&gt;3.0&lt;/code&gt; for z/robust, &lt;code&gt;1.5&lt;/code&gt; for iqr), &lt;code&gt;limit&lt;/code&gt; (default: &lt;code&gt;100&lt;/code&gt;), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h3 id=&#34;model-training&#34;&gt;Model training&lt;/h3&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Tool&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt; 

&lt;th &gt;
Key parameters&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_cross_validate&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Evaluates an ML algorithm using k-fold cross-validation, with optional hyperparameter grid search. Submits an async job. Supported algorithms: &lt;code&gt;logistic_reg&lt;/code&gt;, &lt;code&gt;linear_reg&lt;/code&gt;, &lt;code&gt;naive_bayes&lt;/code&gt;, &lt;code&gt;svm_classifier&lt;/code&gt;, &lt;code&gt;svm_regressor&lt;/code&gt;.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;algorithm&lt;/code&gt;, &lt;code&gt;input_table&lt;/code&gt;, &lt;code&gt;predictor_columns&lt;/code&gt;, &lt;code&gt;target_column&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;fold_count&lt;/code&gt; (default: &lt;code&gt;5&lt;/code&gt;), &lt;code&gt;metrics&lt;/code&gt;, &lt;code&gt;hyperparams&lt;/code&gt;, &lt;code&gt;prediction_cutoff&lt;/code&gt; (&lt;code&gt;logistic_reg&lt;/code&gt; only), &lt;code&gt;params&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_train_model&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Trains Vertica in-database ML model. Submits an async job and returns a &lt;code&gt;job_id&lt;/code&gt; immediately. Supported algorithms: &lt;code&gt;logistic_reg&lt;/code&gt;, &lt;code&gt;naive_bayes&lt;/code&gt;, &lt;code&gt;rf_classifier&lt;/code&gt;, &lt;code&gt;svm_classifier&lt;/code&gt;, &lt;code&gt;xgb_classifier&lt;/code&gt;, &lt;code&gt;linear_reg&lt;/code&gt;, &lt;code&gt;rf_regressor&lt;/code&gt;, &lt;code&gt;xgb_regressor&lt;/code&gt;, &lt;code&gt;svm_regressor&lt;/code&gt;, &lt;code&gt;pls_reg&lt;/code&gt;, &lt;code&gt;poisson_reg&lt;/code&gt;, &lt;code&gt;kmeans&lt;/code&gt;, &lt;code&gt;bisecting_kmeans&lt;/code&gt;, &lt;code&gt;kprototypes&lt;/code&gt;, &lt;code&gt;pca&lt;/code&gt;, &lt;code&gt;svd&lt;/code&gt;, &lt;code&gt;iforest&lt;/code&gt;.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;algorithm&lt;/code&gt;, &lt;code&gt;input_table&lt;/code&gt;, &lt;code&gt;predictor_columns&lt;/code&gt;, &lt;code&gt;target_column&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;num_clusters&lt;/code&gt; (for k-means variants), &lt;code&gt;params&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_train_timeseries&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Trains a time-series model (ARIMA, AUTOREGRESSOR, or MOVING_AVERAGE). Supports univariate and multivariate (VAR) autoregressor models. Submits an async job.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;algorithm&lt;/code&gt; (&lt;code&gt;arima&lt;/code&gt; | &lt;code&gt;autoregressor&lt;/code&gt; | &lt;code&gt;moving_average&lt;/code&gt;), &lt;code&gt;input_table&lt;/code&gt;, &lt;code&gt;timeseries_columns&lt;/code&gt;, &lt;code&gt;timestamp_column&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;params&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h3 id=&#34;dimensionality-reduction&#34;&gt;Dimensionality reduction&lt;/h3&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Tool&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt; 

&lt;th &gt;
Key parameters&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_apply_pca&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Transforms data using a fitted PCA model and writes the principal component coordinates to an output table.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;output_table&lt;/code&gt; (optional; defaults to &lt;code&gt;mcp_pca_{table}_{timestamp}&lt;/code&gt;), &lt;code&gt;num_components&lt;/code&gt; (optional), &lt;code&gt;cutoff&lt;/code&gt; (optional; cannot be combined with &lt;code&gt;num_components&lt;/code&gt;), &lt;code&gt;match_by_pos&lt;/code&gt; (optional), &lt;code&gt;key_columns&lt;/code&gt; (optional), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_apply_svd&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Applies a previously computed SVD model to a new data matrix and writes the transformed data to an output table.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;output_table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt; (optional; defaults to all columns), &lt;code&gt;num_components&lt;/code&gt; (optional), &lt;code&gt;exclude_columns&lt;/code&gt; (optional), &lt;code&gt;key_columns&lt;/code&gt; (optional), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_pca&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Fits a PCA (Principal Component Analysis) model on a table and saves it in the Vertica model catalog.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;num_components&lt;/code&gt; (optional), &lt;code&gt;scale&lt;/code&gt; (optional), &lt;code&gt;method&lt;/code&gt; (optional; only &lt;code&gt;LAPACK&lt;/code&gt;), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_svd&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Performs Singular Value Decomposition (SVD) on a numeric data matrix and saves the model in &lt;code&gt;v_catalog.models&lt;/code&gt;.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;columns&lt;/code&gt; (optional; defaults to all columns), &lt;code&gt;num_components&lt;/code&gt; (optional), &lt;code&gt;exclude_columns&lt;/code&gt; (optional), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h3 id=&#34;inference&#34;&gt;Inference&lt;/h3&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Tool&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt; 

&lt;th &gt;
Key parameters&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_predict&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Runs predictions using a trained model and writes results to an output table.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;input_table&lt;/code&gt;, &lt;code&gt;predictor_columns&lt;/code&gt; (optional), &lt;code&gt;output_table&lt;/code&gt;, &lt;code&gt;params&lt;/code&gt;, &lt;code&gt;timestamp_column&lt;/code&gt; (time-series), &lt;code&gt;num_predictions&lt;/code&gt; (time-series, default: &lt;code&gt;10&lt;/code&gt;), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_predict_with_registered_model&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Runs predictions by referencing a registered model family name instead of a raw model name. Automatically resolves the production version unless a specific version is supplied.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;registered_name&lt;/code&gt;, &lt;code&gt;registered_version&lt;/code&gt; (optional), &lt;code&gt;input_table&lt;/code&gt;, &lt;code&gt;predictor_columns&lt;/code&gt; (optional), &lt;code&gt;output_table&lt;/code&gt;, &lt;code&gt;use_classes&lt;/code&gt;, &lt;code&gt;params&lt;/code&gt;, &lt;code&gt;timestamp_column&lt;/code&gt;, &lt;code&gt;num_predictions&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h3 id=&#34;model-evaluation&#34;&gt;Model evaluation&lt;/h3&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Tool&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt; 

&lt;th &gt;
Key parameters&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_classification_report&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Computes accuracy, precision, recall, F1 score, and optionally AUC from a predictions table.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;actual_column&lt;/code&gt;, &lt;code&gt;predicted_column&lt;/code&gt;, &lt;code&gt;include_auc&lt;/code&gt; (binary classification only), &lt;code&gt;probability_column&lt;/code&gt; (required when &lt;code&gt;include_auc&lt;/code&gt; is set), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_features_importance&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Computes normalized feature importance scores (0–100) from a trained model. Supports linear, tree-based, and time-series models.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_regression_report&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Computes regression metrics (MAE, MSE, RMSE, R², adjusted R², AIC, BIC, quantile errors) from a predictions table.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;table&lt;/code&gt;, &lt;code&gt;actual_column&lt;/code&gt;, &lt;code&gt;predicted_column&lt;/code&gt;, &lt;code&gt;metrics&lt;/code&gt; (optional list), &lt;code&gt;num_predictors&lt;/code&gt; (default: &lt;code&gt;1&lt;/code&gt;), &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;h3 id=&#34;model-registry-and-governance&#34;&gt;Model registry and governance&lt;/h3&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Tool&lt;/th&gt; 

&lt;th &gt;
Description&lt;/th&gt; 

&lt;th &gt;
Key parameters&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_change_model_status&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Promotes or demotes a registered model version through the governance lifecycle.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;registered_name&lt;/code&gt;, &lt;code&gt;registered_version&lt;/code&gt;, &lt;code&gt;new_status&lt;/code&gt; (&lt;code&gt;under_review&lt;/code&gt; | &lt;code&gt;staging&lt;/code&gt; | &lt;code&gt;production&lt;/code&gt; | &lt;code&gt;archived&lt;/code&gt; | &lt;code&gt;declined&lt;/code&gt; | &lt;code&gt;unregistered&lt;/code&gt;), &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_get_model_status_history&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Fetches the native status-change audit history for a registered model from &lt;code&gt;v_monitor.model_status_history&lt;/code&gt;.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;registered_name&lt;/code&gt;, &lt;code&gt;registered_version&lt;/code&gt; (optional), &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_get_production_model&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Resolves the current production version for a registered model family.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;registered_name&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_list_registered_models&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Lists registered model families and versions from &lt;code&gt;v_catalog.registered_models&lt;/code&gt;.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;registered_name&lt;/code&gt; (optional filter), &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
&lt;code&gt;ml_register_model&lt;/code&gt;&lt;/td&gt; 

&lt;td &gt;
Registers a trained native Vertica model under a registered model family name for lifecycle management.&lt;/td&gt; 

&lt;td &gt;
&lt;code&gt;model_name&lt;/code&gt;, &lt;code&gt;registered_name&lt;/code&gt;, &lt;code&gt;schema&lt;/code&gt;, &lt;code&gt;subcluster&lt;/code&gt; (optional), &lt;code&gt;sandbox&lt;/code&gt; (optional)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;


&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;ml_register_model&lt;/code&gt; registers a trained model and adds it to the &lt;a href=&#34;../../../en/data-analysis/ml-predictive-analytics/model-management/model-versioning/#&#34;&gt;Model versioning&lt;/a&gt; environment with a status of &lt;code&gt;under_review&lt;/code&gt;. The model must be registered by the model owner, &lt;code&gt;dbadmin&lt;/code&gt;, or a user with the &lt;code&gt;MLSUPERVISOR&lt;/code&gt; role.&lt;/p&gt;
&lt;p&gt;After a model is registered, the model owner is automatically changed to &lt;code&gt;Superuser&lt;/code&gt;, and the previous owner is granted &lt;code&gt;USAGE&lt;/code&gt; privileges. Users with the &lt;code&gt;MLSUPERVISOR&lt;/code&gt; role or &lt;code&gt;dbadmin&lt;/code&gt; can call &lt;code&gt;ml_change_model_status&lt;/code&gt; to change the status of registered models.&lt;/p&gt;
&lt;p&gt;Models cannot move freely between statuses. For the six possible statuses and a diagram of the valid transitions, see &lt;a href=&#34;../../../en/data-analysis/ml-predictive-analytics/model-management/model-versioning/#&#34;&gt;Model versioning&lt;/a&gt;.&lt;/p&gt;


&lt;/div&gt;
&lt;h2 id=&#34;run-an-ml-workflow-using-prompts&#34;&gt;Run an ML workflow using prompts&lt;/h2&gt;
&lt;p&gt;Use the guided &lt;strong&gt;Vertica ML Workflow&lt;/strong&gt; prompt when you want the MCP server to plan and run a complete pipeline for you. You supply a few input fields, such as the algorithm, table, and target, and the MCP server orchestrates the remaining steps, from preprocessing through evaluation. For an illustration of the alternative conversational approach, where you drive each stage with individual natural-language requests, see the customer churn example in the next section.&lt;/p&gt;
&lt;h3 id=&#34;configure-prompt-inputs&#34;&gt;Configure prompt inputs&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the LLM, click &lt;strong&gt;Connectors&lt;/strong&gt;, select &lt;strong&gt;Add from vertica-mcp-server&lt;/strong&gt;, and then click &lt;strong&gt;Vertica ML Workflow&lt;/strong&gt;.
&lt;img src=&#34;../../../images/mcp-server/vertica-ml-workflow.png&#34; alt=&#34;Add from vertica-mcp-server menu showing the Vertica ML Workflow option&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To begin with the ML workflow, enter the required prompt details and click &lt;strong&gt;Add prompt&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/ml-prompt-input-01.png&#34; alt=&#34;ML workflow prompt input fields, part 1&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/ml-prompt-input-02.png&#34; alt=&#34;ML workflow prompt input fields, part 2&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Algorithm:&lt;/strong&gt; Required. The machine learning algorithm to execute (for example, &lt;code&gt;logistic_reg&lt;/code&gt;, &lt;code&gt;rf_classifier&lt;/code&gt;, &lt;code&gt;linear_reg&lt;/code&gt;, &lt;code&gt;kmeans&lt;/code&gt;, &lt;code&gt;pca&lt;/code&gt;, &lt;code&gt;xgb_classifier&lt;/code&gt;, &lt;code&gt;arima&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model_name:&lt;/strong&gt; Override the auto-generated model name for saving in the Vertica catalog (for example, &lt;code&gt;my_model&lt;/code&gt;). Auto-generated if omitted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Table:&lt;/strong&gt; Source table or view name containing the dataset (for example, &lt;code&gt;iris&lt;/code&gt; or &lt;code&gt;public.iris&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target:&lt;/strong&gt; Target or label column name for supervised learning (for example, &lt;code&gt;Species&lt;/code&gt;). Omit for unsupervised algorithms like &lt;code&gt;kmeans&lt;/code&gt; or &lt;code&gt;pca&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Features:&lt;/strong&gt; Predictor columns as a comma-separated list (for example, &lt;code&gt;SepalLengthCm, SepalWidthCm, PetalLengthCm, PetalWidthCm&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Params:&lt;/strong&gt; Algorithm hyperparameters as a JSON string with string values only (for example, &lt;code&gt;{&amp;quot;max_iterations&amp;quot;: &amp;quot;200&amp;quot;}&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema:&lt;/strong&gt; Default schema for unqualified table names (for example, &lt;code&gt;public&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context:&lt;/strong&gt; Additional instructions or execution flags to customize the workflow (for example, &lt;code&gt;mode=cv&lt;/code&gt;, do not use temp table, use permanent table).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subcluster:&lt;/strong&gt; The subcluster where tool calls should be routed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox:&lt;/strong&gt; The sandbox where tool calls should be routed. If both subcluster and sandbox are specified, sandbox is ignored.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;code&gt;Vertica ML Workflow_text&lt;/code&gt; in the chat to view the ML workflow and tools the LLM will use.
&lt;img src=&#34;../../../images/mcp-server/vertica-ml-workflow-text.png&#34; alt=&#34;Vertica ML Workflow_text plan listing the workflow steps and tools the LLM will use&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;review-workflow-steps&#34;&gt;Review workflow steps&lt;/h3&gt;
&lt;p&gt;Before making any tool calls, the LLM presents the plan it will follow. This workflow text includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Workflow configuration:&lt;/strong&gt; The exact values used when filling tool arguments, such as the target column and the training algorithm.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Naming conventions:&lt;/strong&gt; How generated artifacts are named, including the auto-generated model name, one-hot encoder and label-mapping tables, train/test split tables, and normalizer model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NULL/unknown value policy:&lt;/strong&gt; How missing inputs and unseen categories are handled for label encoding, one-hot encoding, and boolean columns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow steps:&lt;/strong&gt; The ordered steps the LLM will run (for example, detect outliers, encode columns, normalize, split, train, and evaluate). Steps marked optional can be skipped when not applicable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The LLM replies with a short plan first—one bullet per step, noting any skipped optional steps and the reason, and waits for your confirmation before it executes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/review-workflow-steps.png&#34; alt=&#34;LLM plan listing the ordered ML workflow steps before execution&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;execute-monitor-and-review-analysis&#34;&gt;Execute, monitor, and review analysis&lt;/h3&gt;
&lt;p&gt;After you confirm the plan, the LLM executes the workflow. For each numbered step, it either runs the appropriate ML tool or skips the step when it does not apply to your data or algorithm, and it shows the reason for each decision.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Execute and monitor:&lt;/strong&gt; The LLM runs each step in order, for example, the train/test split, model training, prediction, and evaluation. Heavy jobs run asynchronously, so the LLM polls each job with &lt;code&gt;get_job_status&lt;/code&gt; and retrieves output with &lt;code&gt;get_job_results&lt;/code&gt;, reporting progress as each stage completes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate final summary:&lt;/strong&gt; Once all steps finish, the LLM produces a final summary that reports the model name and location, the dataset and train/test split, evaluation metrics and feature importance along with a brief interpretation and any refinement recommendations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As the LLM works through the plan, it reports each step and whether it ran or skipped it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/ml-execute-steps.png&#34; alt=&#34;LLM executing each ML workflow step with run or skip decisions&#34;&gt;&lt;/p&gt;
&lt;p&gt;When all steps finish, the LLM compiles the results into a final summary:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/ml-execute-steps-final-summary.png&#34; alt=&#34;LLM final summary after executing the ML workflow&#34;&gt;&lt;/p&gt;
&lt;p&gt;The summary includes the model&#39;s performance metrics and confusion matrix:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/ml-perf-confusion-matrix.png&#34; alt=&#34;Model performance metrics and confusion matrix&#34;&gt;&lt;/p&gt;
&lt;p&gt;It also reports the feature importance scores for the trained model:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/ml-feature-importance.png&#34; alt=&#34;Feature importance scores for the trained model&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;end-to-end-ml-workflow-customer-churn-prediction&#34;&gt;End-to-end ML workflow: customer churn prediction&lt;/h2&gt;
&lt;p&gt;The following example demonstrates a complete customer churn analysis workflow using a simulated telecommunications dataset containing 1.2 million customer records and an approximate churn rate of 25%. The dataset includes intentionally introduced missing values and outliers to illustrate common data quality challenges encountered during real-world analysis.&lt;/p&gt;
&lt;p&gt;Unlike the guided &lt;strong&gt;Vertica ML Workflow&lt;/strong&gt; prompt, this example illustrates the conversational approach, where you drive each stage with individual natural-language requests. It uses a simulated dataset to show the kinds of prompts you can use and how the MCP server responds at each step.&lt;/p&gt;

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

All heavy or time-consuming jobs run asynchronously in the background. The agent waits and periodically checks the job status, so it can continue with other work in the meantime.

&lt;/div&gt;
&lt;p&gt;The churn analysis follows a standard data science workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Data exploration and cleaning&lt;/li&gt;
&lt;li&gt;Pattern discovery and feature engineering&lt;/li&gt;
&lt;li&gt;Data preparation&lt;/li&gt;
&lt;li&gt;Model training&lt;/li&gt;
&lt;li&gt;Model evaluation and interpretation&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The MCP server automatically identifies and invokes the appropriate ML tools based on your requests throughout the workflow.&lt;/p&gt;
&lt;h3 id=&#34;step-1-explore-and-clean-data&#34;&gt;Step 1: Explore and clean data&lt;/h3&gt;
&lt;p&gt;The analysis begins by examining the dataset structure and reviewing sample records.&lt;/p&gt;
&lt;p&gt;To start, ask the MCP server &amp;quot;Describe the &lt;code&gt;churn_data&lt;/code&gt; table and show me a few sample rows.&amp;quot;&lt;/p&gt;
&lt;p&gt;It describes the table and displays example rows so you can understand available attributes, data types, and overall data quality.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/customer_churn_analysis_table.png&#34; alt=&#34;Description of the customer churn dataset table structure&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/sample-rows.png&#34; alt=&#34;Sample rows from the customer churn dataset&#34;&gt;&lt;/p&gt;
&lt;p&gt;Once you understand the data, address any quality issues. Ask &amp;quot;Find and impute any missing values in &lt;code&gt;churn_data&lt;/code&gt;.&amp;quot;
The MCP server identifies missing values and automatically applies appropriate imputation strategies:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/missing-values-replace.png&#34; alt=&#34;Imputation of missing values in the churn dataset&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Numeric columns are typically filled using statistical methods such as mean imputation.&lt;/li&gt;
&lt;li&gt;Categorical columns are filled using the most frequently occurring value (mode).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this example, missing values in Monthly Charges were replaced with the column mean, while missing values in Payment Method were replaced with the most common payment type.&lt;/p&gt;
&lt;h3 id=&#34;step-2-detect-outliers-and-analyze-relationships&#34;&gt;Step 2: Detect outliers and analyze relationships&lt;/h3&gt;
&lt;p&gt;After addressing missing data, ask &amp;quot;Check the numeric columns in &lt;code&gt;churn_data&lt;/code&gt; for outliers.&amp;quot;&lt;/p&gt;
&lt;p&gt;Using the &lt;code&gt;ml_detect_outliers&lt;/code&gt; tool, the MCP server highlights anomalous values and quantifies their impact on the dataset, allowing you to decide whether to investigate, remove, or retain these records.&lt;/p&gt;
&lt;p&gt;In this example, it accurately identified the 1,133 outliers that were artificially created in the dataset.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/outlier-check.png&#34; alt=&#34;Outlier detection results for the churn dataset&#34;&gt;&lt;/p&gt;
&lt;p&gt;Next, ask &amp;quot;Show me a correlation matrix for the numeric columns in &lt;code&gt;churn_data&lt;/code&gt;.&amp;quot;&lt;/p&gt;
&lt;p&gt;The MCP server generates the matrix, visualizes the relationships between numeric variables, and identifies key drivers associated with churn.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/corelation-matrix.png&#34; alt=&#34;Correlation matrix of numeric churn variables&#34;&gt;&lt;/p&gt;
&lt;p&gt;In the churn analysis example, the strongest relationships with customer churn were found in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Number of support calls (0.29)&lt;/li&gt;
&lt;li&gt;Monthly charges (0.21)&lt;/li&gt;
&lt;li&gt;Customer tenure (0.20)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These insights provide an initial understanding of the factors influencing customer retention.&lt;/p&gt;
&lt;h3 id=&#34;step-3-feature-engineering-and-data-preparation&#34;&gt;Step 3: Feature engineering and data preparation&lt;/h3&gt;
&lt;p&gt;Machine learning models require numerical inputs. Categorical attributes such as Contract Type, Payment Method, and Internet Service must be encoded into model-ready numerical values. Ask &amp;quot;Encode the categorical columns in &lt;code&gt;churn_data&lt;/code&gt;.&amp;quot;&lt;/p&gt;
&lt;p&gt;The MCP server automatically identifies categorical columns and performs the required encoding, transforming categories into numeric representations suitable for training.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/categorical-columns.png&#34; alt=&#34;Encoding of categorical columns into numeric values&#34;&gt;&lt;/p&gt;
&lt;p&gt;The server can also normalize numeric features using standard scaling techniques, such as z-score normalization, ensuring that features operate on a comparable scale. This improves model performance and helps prevent bias toward variables with larger numerical ranges.&lt;/p&gt;
&lt;p&gt;In this example, the tools successfully converted the numeric column to center around 0.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/numeric-representations.png&#34; alt=&#34;Normalized numeric feature centered around zero&#34;&gt;&lt;/p&gt;
&lt;p&gt;After preprocessing is complete, ask &amp;quot;Split &lt;code&gt;churn_data&lt;/code&gt; into 70% training and 30% test sets.&amp;quot;&lt;/p&gt;
&lt;p&gt;In this example, the MCP server automatically selected a standard 70% training and 30% test split ratio for model development and validation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/split-ratio.png&#34; alt=&#34;70 percent training and 30 percent test split of the churn dataset&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;step-4-train-a-machine-learning-model&#34;&gt;Step 4: Train a machine learning model&lt;/h3&gt;
&lt;p&gt;After preparing the dataset, ask &amp;quot;Train a logistic regression model on the training data to predict churn.&amp;quot;
The MCP server trains a logistic regression model to predict customer churn.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/predictors.png&#34; alt=&#34;Logistic regression model training on the churn predictors&#34;&gt;&lt;/p&gt;
&lt;p&gt;During training, the server automatically generates feature importance information, providing immediate insight into which variables have the greatest influence on customer behavior.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/feature-importance.png&#34; alt=&#34;Feature importance generated during churn model training&#34;&gt;&lt;/p&gt;
&lt;p&gt;Example findings included:&lt;/p&gt;

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Feature&lt;/th&gt; 

&lt;th &gt;
Impact on churn&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Two-year contract&lt;/td&gt; 

&lt;td &gt;
Reduces churn&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
One-year contract&lt;/td&gt; 

&lt;td &gt;
Reduces churn&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Number of support calls&lt;/td&gt; 

&lt;td &gt;
Increases churn&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Monthly charges&lt;/td&gt; 

&lt;td &gt;
Increases churn&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;
Customer tenure&lt;/td&gt; 

&lt;td &gt;
Reduces churn&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;These feature importance metrics help explain model behavior and identify the most influential business factors.&lt;/p&gt;
&lt;h3 id=&#34;step-5-evaluate-the-model&#34;&gt;Step 5: Evaluate the model&lt;/h3&gt;
&lt;p&gt;Ask &amp;quot;Evaluate the model on the test data and show me the classification metrics.&amp;quot;&lt;/p&gt;
&lt;p&gt;The trained model is evaluated against the testing dataset to measure predictive performance. In this example, the model achieved approximately 80% prediction accuracy despite the presence of simulated noise, missing values, and outliers.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/predictive-perf.png&#34; alt=&#34;Predictive performance of the churn model on the test dataset&#34;&gt;&lt;/p&gt;
&lt;p&gt;The MCP server provides standard evaluation metrics, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Confusion matrix&lt;/li&gt;
&lt;li&gt;Overall accuracy&lt;/li&gt;
&lt;li&gt;Precision&lt;/li&gt;
&lt;li&gt;Recall&lt;/li&gt;
&lt;li&gt;F1 score&lt;/li&gt;
&lt;li&gt;AUC (ROC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These metrics enable you to assess model quality and determine whether additional refinement is required.&lt;/p&gt;
&lt;h3 id=&#34;interpret-results-and-generate-business-insights&#34;&gt;Interpret results and generate business insights&lt;/h3&gt;
&lt;p&gt;After evaluation, ask &amp;quot;Summarize the main drivers of churn and generate an executive summary.&amp;quot; The MCP server summarizes the findings and identifies the primary drivers of customer churn.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/mcp-server/results.png&#34; alt=&#34;Summary of the churn drivers identified after evaluation&#34;&gt;&lt;/p&gt;
&lt;p&gt;Key conclusions from the churn analysis included:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contract type was the strongest predictor of churn.&lt;/li&gt;
&lt;li&gt;Customers with two-year contracts were significantly less likely to leave.&lt;/li&gt;
&lt;li&gt;A high volume of support calls was a strong warning indicator of churn risk.&lt;/li&gt;
&lt;li&gt;Higher monthly charges increased churn probability.&lt;/li&gt;
&lt;li&gt;Longer customer tenure reduced churn likelihood.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To make results easier to consume, you can ask the MCP server to generate a business-friendly executive summary. The server produces a visual report that highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Key churn drivers&lt;/li&gt;
&lt;li&gt;Feature importance rankings&lt;/li&gt;
&lt;li&gt;Recommended actions&lt;/li&gt;
&lt;li&gt;Business-focused interpretations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This allows technical findings to be communicated effectively to business stakeholders and decision-makers.&lt;/p&gt;
&lt;h2 id=&#34;benefits-of-ml-integration-in-the-mcp-server&#34;&gt;Benefits of ML integration in the MCP Server&lt;/h2&gt;
&lt;p&gt;The machine learning tools integrated into the MCP server provide several advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enables end-to-end ML workflows through natural language interactions.&lt;/li&gt;
&lt;li&gt;Eliminates dependency on VerticaPy for common ML tasks.&lt;/li&gt;
&lt;li&gt;Supports automated data exploration, cleansing, and preparation.&lt;/li&gt;
&lt;li&gt;Simplifies model training and evaluation.&lt;/li&gt;
&lt;li&gt;Generates interpretable insights and executive-ready summaries.&lt;/li&gt;
&lt;li&gt;Makes advanced analytics accessible to users with limited data science expertise.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
