MCP Database Server

Conecta-se e interage com diversos sistemas de banco de dados como SQLite, PostgreSQL, SQL Server e MongoDB.

Documentação

MseeP.ai Security Assessment Badge

MCP Database Server

Uma implementação do Model Context Protocol (MCP) para conectar e trabalhar com diversos sistemas de banco de dados.

Bancos de Dados Suportados

  • SQLite
  • PostgreSQL
  • Microsoft SQL Server
  • MongoDB

Instalação

npm install -g mcp-dbs

Uso

O MCP Database Server pode ser usado em dois modos:

Modo SSE (Padrão)

Por padrão, o servidor executa no modo SSE (Server-Sent Events) na porta 3001:

npx mcp-dbs

Isso iniciará um servidor HTTP com um endpoint SSE em http://localhost:3001/mcp.

Porta Personalizada

Você pode especificar uma porta personalizada usando a opção --port:

npx mcp-dbs --port 8080

Modo STDIO

Para ferramentas que se comunicam por entrada/saída padrão, você pode usar a opção --stdio:

npx mcp-dbs --stdio

Integração com Claude Desktop

Você pode integrar o mcp-dbs com o Claude Desktop adicionando-o ao seu arquivo de configuração do Claude.

Etapas de Configuração

  1. Abra ou crie seu arquivo de configuração do Claude Desktop
  2. Adicione a configuração do mcp-dbs à seção mcpServers:
{
  "mcpServers": {
    "mcp-dbs": {
      "command": "node",
      "args": [
        "/path/to/your/mcp-dbs/dist/cli.js",
        "--stdio"
      ],
      "env": {
        "MCP_MONGODB_URI": "mongodb://localhost:27017",
        "MCP_MONGODB_DATABASE": "your-database-name"
      }
    }
  }
}

Substitua as variáveis de ambiente pelos detalhes da sua conexão de banco de dados.

Notas

  • O command deve ser node
  • Em args, forneça o caminho absoluto para o arquivo cli.js na sua instalação do mcp-dbs
  • Configure as variáveis de ambiente apropriadas para o seu tipo de banco de dados (veja a seção de variáveis de ambiente abaixo)
  • Você pode usar variáveis de ambiente para qualquer um dos bancos de dados suportados (SQLite, PostgreSQL, SQL Server ou MongoDB)

Usando com o Claude

Uma vez configurado, o Claude poderá acessar seu banco de dados usando as ferramentas MCP descritas abaixo. Você pode pedir ao Claude para:

  • Conectar-se ao seu banco de dados
  • Executar consultas e obter resultados
  • Explorar o esquema do seu banco de dados
  • Trabalhar com tabelas e dados

Ferramentas

  • connect-database: Conectar a um banco de dados
  • disconnect-database: Desconectar de um banco de dados
  • execute-query: Executar uma consulta e retornar resultados
  • execute-update: Executar uma consulta sem retornar resultados

Recursos

  • database-schema: Obter o esquema completo do banco de dados
  • table-schema: Obter o esquema de uma tabela específica
  • tables-list: Obter uma lista de todas as tabelas

Usando variáveis de ambiente para configuração

Você pode configurar suas conexões de banco de dados usando variáveis de ambiente:

SQLite

# Set these environment variables before connecting
export MCP_SQLITE_FILENAME="path/to/database.db"
export MCP_SQLITE_CREATE_IF_NOT_EXISTS="true"

PostgreSQL

# Set these environment variables before connecting
export MCP_POSTGRES_HOST="your-postgres-host"
export MCP_POSTGRES_PORT="5432"
export MCP_POSTGRES_DATABASE="your-database-name"
export MCP_POSTGRES_USER="your-username"
export MCP_POSTGRES_PASSWORD="your-password"
export MCP_POSTGRES_SSL="false"

SQL Server

# Set these environment variables before connecting
export MCP_MSSQL_SERVER="your-server-address"
export MCP_MSSQL_PORT="1433"
export MCP_MSSQL_DATABASE="your-database-name"
export MCP_MSSQL_USER="your-username"
export MCP_MSSQL_PASSWORD="your-password"
export MCP_MSSQL_ENCRYPT="true"
export MCP_MSSQL_TRUST_SERVER_CERTIFICATE="true"

MongoDB

# Set these environment variables before connecting
export MCP_MONGODB_URI="mongodb://localhost:27017"
export MCP_MONGODB_DATABASE="your-database-name"
export MCP_MONGODB_MAX_POOL_SIZE="10"
export MCP_MONGODB_USE_UNIFIED_TOPOLOGY="true"

Essas variáveis de ambiente terão precedência sobre qualquer configuração passada para a ferramenta connect-database.

Ferramentas MCP

O servidor expõe as seguintes ferramentas MCP:

connect-database

Conectar a um banco de dados.

Parâmetros:

  • connectionId: Um identificador único para a conexão
  • type: Tipo de banco de dados (sqlite, postgres, mssql ou mongodb)

Exemplo para SQLite:

{
  "connectionId": "my-sqlite-db",
  "type": "sqlite"
}

Exemplo para PostgreSQL:

{
  "connectionId": "my-postgres-db",
  "type": "postgres"
}

Exemplo para SQL Server:

{
  "connectionId": "my-mssql-db",
  "type": "mssql"
}

Exemplo para MongoDB:

{
  "connectionId": "my-mongodb-db",
  "type": "mongodb"
}

disconnect-database

Desconectar de um banco de dados.

Parâmetros:

  • connectionId: O ID da conexão para desconectar

execute-query

Executar uma consulta que retorna resultados.

Parâmetros:

  • connectionId: O ID da conexão
  • query: Consulta SQL ou pipeline de agregação do MongoDB (como string JSON)
  • params: (Opcional) Matriz de parâmetros para a consulta. Para MongoDB, o primeiro parâmetro é o nome da coleção.

Exemplo para SQL:

{
  "connectionId": "my-postgres-db",
  "query": "SELECT * FROM users WHERE age > $1",
  "params": [21]
}

Exemplo para MongoDB:

{
  "connectionId": "my-mongodb-db",
  "query": "[{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]",
  "params": ["users"]
}

Exemplo para MongoDB (novo formato com coleção incorporada):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"collection\": \"users\", \"pipeline\": [{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]}"
}

Exemplo para MongoDB (sintaxe de shell):

{
  "connectionId": "my-mongodb-db",
  "query": "db.getCollection('users').find({\"age\": {\"$gt\": 21}})"
}

Exemplo para MongoDB (sintaxe de shell com referência direta à coleção):

{
  "connectionId": "my-mongodb-db",
  "query": "db.users.find({\"age\": {\"$gt\": 21}})"
}

Exemplo para MongoDB (comando bruto):

{
  "connectionId": "my-mongodb-db", 
  "query": "{\"find\": \"users\", \"filter\": {\"age\": {\"$gt\": 21}}}"
}

execute-update

Executar uma consulta que não retorna resultados (INSERT, UPDATE, DELETE).

Parâmetros:

  • connectionId: O ID da conexão
  • query: Consulta SQL ou comando MongoDB (como string JSON)
  • params: (Opcional) Matriz de parâmetros para a consulta. Para MongoDB, o primeiro parâmetro é o nome da coleção.

Exemplo para SQL:

{
  "connectionId": "my-postgres-db",
  "query": "INSERT INTO users (name, age) VALUES ($1, $2)",
  "params": ["John Doe", 30]
}

Exemplo para MongoDB:

{
  "connectionId": "my-mongodb-db",
  "query": "{\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}",
  "params": ["users"]
}

Exemplo para MongoDB (novo formato com coleção incorporada):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"collection\": \"users\", \"operation\": {\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}}"
}

Exemplo para MongoDB (sintaxe de shell):

{
  "connectionId": "my-mongodb-db",
  "query": "db.getCollection('users').insertOne({\"name\": \"John Doe\", \"age\": 30})"
}

Exemplo para MongoDB (sintaxe de shell com referência direta à coleção):

{
  "connectionId": "my-mongodb-db",
  "query": "db.users.insertOne({\"name\": \"John Doe\", \"age\": 30})"
}

Exemplo para MongoDB (comando bruto):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"insert\": \"users\", \"documents\": [{\"name\": \"John Doe\", \"age\": 30}]}"
}

Recursos MCP

O servidor expõe os seguintes recursos MCP:

Esquema do Banco de Dados

URI: database://{connectionId}/schema

Retorna informações de esquema sobre o banco de dados, incluindo todas as tabelas e suas colunas.

Esquema da Tabela

URI: database://{connectionId}/tables/{tableName}

Retorna informações de esquema sobre uma tabela específica, incluindo suas colunas.

Lista de Tabelas

URI: database://{connectionId}/tables

Retorna uma lista de todas as tabelas no banco de dados.

Desenvolvimento

Testes

Execute os testes:

npm test

Apoie o Projeto

Se você achar este projeto útil, considere me pagar um café!

Buy Me A Coffee QR Code

Escaneie o código QR acima ou clique aqui para apoiar o desenvolvimento deste projeto.

Licença

MIT