Um servidor MCP (Model Context Protocol) completo para conectar a bancos de dados Firebird externos. Este servidor permite que assistentes de IA executem queries SQL, listem tabelas e gerenciem conexões com bancos Firebird de forma segura e eficiente.
- 🔥 Características
- 🌍 Internacionalização
- 🚀 Instalação Rápida
- ⚙️ Configuração
- 🛠️ Ferramentas MCP
- 🧪 Desenvolvimento e Testes
- 🔍 Troubleshooting
- 📊 Exemplos de Uso
- 🤝 Contribuição
- ✅ Protocolo MCP Completo - Implementa todas as especificações do MCP 2024-11-05
- ✅ Firebird 3.0.10 Oficial - Bibliotecas cliente incluídas no container
- ✅ Auto-contido - Não precisa de volumes ou instalações no host
- ✅ Diagnósticos Inteligentes - Detecta e resolve problemas automaticamente
- ✅ Conexões Externas - Conecta a qualquer servidor Firebird remoto
- ✅ 4 Ferramentas MCP - test_connection, execute_query, list_tables, server_status
- ✅ Seguro - Usuário não-root, health check integrado
- ✅ Internacionalização - Suporte a múltiplos idiomas (pt_BR, en_US)
- ✅ Testes Abrangentes - Cobertura de testes > 80% com testes unitários e de integração
- ✅ Qualidade de Código - Linting, formatação automática e verificações de segurança
- ✅ CI/CD Automatizado - Pipeline completo com GitHub Actions
- 🎯 Sistema de Prompt Padrão - Aplica automaticamente contexto expert quando as respostas iniciarem o uso do servidor MCP
- 🧠 3 Prompts Especializados - firebird_expert, firebird_performance, firebird_architecture
O servidor suporta múltiplos idiomas através de arquivos JSON centralizados:
- Idiomas disponíveis: Português (pt_BR), Inglês (en_US)
- Configuração automática: Via variáveis
FIREBIRD_LANGUAGEouLANG - Fallback inteligente: Usa inglês se idioma não encontrado
- Strings localizadas: Mensagens de erro, logs, diagnósticos e prompts
- Fácil expansão: Adicione novos idiomas criando arquivos JSON em
i18n/
# Português
docker run -e FIREBIRD_LANGUAGE=pt_BR ...
# Inglês (padrão)
docker run -e FIREBIRD_LANGUAGE=en_US ...
# Automático via LANG
export LANG=pt_BR.UTF-8O MCP Firebird inclui um sistema inovador que automaticamente aplica contexto expert ao iniciar as respostas caso o servidor MCP seja requisitado, sem necessidade de configuração manual e aprimorando o uso da ferramenta.
- 🤖 Aplicação Automática: Contexto firebird_expert por padrão no início da interação.
- 🔧 Configuração Flexível: Via environment variables ou tool parameters
- 📊 Níveis de Complexidade: basic, intermediate, advanced
- ⏭️ Override Granular: Desabilitar por tool call ou mudar operação
# Configuração Expert (padrão)
source .env
# Configurações alternativas:
export FIREBIRD_DEFAULT_PROMPT=firebird_performance # Foco em performance
export FIREBIRD_DEFAULT_PROMPT=firebird_architecture # Foco em administração
export FIREBIRD_DEFAULT_PROMPT_ENABLED=false # DesabilitarCom Expert Mode (padrão):
🔥 **FIREBIRD EXPERT MODE ACTIVE**
**Environment:** localhost:3050 | DB: database.fdb | User: SYSDBA
**Expert Guidelines (intermediate level):**
✅ Provide Firebird-specific solutions
✅ Consider performance implications
✅ Include practical examples
✅ Answer language {lang}
---
📊 Query Results: {...}
Desabilitar temporariamente:
{"tool": "execute_query", "arguments": {"sql": "SELECT...", "disable_expert_mode": true}}- Docker instalado
- Acesso a um servidor Firebird externo
- Informações de conexão (host, porta, banco, usuário, senha)
docker run -d \
--name mcp-firebird \
-e FIREBIRD_HOST=192.168.1.50 \
-e FIREBIRD_DATABASE=/dados/sistema.fdb \
-e FIREBIRD_USER=SYSDBA \
-e FIREBIRD_PASSWORD=masterkey \
ghcr.io/marcelofmatos/mcp-server-firebird:latest# Ver logs do container
docker logs mcp-firebird
# Verificar se está rodando
docker ps | grep mcp-firebird| Variável | Descrição | Padrão | Obrigatório |
|---|---|---|---|
FIREBIRD_HOST |
Endereço do servidor Firebird | localhost |
✅ |
FIREBIRD_PORT |
Porta do servidor Firebird | 3050 |
❌ |
FIREBIRD_DATABASE |
Caminho completo do banco | /path/to/database.fdb |
✅ |
FIREBIRD_USER |
Usuário do banco | SYSDBA |
❌ |
FIREBIRD_PASSWORD |
Senha do usuário | masterkey |
✅ |
FIREBIRD_CHARSET |
Charset da conexão | UTF8 |
❌ |
FIREBIRD_LANGUAGE |
Idioma das mensagens | en_US |
❌ |
MCP_SERVER_NAME |
Nome do servidor MCP | firebird-expert-server |
❌ |
MCP_SERVER_VERSION |
Versão do servidor | 1.0.0 |
❌ |
docker run -d \
--name mcp-firebird-local \
-e FIREBIRD_HOST=localhost \
-e FIREBIRD_DATABASE=/var/lib/firebird/employee.fdb \
-e FIREBIRD_PASSWORD=sua_senha \
-e FIREBIRD_LANGUAGE=pt_BR \
ghcr.io/marcelofmatos/mcp-server-firebird:latestdocker run -d \
--name mcp-firebird-corp \
-e FIREBIRD_HOST=firebird.empresa.com \
-e FIREBIRD_PORT=3050 \
-e FIREBIRD_DATABASE=/aplicacao/sistema.fdb \
-e FIREBIRD_USER=APP_USER \
-e FIREBIRD_PASSWORD=senha_segura \
-e FIREBIRD_CHARSET=ISO8859_1 \
ghcr.io/marcelofmatos/mcp-server-firebird:latestdocker run -d \
--name mcp-firebird-vps \
-e FIREBIRD_HOST=10.20.30.40 \
-e FIREBIRD_DATABASE=/home/dados/banco.fdb \
-e FIREBIRD_USER=USUARIO_DB \
-e FIREBIRD_PASSWORD=password123 \
ghcr.io/marcelofmatos/mcp-server-firebird:latestTesta a conexão com o banco Firebird e fornece diagnósticos detalhados.
Uso:
{
"name": "test_connection"
}Retorna:
- Status da conexão
- Versão do Firebird
- Diagnósticos de problemas
- Soluções específicas
Executa queries SQL no banco Firebird.
Uso:
{
"name": "execute_query",
"arguments": {
"sql": "SELECT * FROM CUSTOMERS WHERE CITY = ?",
"params": ["São Paulo"]
}
}Suporta:
- SELECT (retorna dados)
- INSERT, UPDATE, DELETE (retorna linhas afetadas)
- Queries parametrizadas
- Transações automáticas
Lista todas as tabelas de usuário do banco.
Uso:
{
"name": "list_tables"
}Retorna:
- Lista de tabelas
- Contador de tabelas
- Nome do banco
Mostra status completo do servidor MCP e bibliotecas.
Uso:
{
"name": "server_status"
}Retorna:
- Status das bibliotecas FDB e Firebird
- Configuração atual
- Teste de conexão
- Recomendações
O servidor inclui prompts especialistas dinâmicos:
Assistente especialista em Firebird com conhecimento profundo do SGBD.
Especialista em otimização e performance para Firebird.
Especialista em arquitetura e administração Firebird.
# Clonar repositório
git clone https://github.com/marcelofmatos/mcp-server-firebird
cd mcp-server-firebird
# Configurar ambiente completo
make setup-dev
# Ou manual:
./scripts/setup-dev.shO projeto possui uma suíte completa de testes:
# Todos os testes
make test-all
# Apenas testes unitários
make test-unit
# Testes de integração
make test-integration
# Testes de performance
make test-performance
# Execução rápida (sem testes lentos)
make test-fast
# Com relatório de cobertura HTML
make test-coverage# Verificações de qualidade
make lint
# Corrigir problemas automaticamente
make lint-fix
# Formatação de código
make format
# Verificação de tipos
make type-check
# Verificação de segurança
make security-check
# Pre-commit hooks
make pre-committests/
├── unit/ # Testes unitários
│ ├── test_firebird_server.py
│ ├── test_mcp_server.py
│ ├── test_i18n.py
│ └── test_performance.py
├── integration/ # Testes de integração
│ ├── test_firebird_integration.py
│ └── docker-compose-test.yml
├── conftest.py # Configurações compartilhadas
└── __init__.py
O projeto mantém cobertura de testes superior a 80%:
- Testes unitários: 150+ testes cobrindo todas as funções principais
- Testes de integração: Validação com containers Firebird reais
- Testes de performance: Benchmarks e testes de escalabilidade
- Testes de segurança: Verificação de vulnerabilidades
# Ambiente de desenvolvimento completo
make dev
# Executar servidor local (sem Docker)
make dev-server
# Monitorar mudanças
make watch
# Relatório de cobertura
make coverage-report
# Benchmark de performance
make benchmark
# Limpeza completa
make clean-allO projeto inclui pipeline completo no GitHub Actions:
- Verificações de código: Ruff, Black, MyPy, Bandit
- Testes multi-versão: Python 3.8-3.12
- Testes de integração: Com Firebird real
- Build Docker: Verificação de container
- Scan de segurança: Trivy e CodeQL
- Relatórios: Coverage, benchmarks, artefatos
Sintomas:
docker logs mcp-firebird
# Erro: FDB library not availableSolução:
# Rebuildar/baixar imagem mais recente
docker pull ghcr.io/marcelofmatos/mcp-server-firebird:latest
docker run --rm -it ghcr.io/marcelofmatos/mcp-server-firebird:latest python3 -c "import fdb; print('OK')"Sintomas:
❌ Connection failed: network error
💡 NETWORK ISSUE: Cannot reach 192.168.1.50:3050
Soluções:
- Verificar se o servidor Firebird está rodando
- Testar conectividade de rede:
# Do host Docker telnet 192.168.1.50 3050 - Verificar firewall
- Confirmar host e porta
Sintomas:
❌ Connection failed: login error
💡 AUTHENTICATION ISSUE: Invalid credentials
Soluções:
- Verificar usuário e senha:
docker run --rm \ -e FIREBIRD_HOST=seu.servidor \ -e FIREBIRD_PASSWORD=senha_correta \ ghcr.io/marcelofmatos/mcp-server-firebird:latest
- Confirmar que usuário existe no Firebird
- Testar conexão com ferramenta externa (FlameRobin, IBExpert)
Sintomas:
❌ Connection failed: database not found
💡 DATABASE ISSUE: Database file not found
Soluções:
- Verificar caminho do banco:
# Caminho deve ser absoluto no servidor Firebird -e FIREBIRD_DATABASE=/caminho/completo/banco.fdb - Confirmar que arquivo existe no servidor
- Verificar permissões do arquivo
Sintomas:
❌ Connection failed: libtommath.so.0: cannot open shared object file
Soluções:
- Usar a imagem oficial mais recente:
docker pull ghcr.io/marcelofmatos/mcp-server-firebird:latest
- Se persistir, reportar issue no GitHub
# Iniciar container
docker run -d \
--name firebird-test \
-e FIREBIRD_HOST=192.168.1.100 \
-e FIREBIRD_DATABASE=/dados/teste.fdb \
-e FIREBIRD_PASSWORD=123456 \
ghcr.io/marcelofmatos/mcp-server-firebird:latest
# Verificar logs
docker logs firebird-test
# Resultado esperado:
# [MCP-FIREBIRD] ✅ Database connection OK - Firebird 3.0.xUse a ferramenta execute_query via MCP para:
-- Listar clientes
SELECT CUSTOMER_ID, COMPANY_NAME, CITY
FROM CUSTOMERS
WHERE COUNTRY = 'Brasil'
ORDER BY COMPANY_NAME
-- Contar registros
SELECT COUNT(*) as TOTAL_CUSTOMERS
FROM CUSTOMERS
-- Inserir dados
INSERT INTO CUSTOMERS (CUSTOMER_ID, COMPANY_NAME, CITY)
VALUES ('NEW01', 'Nova Empresa', 'São Paulo')# Container com restart automático
docker run -d \
--name mcp-firebird-prod \
--restart unless-stopped \
--health-cmd="python3 -c 'import fdb; print(\"OK\")'" \
--health-interval=30s \
--health-timeout=10s \
--health-retries=3 \
-e FIREBIRD_HOST=prod.empresa.com \
-e FIREBIRD_DATABASE=/sistema/producao.fdb \
-e FIREBIRD_USER=SYS_USER \
-e FIREBIRD_PASSWORD="$PROD_PASSWORD" \
ghcr.io/marcelofmatos/mcp-server-firebird:latest
# Monitorar health
docker inspect mcp-firebird-prod | grep -A 5 HealthExemplo de docker-compose.yml:
version: '3.8'
services:
mcp-firebird:
image: ghcr.io/marcelofmatos/mcp-server-firebird:latest
container_name: mcp-firebird-server
restart: unless-stopped
environment:
- FIREBIRD_HOST=firebird.empresa.com
- FIREBIRD_PORT=3050
- FIREBIRD_DATABASE=/aplicacao/sistema.fdb
- FIREBIRD_USER=APP_USER
- FIREBIRD_PASSWORD=senha_segura
- FIREBIRD_CHARSET=UTF8
- FIREBIRD_LANGUAGE=pt_BR
healthcheck:
test: ["CMD", "python3", "-c", "import fdb; print('OK')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# Firebird para testes (opcional)
firebird-test:
image: jacobalberty/firebird:v4.0
container_name: firebird-test-db
environment:
- FIREBIRD_DATABASE=test.fdb
- FIREBIRD_USER=SYSDBA
- FIREBIRD_PASSWORD=test123
- ISC_PASSWORD=test123
ports:
- "3050:3050"
volumes:
- firebird_data:/firebird/data
profiles:
- testing
volumes:
firebird_data:
driver: localExecutar:
# Produção
docker-compose up -d
# Com Firebird de teste
docker-compose --profile testing up -d
# Logs
docker-compose logs -f mcp-firebird# Clonar repositório
git clone https://github.com/marcelofmatos/mcp-server-firebird
cd mcp-server-firebird
# Build da imagem
make build
# Testar localmente
make devmcp-server-firebird/
├── server.py # Servidor MCP principal
├── requirements.txt # Dependências de produção
├── requirements-dev.txt # Dependências de desenvolvimento
├── pyproject.toml # Configuração do projeto
├── Dockerfile # Container de produção
├── docker-compose.yml # Orquestração
├── Makefile # Comandos de automação
├── .pre-commit-config.yaml # Hooks de qualidade
├── scripts/ # Scripts auxiliares
│ ├── run-tests.sh # Executor de testes
│ └── setup-dev.sh # Setup de desenvolvimento
├── tests/ # Testes abrangentes
│ ├── unit/ # Testes unitários
│ ├── integration/ # Testes de integração
│ └── conftest.py # Configurações de teste
├── i18n/ # Internacionalização
│ ├── en_US.json # Inglês (padrão)
│ └── pt_BR.json # Português brasileiro
├── .github/ # CI/CD
│ └── workflows/
│ ├── tests.yml # Pipeline de testes
│ └── docker-image.yml # Build e deploy
└── README.md # Esta documentação
# Ambiente
make setup-dev # Configuração completa de desenvolvimento
make install-deps # Instalar dependências
# Testes
make test-all # Todos os testes
make test-unit # Testes unitários
make test-integration # Testes de integração
make test-performance # Testes de performance
make test-fast # Execução rápida
make test-coverage # Com relatório HTML
# Qualidade
make lint # Verificações de código
make lint-fix # Corrigir automaticamente
make format # Formatação
make type-check # Verificação de tipos
make security-check # Verificação de segurança
make pre-commit # Pre-commit hooks
# Docker
make build # Build da imagem
make run # Executar container
make dev # Ambiente de desenvolvimento
make logs # Ver logs
# Utilitários
make clean-all # Limpeza completa
make coverage-report # Relatório de cobertura
make benchmark # Benchmark de performance
make health-check # Verificar saúde do sistema- Especificação MCP: Model Context Protocol
- Documentação Firebird: Firebird Documentation
- FDB Python Driver: python-fdb
- Pytest Documentation: Testing Framework
- Docker Best Practices: Container Guidelines
Contribuições são bem-vindas! Por favor, siga nosso guia de contribuição:
- Fork do repositório
- Configurar ambiente local:
git clone https://github.com/seu-usuario/mcp-server-firebird cd mcp-server-firebird make setup-dev - Criar branch para feature:
git checkout -b feature/nova-funcionalidade
- Desenvolver com testes:
# Desenvolvimento iterativo make test-fast # Testes rápidos durante desenvolvimento make lint-fix # Correções automáticas make test-all # Teste completo antes de commit
- Commit das mudanças:
git add . git commit -m "feat: adicionar nova funcionalidade"
- Push e Pull Request
- Cobertura de testes: Mínimo 80%
- Linting: Código deve passar em todas as verificações (ruff, black, mypy, bandit)
- Documentação: Novas funcionalidades devem ser documentadas
- Testes: Toda funcionalidade deve ter testes unitários
- Commits: Usar Conventional Commits
# Verificações antes do commit
make pre-commit
# Pipeline completo como no CI
make test-all
make lint
make build- Usuário não-root no container
- Scanning de vulnerabilidades com Trivy e Bandit
- Dependências auditadas regularmente
- Secrets não expostos em logs
- Validação de entrada em todas as queries
- Prepared statements para prevenir SQL injection
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
- Issues: GitHub Issues
- Discussões: GitHub Discussions
- Wiki: Project Wiki
latest- Versão mais recente estável1.0.0- Versão específicamain- Versão de desenvolvimento
# Usar versão específica
docker pull ghcr.io/marcelofmatos/mcp-server-firebird:1.0.0
# Usar versão de desenvolvimento
docker pull ghcr.io/marcelofmatos/mcp-server-firebird:mainFeito com ❤️ para a comunidade Firebird e MCP