DB2 MCP Server: agent AI czyta i zapisuje dane w IBM DB2.
Serwer Model Context Protocol w Node.js, który daje Claude Code i Claude Desktop dostęp do bazy IBM DB2: listę tabel, metadane kolumn, zapytania SELECT, zapis danych i zmiany schematu. Kod jest otwarty, na licencji MIT: github.com/clone147/szron-db2-mcp.
Autor: Tomek Wojciechowski · Opublikowano:
Dziewięć narzędzi, które agent widzi w MCP.
| Narzędzie | Do czego |
|---|---|
get_tables | lista tabel (opcjonalnie catalog, schema) |
get_columns | metadane kolumn wskazanej tabeli |
run_query | zapytanie SELECT albo WITH |
insert_data | wstawienie wiersza (table, data) |
update_data | aktualizacja wierszy (table, data, where) |
delete_data | usunięcie wierszy (table, where — wymagane) |
create_table | utworzenie tabeli (kolumny, constrainty) |
alter_table | zmiana struktury tabeli |
drop_table | usunięcie tabeli (wymaga confirm: true) |
Nazwy narzędzi dostają prefiks z pliku konfiguracji (np. szron-db2-mcp_get_tables). Serwer pilnuje bezpieczeństwa zapytań: UPDATE i DELETE wymagają klauzuli WHERE, DROP TABLE wymaga jawnego potwierdzenia, a wejście jest walidowane pod kątem SQL injection. Wyniki wracają do agenta w formacie CSV.
Instalacja: Node.js 18+, git i dostęp do bazy.
Potrzebujecie Node.js w wersji 18 lub nowszej, gita i połączenia sieciowego z bazą DB2 (domyślnie port 50000). Osobny klient DB2 nie jest potrzebny: pakiet npm ibm_db instaluje własny sterownik, więc przy instalacji musi być dostęp do internetu.
git clone https://github.com/clone147/szron-db2-mcp.git
cd szron-db2-mcp
npm install
npm run build Konfiguracja połączenia w pliku db2.prp.
Skopiujcie przykład (cp db2.prp.example db2.prp) i wpiszcie dane swojej bazy:
Prefix=szron-db2-mcp
ServerName=SzronDB2_MCP_Server
ServerVersion=1.0
ConnectionString=DATABASE=<baza>;HOSTNAME=<host>;PORT=50000;PROTOCOL=TCPIP;UID=<użytkownik>;PWD=<hasło>;CURRENTSCHEMA=<schemat>
LogFile=mcp-server.log W ConnectionString podajecie DATABASE, HOSTNAME, PORT, PROTOCOL (TCPIP), UID i PWD, opcjonalnie CURRENTSCHEMA, SECURITY (SSL) i CONNECTTIMEOUT. Wpis Tables=T1,T2 ogranicza agenta do wskazanych tabel; bez niego widzi wszystkie. Plik db2.prp jest w .gitignore, więc dane logowania nie trafiają do repozytorium. Start serwera sprawdzicie poleceniem node dist/index.js db2.prp.
Podłączenie do Claude Code i Claude Desktop.
Ścieżki muszą być bezwzględne; na Windows w JSON-ie ukośniki wsteczne zapisujecie podwójnie (\\). W Claude Code:
claude mcp add szron-db2-mcp --scope user -- node "/pełna/ścieżka/szron-db2-mcp/dist/index.js" "/pełna/ścieżka/szron-db2-mcp/db2.prp" Status serwera pokaże claude mcp list. W Claude Desktop dopisujecie serwer do claude_desktop_config.json i uruchamiacie aplikację od nowa:
{
"mcpServers": {
"szron-db2-mcp": {
"command": "node",
"args": [
"/pełna/ścieżka/szron-db2-mcp/dist/index.js",
"/pełna/ścieżka/szron-db2-mcp/db2.prp"
]
}
}
} Pełny zapis to odpowiedzialność: od czego zacząć.
Serwer ma pełen odczyt i zapis. Na początek podłączcie go do bazy deweloperskiej, nie produkcyjnej. Jeśli agent ma tylko czytać, użyjcie konta DB2 z uprawnieniami wyłącznie do odczytu (SELECT): narzędzia zapisu zwrócą wtedy błąd uprawnień z bazy. Wpis Tables= dodatkowo zawęża widoczne tabele. Szerzej o zasadach pracy agenta na firmowym kodzie i danych piszemy w poradniku Claude Code — bezpieczeństwo.
- Brak połączenia Failed to connect
- Sprawdźcie, czy DB2 działa i jest osiągalna, oraz host, port i dane logowania w
db2.prp. Przy zdalnej bazie ustawcie na serwerzedb2set DB2COMM=TCPIPi otwórzcie port w firewallu. - Narzędzia niewidoczne klient ich nie pokazuje
- Ścieżki w konfiguracji muszą być bezwzględne; po zmianie uruchomcie klienta MCP od nowa. Szczegóły w
mcp-server.log. npm installpada naibm_dbmoduł natywny- Potrzebny jest dostęp do internetu podczas instalacji i Node.js 18+.
SQL0668Npo ALTER TABLE tabela w stanie reorg pending- Uruchomcie
CALL SYSPROC.ADMIN_CMD('REORG TABLE schemat.tabela').
Dalej.
Agent na Waszej bazie, nie tylko DB2.
Audyt 90 minut: sprawdzimy, które dane i systemy warto podłączyć do agentów przez MCP i jak ograniczyć ich uprawnienia. Pisemny raport, bez zobowiązań.