Aller au contenu principal

Méta-parameters pour les serveurs MCP gérés par Databricks

info

Aperçu

Cette fonctionnalité est en aperçu public.

Lorsque vous créez des agents d'IA qui utilisent des serveurs MCP gérés par Databricks, utilisez le paramètre _meta pour configurer le comportement de l'outil, comme les limites de résultats, les filtres de recherche ou la sélection du SQL warehouse. Cette approche vous permet de prérégler la configuration tout en gardant les query flexibles pour que votre agent les génère dynamiquement.

Le paramètre _meta fait partie de la spécification MCP officielle.

Arguments d'appel d'outil vs. _meta paramètres

Les serveurs MCP gérés par Databricks gèrent les parameters de deux manières :

  • Arguments d'appel d'outil : Paramètres qu'un LLM génère généralement de manière dynamique en fonction des entrées de l'utilisateur.
  • _meta **Paramètres ** : Paramètres de configuration que vous pouvez prédéfinir dans le code de votre agent pour définir un comportement de manière déterministe.

Paramètres du serveur MCP Databricks SQL _meta

Le serveur MCP de Databricks SQL prend en charge les _meta paramètres suivants :

Nom du paramètre

Type

Description

warehouse_id

str

L'ID du SQL Warehouse à utiliser pour l'exécution des queries.

Exemple : "a1b2c3d4e5f67890"

Si non spécifié, le système sélectionne automatiquement un warehouse en fonction des ressources et des autorisations.

Nom du paramètre

Type

Description

warehouse_id

str

L'ID du SQL Warehouse à utiliser pour l'exécution des queries.

Exemple : "a1b2c3d4e5f67890"

Si non spécifié, le système sélectionne automatiquement un warehouse en fonction des ressources et des autorisations.

Exemple : spécifier un SQL Warehouse pour les requêtes Databricks SQL

Cet exemple montre comment utiliser le paramètre warehouse_id _meta pour spécifier quel SQL warehouse exécute des requêtes à partir du serveur Databricks SQL MCP à l'aide du SDK Python MCP officiel.

Dans ce scénario, vous voulez :

  • Utilisez un SQL Warehouse spécifique pour l'exécution des query au lieu de laisser le système en sélectionner un automatiquement.
  • Vérifiez les performances cohérentes en acheminant les requêtes vers un warehouse dédié.

Pour exécuter cet exemple, configurez votre environnement Python pour le développement MCP géré:

Développer pour l'exemple de code

Pour trouver votre ID de SQL Warehouse, consultez Connectez-vous à un SQL Warehouse.

Python
# Import required libraries for MCP client and Databricks authentication
import asyncio
from databricks.sdk import WorkspaceClient
from databricks_mcp.oauth_provider import DatabricksOAuthClientProvider
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.session import ClientSession
from mcp.types import CallToolRequest, CallToolResult

async def run_dbsql_tool_call_with_meta():
# Initialize Databricks workspace client for authentication
workspace_client = WorkspaceClient()

# Construct the MCP server URL for DBSQL
# Replace <workspace-hostname> with your workspace hostname
mcp_server_url = "https://<workspace-hostname>/api/2.0/mcp/sql"

# Establish connection to the MCP server with OAuth authentication
async with streamablehttp_client(
url=mcp_server_url,
auth=DatabricksOAuthClientProvider(workspace_client),
) as (read_stream, write_stream, _):

# Create an MCP session for making tool calls
async with ClientSession(read_stream, write_stream) as session:
# Initialize the session before making requests
await session.initialize()

# Create the tool call request with warehouse_id in _meta
request = CallToolRequest(
method="tools/call",
params={
# Tool name for executing SQL queries
&quot;name&quot;: &quot;execute_sql&quot;,

# Dynamic arguments - typically provided by your AI agent
&quot;arguments&quot;: {
&quot;query&quot;: &quot;SELECT * FROM my_catalog.my_schema.my_table LIMIT 10&quot;
},

# Meta parameters - specify which warehouse to use
&quot;_meta&quot;: {
&quot;warehouse_id&quot;: &quot;a1b2c3d4e5f67890&quot; # Your SQL warehouse ID
}
}
)

# Send the request and get the response
response = await session.send_request(request, CallToolResult)
return response

# Execute the async function and get results
response = asyncio.run(run_dbsql_tool_call_with_meta())

parameters du serveur AI Search MCP _meta

AI Search prend en charge les _meta paramètres suivants :

Nom du paramètre

Type

Description

columns

str

Liste de noms de colonnes séparés par des virgules à retourner dans les résultats de recherche.

Exemple : "id,text,metadata"

S'il n'est pas spécifié, toutes les colonnes (à l'exception des colonnes internes commençant par « __ ») sont renvoyées.

columns_to_rerank

str

Liste de noms de colonne, séparés par des virgules, dont le contenu est utilisé par le modèle de reclassement pour une nouvelle notation. Le reranker utilise ce contenu pour réévaluer tous les résultats de recherche afin d'améliorer la pertinence.

Exemple : "text,title,description"

Si non spécifié, aucun nouveau classement n’est effectué.

filters

str

Chaîne JSON contenant les filtres à appliquer à la recherche. Doit être un JSON valide.

Exemple : '{"updated_after": "2024-01-01"}'

Si non spécifié, aucun filtre n'est appliqué.

include_score

bool

Faut-il inclure le score de similarité dans les résultats renvoyés.

Valeurs prises en charge : "true" ou "false"

default: "false"

num_results

int

Nombre de résultats à renvoyer.

Exemple : "5"

query_type

str

Algorithme de recherche à utiliser pour récupérer les résultats.

Valeurs prises en charge : "ANN" (plus proche voisin approximatif, default) ou "HYBRID" (combine la recherche vectorielle et par mot-clé).

default: "ANN"

score_threshold

float

threshold de score de similarité minimal pour filtrer les résultats. Les résultats dont les scores sont inférieurs à ce threshold sont exclus.

Exemple : "0.7"

Si non spécifié, aucun filtrage de score n'est appliqué.

Nom du paramètre

Type

Description

columns

str

Liste de noms de colonnes séparés par des virgules à retourner dans les résultats de recherche.

Exemple : "id,text,metadata"

S'il n'est pas spécifié, toutes les colonnes (à l'exception des colonnes internes commençant par « __ ») sont renvoyées.

columns_to_rerank

str

Liste de noms de colonne, séparés par des virgules, dont le contenu est utilisé par le modèle de reclassement pour une nouvelle notation. Le reranker utilise ce contenu pour réévaluer tous les résultats de recherche afin d'améliorer la pertinence.

Exemple : "text,title,description"

Si non spécifié, aucun nouveau classement n’est effectué.

filters

str

Chaîne JSON contenant les filtres à appliquer à la recherche. Doit être un JSON valide.

Exemple : '{"updated_after": "2024-01-01"}'

Si non spécifié, aucun filtre n'est appliqué.

include_score

bool

Faut-il inclure le score de similarité dans les résultats renvoyés.

Valeurs prises en charge : "true" ou "false"

default: "false"

num_results

int

Nombre de résultats à renvoyer.

Exemple : "5"

query_type

str

Algorithme de recherche à utiliser pour récupérer les résultats.

Valeurs prises en charge : "ANN" (plus proche voisin approximatif, default) ou "HYBRID" (combine la recherche vectorielle et par mot-clé).

default: "ANN"

score_threshold

float

threshold de score de similarité minimal pour filtrer les résultats. Les résultats dont les scores sont inférieurs à ce threshold sont exclus.

Exemple : "0.7"

Si non spécifié, aucun filtrage de score n'est appliqué.

Pour des informations détaillées sur ces paramètres, consultez la documentation de l'SDK Python d'AI Search.

Exemple : configurer le nombre maximal de résultats et les filtres pour la récupération de recherche IA

Cet exemple montre comment utiliser les _meta paramètres pour configurer le comportement de recherche IA tout en permettant des requêtes dynamiques de votre agent IA à l'aide du SDK Python MCP officiel.

Dans ce scénario, vous voulez :

  • Limitez toujours les résultats de recherche à exactement 3 éléments pour des temps de réponse cohérents.
  • Recherchez uniquement la documentation récente (mise à jour après le 1er janvier 2024) pour vérifier la pertinence.
  • Utilisez la recherche hybride pour une meilleure précision que la recherche vectorielle pure
  • Retourner uniquement des colonnes spécifiques (id, text et metadata)
  • Inclure les scores de similarité dans les résultats
  • Excluez les résultats avec des scores de similarité inférieurs à 0,5
  • Utiliser le reclassement sur les colonnes de texte et de titre pour améliorer la pertinence

Pour exécuter cet exemple, configurez votre environnement Python pour le développement MCP géré:

Développer pour l'exemple de code

Python
# Import required libraries for MCP client and Databricks authentication
import asyncio
from databricks.sdk import WorkspaceClient
from databricks_mcp.oauth_provider import DatabricksOAuthClientProvider
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.session import ClientSession
from mcp.types import CallToolRequest, CallToolResult

async def run_vector_search_tool_call_with_meta():
# Initialize Databricks workspace client for authentication
workspace_client = WorkspaceClient()

# Construct the MCP server URL for your specific catalog and schema
# Replace <workspace-hostname>, YOUR_CATALOG, and YOUR_SCHEMA with your values
mcp_server_url = "https://<workspace-hostname>/api/2.0/mcp/ai-search/YOUR_CATALOG/YOUR_SCHEMA"

# Establish connection to the MCP server with OAuth authentication
async with streamablehttp_client(
url=mcp_server_url,
auth=DatabricksOAuthClientProvider(workspace_client),
) as (read_stream, write_stream, _):

# Create an MCP session for making tool calls
async with ClientSession(read_stream, write_stream) as session:
# Initialize the session before making requests
await session.initialize()

# Create the tool call request with both dynamic and preset parameters
request = CallToolRequest(
method="tools/call",
params={
# Tool name follows the pattern: CATALOG__SCHEMA__INDEX_NAME
&quot;name&quot;: &quot;YOUR_CATALOG__YOUR_SCHEMA__YOUR_INDEX_NAME&quot;,

# Dynamic arguments - typically provided by your AI agent or user input
&quot;arguments&quot;: {
&quot;query&quot;: &quot;How do I reset my password?&quot; # This comes from your agent
},

# Meta parameters - preset configuration to control search behavior
&quot;_meta&quot;: {
&quot;num_results&quot;: &quot;3&quot;, # Limit to 3 results for consistent performance
&quot;filters&quot;: '{&quot;updated_after&quot;: &quot;2024-01-01&quot;}', # JSON string for date filtering
&quot;query_type&quot;: &quot;HYBRID&quot;, # Use hybrid search for better relevance
&quot;columns&quot;: &quot;id,text,metadata&quot;, # Return only specific columns
&quot;score_threshold&quot;: &quot;0.5&quot;, # Filter out results with similarity score &lt; 0.5
&quot;include_score&quot;: &quot;true&quot;, # Include similarity scores in results
&quot;columns_to_rerank&quot;: &quot;text,title&quot; # Use reranker on these columns for better quality
}
}
)

# Send the request and get the response
response = await session.send_request(request, CallToolResult)
return response

# Execute the async function and get results
response = asyncio.run(run_vector_search_tool_call_with_meta())

Étapes suivantes