ADO.NET MCP Server
Un servidor MCP en C# para interactuar con bases de datos a través de ADO.NET, compatible con Virtuoso.
Documentación
Servidor MCP OpenLink para ADO.NET
Un servidor MCP (Model Context Protocol) ligero basado en C# para ADO.NET. Este servidor es compatible con Virtuoso. Actualmente, este servidor solo ha sido probado exitosamente usando los runtimes de .NET en Windows y Linux.
Características
- Obtener Esquemas: Recupera y lista todos los nombres de esquemas de la base de datos conectada.
- Obtener Tablas: Recupera información de tablas para esquemas específicos o todos los esquemas.
- Describir Tabla: Genera una descripción detallada de las estructuras de tablas, incluyendo:
- Nombres de columnas y tipos de datos
- Atributos de nulabilidad
- Claves primarias y foráneas
- Buscar Tablas: Filtra y recupera tablas basándose en subcadenas del nombre.
- Ejecutar Procedimientos Almacenados: Cuando está conectado a Virtuoso, ejecuta procedimientos almacenados y recupera resultados.
- Ejecutar Consultas:
- Formato de resultado JSONL: Optimizado para respuestas estructuradas.
- Formato de tabla Markdown: Ideal para informes y visualización.
Requisitos previos
- NET.8
- Verifique que el archivo del proyecto (
MCP_AdoNet_Server.csproj) sea compatible con su entorno ejecutando:dotnet run --framework net8.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
- Verifique que el archivo del proyecto (
- NET.9
- Verifique que el archivo del proyecto (
MCP_AdoNet_Server.csproj) sea compatible con su entorno ejecutando:dotnet run --framework net9.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj - Si es necesario, también puede intentar reconstruir
MCP_AdoNet_Server.csprojejecutando:dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj dotnet build /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
- Verifique que el archivo del proyecto (
Instalación
Clone este repositorio:
git clone https://github.com/OpenLinkSoftware/mcp-adonet-server.git
cd mcp-adonet-server
Variables de Entorno
Actualice su .env sobrescribiendo estos valores predeterminados para que coincidan con sus preferencias.
ADO_URL="HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo"
API_KEY=xxx
Configuración
Para usuarios de Claude Desktop:
Agregue lo siguiente a claude_desktop_config.json:
-
NET.8
{ "mcpServers": { "my_database": { "command": "dotnet", "args": ["run", "--framework", "net8.0", "--project", "/path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj"], "env": { "ADO_URL": "HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo", "API_KEY": "sk-xxx" } } } } -
NET.9
{ "mcpServers": { "my_database": { "command": "dotnet", "args": ["run", "--framework", "net9.0", "--project", "/path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj"], "env": { "ADO_URL": "HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo", "API_KEY": "sk-xxx" } } } }
Uso
Herramientas Proporcionadas
Después de una instalación exitosa, las siguientes herramientas estarán disponibles para las aplicaciones cliente MCP.
Resumen
| nombre | descripción |
|---|---|
ado_get_schemas | Lista los esquemas de base de datos accesibles para el sistema de gestión de bases de datos (DBMS) conectado. |
ado_get_tables | Lista las tablas asociadas con un esquema de base de datos seleccionado. |
ado_describe_table | Proporciona la descripción de una tabla asociada con un esquema de base de datos designado. Esto incluye información sobre nombres de columnas, tipos de datos, manejo de nulos, autoincremento, clave primaria y claves foráneas. |
ado_filter_table_names | Lista tablas, basándose en un patrón de subcadena del campo de entrada q, asociadas con un esquema de base de datos seleccionado. |
ado_query_database | Ejecuta una consulta SQL y devuelve resultados en formato JSONL. |
ado_execute_query | Ejecuta una consulta SQL y devuelve resultados en formato JSONL. |
ado_execute_query_md | Ejecuta una consulta SQL y devuelve resultados en formato de tabla Markdown. |
ado_spasql_query | Ejecuta una consulta SPASQL y devuelve resultados. |
ado_sparql_query | Ejecuta una consulta SPARQL y devuelve resultados. |
ado_virtuoso_support_ai | Interactúa con el Asistente/Agente de Soporte de Virtuoso: una característica específica de Virtuoso para interactuar con LLMs. |
Descripción Detallada
-
ado_get_schemas- Recupera y devuelve una lista de todos los nombres de esquemas de la base de datos conectada.
- Parámetros de entrada:
url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve un arreglo JSON de cadenas con los nombres de los esquemas.
-
ado_get_tables- Recupera y devuelve una lista con información sobre las tablas en un esquema especificado. Si no se proporciona un esquema, usa el esquema predeterminado de la conexión.
- Parámetros de entrada:
schema(cadena, opcional): Esquema de base de datos para filtrar tablas. Predeterminado al esquema de la conexión.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve una cadena JSON con información de tablas (por ejemplo,
TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE).
-
ado_filter_table_names- Filtra y devuelve información sobre tablas cuyos nombres contienen una subcadena específica.
- Parámetros de entrada:
q(cadena, requerido): La subcadena a buscar dentro de los nombres de las tablas.schema(cadena, opcional): Esquema de base de datos para filtrar tablas. Predeterminado al esquema de la conexión.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve una cadena JSON con información de las tablas coincidentes.
-
ado_describe_table- Recupera y devuelve información detallada sobre las columnas de una tabla específica.
- Parámetros de entrada:
schema(cadena, requerido): El nombre del esquema de base de datos que contiene la tabla.table(cadena, requerido): El nombre de la tabla a describir.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve una cadena JSON que describe las columnas de la tabla (por ejemplo,
COLUMN_NAME,TYPE_NAME,COLUMN_SIZE,IS_NULLABLE).
-
ado_query_database- Ejecuta una consulta SQL estándar y devuelve los resultados en formato JSON.
- Parámetros de entrada:
query(cadena, requerido): La cadena de consulta SQL a ejecutar.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve los resultados de la consulta como una cadena JSON.
-
ado_query_database_md- Ejecuta una consulta SQL estándar y devuelve los resultados formateados como una tabla Markdown.
- Parámetros de entrada:
query(cadena, requerido): La cadena de consulta SQL a ejecutar.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve los resultados de la consulta como una cadena de tabla Markdown.
-
ado_query_database_jsonl- Ejecuta una consulta SQL estándar y devuelve los resultados en formato JSON Lines (JSONL) (un objeto JSON por línea).
- Parámetros de entrada:
query(cadena, requerido): La cadena de consulta SQL a ejecutar.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve los resultados de la consulta como una cadena JSONL.
-
ado_spasql_query- Ejecuta una consulta SPASQL (híbrido SQL/SPARQL) y devuelve resultados. Esta es una característica específica de Virtuoso.
- Parámetros de entrada:
query(cadena, requerido): La cadena de consulta SPASQL.max_rows(número, opcional): Número máximo de filas a devolver. Predeterminado a20.timeout(número, opcional): Tiempo de espera de la consulta en milisegundos. Predeterminado a30000.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve el resultado de la llamada al procedimiento almacenado subyacente (por ejemplo,
Demo.demo.execute_spasql_query).
-
ado_sparql_query- Ejecuta una consulta SPARQL y devuelve resultados. Esta es una característica específica de Virtuoso.
- Parámetros de entrada:
query(cadena, requerido): La cadena de consulta SPARQL.format(cadena, opcional): Formato de resultado deseado. Predeterminado a'json'.timeout(número, opcional): Tiempo de espera de la consulta en milisegundos. Predeterminado a30000.url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve el resultado de la llamada a la función subyacente (por ejemplo,
"UB".dba."sparqlQuery").
-
ado_virtuoso_support_ai- Utiliza una función de Asistente de IA específica de Virtuoso, pasando un prompt y una clave API opcional. Esta es una característica específica de Virtuoso.
- Parámetros de entrada:
prompt(cadena, requerido): El texto del prompt para la función de IA.api_key(cadena, opcional): Clave API para el servicio de IA. Predeterminado a"none".url(cadena, opcional): Cadena de conexión URL de ADO.NET.
- Devuelve el resultado de la llamada a la función del Asistente de Soporte de IA (por ejemplo,
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).
Solución de Problemas
Para una solución de problemas sencilla:
-
Instale el MCP Inspector:
npm install -g @modelcontextprotocol/inspector -
Inicie el inspector, dependiendo de qué versión de .Net esté en uso:
dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj npx @modelcontextprotocol/inspector dotnet run --framework net8.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj -e ADO_URL="HOST=localhost:1111;Database=Demo;UID=username;PWD=password" -e API_KEY="sk-xxx-myapikey-xxx"-- o --
dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj npx @modelcontextprotocol/inspector dotnet run --framework net9.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj -e ADO_URL="HOST=localhost:1111;Database=Demo;UID=username;PWD=password" -e API_KEY="sk-xxx-myapikey-xxx"
Acceda a la URL proporcionada para solucionar problemas de interacciones con el servidor.
