一个完整的MCP(模型上下文协议)服务器,用于连接外部的Firebird数据库。此服务器允许AI助手执行SQL查询、列出表并安全高效地管理与Firebird数据库的连接。
该服务器支持通过集中化的JSON文件实现多语言:
FIREBIRD_LANGUAGE或LANGi18n/目录下创建JSON文件# 葡萄牙语
docker run -e FIREBIRD_LANGUAGE=pt_BR ...
# 英语(默认)
docker run -e FIREBIRD_LANGUAGE=en_US ...
# 通过LANG自动设置
export LANG=pt_BR.UTF-8
MCP Firebird包含一个创新系统,当请求MCP服务器时,自动应用专家上下文,无需手动配置,并改进了工具的使用。
# 默认专家模式(默认)
source .env
# 其他配置选项:
export FIREBIRD_DEFAULT_PROMPT=firebird_performance # 侧重性能
export FIREBIRD_DEFAULT_PROMPT=firebird_architecture # 侧重管理
export FIREBIRD_DEFAULT_PROMPT_ENABLED=false # 禁用
启用专家模式(默认):
🔥 **FIREBIRD EXPERT MODE ACTIVE**
**环境**:localhost:3050 | 数据库:database.fdb | 用户:SYSDBA
**专家指南(中级水平)**:
✅ 提供特定于Firebird的解决方案
✅ 考虑性能影响
✅ 包含实际示例
✅ 回答语言 {lang}
---
📊 查询结果:{...}
临时禁用:
{"tool": "execute_query", "arguments": {"sql": "SELECT...", "disable_expert_mode": true}}
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
# 查看容器日志
docker logs mcp-firebird
# 检查是否正在运行
docker ps | grep mcp-firebird
| 变量 | 描述 | 默认值 | 是否必需 |
|---|---|---|---|
FIREBIRD_HOST | Firebird服务器地址 | localhost | ✅ |
FIREBIRD_PORT | Firebird服务器端口 | 3050 | ❌ |
FIREBIRD_DATABASE | 数据库完整路径 | /path/to/database.fdb | ✅ |
FIREBIRD_USER | 数据库用户 | SYSDBA | ❌ |
FIREBIRD_PASSWORD | 用户密码 | masterkey | ✅ |
FIREBIRD_CHARSET | 连接字符集 | UTF8 | ❌ |
FIREBIRD_LANGUAGE | 消息语言 | en_US | ❌ |
MCP_SERVER_NAME | MCP服务器名称 | firebird-expert-server | ❌ |
MCP_SERVER_VERSION | 服务器版本 | 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:latest
docker 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:latest
docker 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:latest
测试与Firebird数据库的连接并提供详细的诊断信息。
使用:
{
"name": "test_connection"
}
返回:
在Firebird数据库上执行SQL查询。
使用:
{
"name": "execute_query",
"arguments": {
"sql": "SELECT * FROM CUSTOMERS WHERE CITY = ?",
"params": ["São Paulo"]
}
}
支持:
列出数据库中的所有用户表。
使用:
{
"name": "list_tables"
}
返回:
显示MCP服务器及其库的完整状态。
使用:
{
"name": "server_status"
}
返回:
服务器包括动态的专业提示:
对Firebird数据库有深入知识的专业助手。
专注于Firebird优化和性能的专业人士。
专注于Firebird架构和管理的专业人士。
# 克隆仓库
git clone https://github.com/marcelofmatos/mcp-server-firebird
cd mcp-server-firebird
# 设置完整开发环境
make setup-dev
# 或者手动:
./scripts/setup-dev.sh
项目具有完整的测试套件:
# 所有测试
make test-all
# 仅单元测试
make test-unit
# 集成测试
make test-integration
# 性能测试
make test-performance
# 快速执行(不包括慢速测试)
make test-fast
# 带HTML报告的测试
make test-coverage
# 代码检查
make lint
# 自动修复问题
make lint-fix
# 代码格式化
make format
# 类型检查
make type-check
# 安全检查
make security-check
# 预提交钩子
make pre-commit
tests/
├── unit/ # 单元测试
│ ├── test_firebird_server.py
│ ├── test_mcp_server.py
│ ├── test_i18n.py
│ └── test_performance.py
├── integration/ # 集成测试
│ ├── test_firebird_integration.py
│ └── docker-compose-test.yml
├── conftest.py # 共享配置
└── __init__.py
项目保持超过80%的测试覆盖率:
# 完整开发环境
make dev
# 运行本地服务器(无Docker)
make dev-server
# 监控更改
make watch
# 覆盖率报告
make coverage-report
# 性能基准测试
make benchmark
# 完全清理
make clean-all
项目包括GitHub Actions的完整流水线:
症状:
docker logs mcp-firebird
# 错误:FDB库不可用
解决方法:
# 重新拉取最新镜像
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')"
症状:
❌ 连接失败:网络错误
💡 网络问题:无法访问192.168.1.50:3050
解决方法:
# 在Docker主机上
telnet 192.168.1.50 3050
症状:
❌ 连接失败:登录错误
💡 身份验证问题:无效凭据
解决方法:
docker run --rm \
-e FIREBIRD_HOST=你的服务器 \
-e FIREBIRD_PASSWORD=正确的密码 \
ghcr.io/marcelofmatos/mcp-server-firebird:latest
症状:
❌ 连接失败:找不到数据库
💡 数据库问题:找不到数据库文件
解决方法:
# 路径必须是Firebird服务器上的绝对路径
-e FIREBIRD_DATABASE=/完整路径/数据库.fdb
症状:
❌ 连接失败:libtommath.so.0: 无法打开共享对象文件
解决方法:
docker pull ghcr.io/marcelofmatos/mcp-server-firebird:latest
# 启动容器
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
# 查看日志
docker logs firebird-test
# 预期结果:
# [MCP-FIREBIRD] ✅ 数据库连接成功 - Firebird 3.0.x
使用MCP工具execute_query进行:
-- 列出客户
SELECT CUSTOMER_ID, COMPANY_NAME, CITY
FROM CUSTOMERS
WHERE COUNTRY = '巴西'
ORDER BY COMPANY_NAME
-- 计算记录数
SELECT COUNT(*) as TOTAL_CUSTOMERS
FROM CUSTOMERS
-- 插入数据
INSERT INTO CUSTOMERS (CUSTOMER_ID, COMPANY_NAME, CITY)
VALUES ('NEW01', '新公司', '圣保罗')
# 自动重启的容器
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
# 监控健康状况
docker inspect mcp-firebird-prod | grep -A 5 Health
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(可选)
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: local