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.
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
- 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
- Verifique se o arquivo do projeto (
- 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.csprojexecutando:dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj dotnet build /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
- Verifique se o arquivo do projeto (
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:
-
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
Ferramentas Fornecidas
Após a instalação bem-sucedida, as seguintes ferramentas estarão disponíveis para aplicativos clientes MCP.
Visão Geral
| nome | descrição |
|---|---|
ado_get_schemas | Lista os schemas de banco de dados acessíveis ao sistema de gerenciamento de banco de dados (DBMS) conectado. |
ado_get_tables | Lista as tabelas associadas a um schema de banco de dados selecionado. |
ado_describe_table | Fornece 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_names | Lista 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_database | Executa uma consulta SQL e retorna resultados no formato JSONL. |
ado_execute_query | Executa uma consulta SQL e retorna resultados no formato JSONL. |
ado_execute_query_md | Executa uma consulta SQL e retorna resultados no formato de tabela Markdown. |
ado_spasql_query | Executa uma consulta SPASQL e retorna resultados. |
ado_sparql_query | Executa uma consulta SPARQL e retorna resultados. |
ado_virtuoso_support_ai | Interage 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:
-
Instale o MCP Inspector:
npm install -g @modelcontextprotocol/inspector -
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.
