ADO.NET MCP Server

Um servidor MCP em C# para interagir com bancos de dados via ADO.NET, compatível com Virtuoso.

Documentação


OpenLink MCP Server para ADO.NET

Um servidor MCP (Model Context Protocol) leve baseado em C# para ADO.NET. Este servidor é compatível com Virtuoso. Atualmente, este servidor foi testado com sucesso apenas usando os runtimes .NET no Windows e Linux.

mcp-client-and-servers|648x499

Recursos

  • Obter Schemas: Buscar e listar todos os nomes de schemas do banco de dados conectado.
  • Obter Tabelas: Recuperar informações de tabelas para schemas específicos ou todos os schemas.
  • Descrever Tabela: Gerar uma descrição detalhada das estruturas das tabelas, incluindo:
    • Nomes de colunas e tipos de dados
    • Atributos de nulidade
    • Chaves primárias e estrangeiras
  • Pesquisar Tabelas: Filtrar e recuperar tabelas com base em substrings do nome.
  • Executar Procedimentos Armazenados: Quando conectado ao Virtuoso, executar procedimentos armazenados e recuperar resultados.
  • Executar Consultas:
    • Formato de resultado JSONL: Otimizado para respostas estruturadas.
    • Formato de tabela Markdown: Ideal para relatórios e visualização.

Pré-requisitos

  1. NET.8
    • Verifique se o arquivo do projeto (MCP_AdoNet_Server.csproj) é compatível com seu ambiente executando:
      dotnet run --framework net8.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
      
  2. NET.9
    • Verifique se o arquivo do projeto (MCP_AdoNet_Server.csproj) é compatível com seu ambiente executando:
      dotnet run --framework net9.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
      
    • Se necessário, você também pode tentar recompilar MCP_AdoNet_Server.csproj executando:
      dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
      dotnet build /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
      

Instalação

Clone este repositório:

git clone https://github.com/OpenLinkSoftware/mcp-adonet-server.git  
cd mcp-adonet-server

Variáveis de Ambiente

Atualize seu .env substituindo esses padrões de acordo com suas preferências.

ADO_URL="HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo"
API_KEY=xxx

Configuração

Para usuários do Claude Desktop: Adicione o seguinte ao claude_desktop_config.json:

  1. 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"
          }
        }
      }
    }
    
  2. 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

Ferramentas Fornecidas

Após a instalação bem-sucedida, as seguintes ferramentas estarão disponíveis para aplicativos clientes MCP.

Visão Geral

nomedescrição
ado_get_schemasLista os schemas de banco de dados acessíveis ao sistema de gerenciamento de banco de dados (DBMS) conectado.
ado_get_tablesLista as tabelas associadas a um schema de banco de dados selecionado.
ado_describe_tableFornece a descrição de uma tabela associada a um schema de banco de dados designado. Isso inclui informações sobre nomes de colunas, tipos de dados, tratamento de nulos, autoincremento, chave primária e chaves estrangeiras.
ado_filter_table_namesLista tabelas, com base em um padrão de substring do campo de entrada q, associadas a um schema de banco de dados selecionado.
ado_query_databaseExecuta uma consulta SQL e retorna resultados no formato JSONL.
ado_execute_queryExecuta uma consulta SQL e retorna resultados no formato JSONL.
ado_execute_query_mdExecuta uma consulta SQL e retorna resultados no formato de tabela Markdown.
ado_spasql_queryExecuta uma consulta SPASQL e retorna resultados.
ado_sparql_queryExecuta uma consulta SPARQL e retorna resultados.
ado_virtuoso_support_aiInterage com o Assistente/Agente de Suporte Virtuoso — um recurso específico do Virtuoso para interagir com LLMs.

Descrição Detalhada

  • ado_get_schemas

    • Recupera e retorna uma lista de todos os nomes de schemas do banco de dados conectado.
    • Parâmetros de entrada:
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna um array JSON de strings com os nomes dos schemas.
  • ado_get_tables

    • Recupera e retorna uma lista contendo informações sobre tabelas em um schema especificado. Se nenhum schema for fornecido, usa o schema padrão da conexão.
    • Parâmetros de entrada:
      • schema (string, opcional): Schema do banco de dados para filtrar tabelas. Padrão: schema padrão da conexão.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna uma string JSON contendo informações das tabelas (ex.: TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE).
  • ado_filter_table_names

    • Filtra e retorna informações sobre tabelas cujos nomes contêm uma substring específica.
    • Parâmetros de entrada:
      • q (string, obrigatório): A substring a ser pesquisada nos nomes das tabelas.
      • schema (string, opcional): Schema do banco de dados para filtrar tabelas. Padrão: schema padrão da conexão.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna uma string JSON contendo informações das tabelas correspondentes.
  • ado_describe_table

    • Recupera e retorna informações detalhadas sobre as colunas de uma tabela específica.
    • Parâmetros de entrada:
      • schema (string, obrigatório): O nome do schema do banco de dados que contém a tabela.
      • table (string, obrigatório): O nome da tabela a ser descrita.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna uma string JSON descrevendo as colunas da tabela (ex.: COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, IS_NULLABLE).
  • ado_query_database

    • Executa uma consulta SQL padrão e retorna os resultados no formato JSON.
    • Parâmetros de entrada:
      • query (string, obrigatório): A string da consulta SQL a ser executada.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna os resultados da consulta como uma string JSON.
  • ado_query_database_md

    • Executa uma consulta SQL padrão e retorna os resultados formatados como uma tabela Markdown.
    • Parâmetros de entrada:
      • query (string, obrigatório): A string da consulta SQL a ser executada.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna os resultados da consulta como uma string de tabela Markdown.
  • ado_query_database_jsonl

    • Executa uma consulta SQL padrão e retorna os resultados no formato JSON Lines (JSONL) (um objeto JSON por linha).
    • Parâmetros de entrada:
      • query (string, obrigatório): A string da consulta SQL a ser executada.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna os resultados da consulta como uma string JSONL.
  • ado_spasql_query

    • Executa uma consulta SPASQL (híbrido SQL/SPARQL) e retorna resultados. Este é um recurso específico do Virtuoso.
    • Parâmetros de entrada:
      • query (string, obrigatório): A string da consulta SPASQL.
      • max_rows (número, opcional): Número máximo de linhas a retornar. Padrão: 20.
      • timeout (número, opcional): Tempo limite da consulta em milissegundos. Padrão: 30000.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna o resultado da chamada do procedimento armazenado subjacente (ex.: Demo.demo.execute_spasql_query).
  • ado_sparql_query

    • Executa uma consulta SPARQL e retorna resultados. Este é um recurso específico do Virtuoso.
    • Parâmetros de entrada:
      • query (string, obrigatório): A string da consulta SPARQL.
      • format (string, opcional): Formato de resultado desejado. Padrão: 'json'.
      • timeout (número, opcional): Tempo limite da consulta em milissegundos. Padrão: 30000.
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna o resultado da chamada de função subjacente (ex.: "UB".dba."sparqlQuery").
  • ado_virtuoso_support_ai

    • Utiliza uma função de Assistente de IA específica do Virtuoso, passando um prompt e uma chave de API opcional. Este é um recurso específico do Virtuoso.
    • Parâmetros de entrada:
      • prompt (string, obrigatório): O texto do prompt para a função de IA.
      • api_key (string, opcional): Chave de API para o serviço de IA. Padrão: "none".
      • url (string, opcional): String de conexão ADO.NET URL.
    • Retorna o resultado da chamada da função do Assistente de Suporte de IA (ex.: DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).

Solução de Problemas

Para facilitar a solução de problemas:

  1. Instale o MCP Inspector:

    npm install -g @modelcontextprotocol/inspector
    
  2. Inicie o inspector, dependendo de qual versão do .NET está em 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"
    

    -- ou --

    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"
    

Acesse a URL fornecida para solucionar problemas de interações com o servidor.