Naar inhoud

Argos-MCP

Honderd ogen op je databases, en geen ervan knippert.

Argos Panoptes (Ἄργος Πανόπτης) is de reus met honderd ogen uit de Griekse mythologie, door Hera aangesteld om Io te bewaken. Er sliep maar een deel van zijn ogen tegelijk, dus was hij nooit volledig in slaap en ontsnapte niets aan zijn blik. Panoptes betekent 'alziend'.

Wat hij doet

Argos-MCP verbindt Claude Code, of elke andere MCP-client, met PostgreSQL, MySQL/MariaDB, SQLite en SQL Server. Hij staat vóór de verbinding, niet ernaast: elke query passeert eerst SELECT-only-validatie (gebonden parameters, geen gestapelde statements, complexiteitslimieten) voordat die de driver bereikt, en elke query levert precies één audit-record op: database, statement-hash, duur en uitkomst, nooit de waarden zelf.

Je kunt meerdere databases tegelijk configureren: achter SSH-tunnels met een vastgepinde host-key-fingerprint, met veldredactie zodat gevoelige kolommen (e-mailadressen, telefoonnummers, BSN's) nooit bij het model terechtkomen, en met een eenrichtingsvergrendeling (mcp_configurable) die een database afsluit voor verdere wijzigingen via MCP zodra de instellingen goed staan.

Snel starten

Argos-MCP staat nog niet op npm, dus installeer hem uit de broncode. Je hebt Node.js 22 of nieuwer en de Claude Code CLI nodig, en verder niets. Alleen een verbinding met Azure SQL via authentication=azure-cli vraagt daarnaast om de Azure CLI op je PATH en een voltooide az login.

bash
git clone https://github.com/AraneaDev/Argos-MCP.git
cd Argos-MCP
npm install
npm run build
npm run setup
claude mcp add argos --scope user -- \
  node "$(pwd)/dist/index.js" --config "$HOME/.config/argos/config.ini"

npm run setup start een interactieve wizard voor databaseverbindingen, beveiligingsinstellingen en SSH-tunnels, en schrijft die weg naar config.ini.

Voorbeelden

Een sql_query-call, echt uitgevoerd op een lokale SQLite-database:

Call:

json
{
  "database": "demo",
  "query": "SELECT id, name, email FROM users ORDER BY id"
}

Resultaat:

text
 Query executed successfully on demo
 SELECT-only mode active
 Results: 3 rows

| id | name | email |
|---|---|---|
| 1 | Ada Lovelace | ada@example.com |
| 2 | Alan Turing | alan@example.com |
| 3 | Grace Hopper | grace@example.com |

Mogelijkheden

CategorieWat het levert
BeveiligingSELECT-only-modus, querybeveiliging tegen SQL injection, complexiteitslimieten, SSH-tunneling met vastgepinde host-keys, veldredactie
DatabasesPostgreSQL, MySQL/MariaDB, SQLite, SQL Server inclusief Azure SQL, elk met een eigen adapter
Beheersql_add_database, sql_update_database, sql_remove_database, sql_get_config (wachtwoorden altijd geredigeerd), sql_set_mcp_configurable
PerformanceConnection-pooling, schema-caching per sessie, sql_analyze_performance met dialect-specifiek advies, sql_get_metrics (min/max/gem./p95)

Databases die tijdens het draaien worden toegevoegd via sql_add_database zijn altijd select_only: true; schrijftoegang verleen je alleen door config.ini zelf te bewerken, dus het model kan zichzelf die rechten niet geven.

Configuratie

Argos-MCP leest config.ini, standaard uit ~/.config/argos/config.ini; npm run setup schrijft er een voor je. Zo ziet een productiedatabase achter een SSH-tunnel eruit:

ini
[database.production]
type=postgresql
host=internal-db.company.local
port=5432
database=production_app
username=readonly_user
password=secure_random_password
ssl=true
select_only=true

ssh_host=bastion.company.com
ssh_port=22
ssh_username=tunnel_user
ssh_private_key=/secure/path/ssh_key
ssh_host_fingerprint=SHA256:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU

[security]
max_joins=5
max_subqueries=3
max_complexity_score=50

Zonder een vastgepinde ssh_host_fingerprint weigert de tunnel te verbinden; hij vertrouwt geen enkele aangeboden host-key blindelings. select_only is de productiestandaard; zet hem alleen uit op een database waar schrijftoegang bewust gewenst is.

Azure SQL zonder wachtwoord

Bij SQL Server op Azure kan de aanmelding van de Azure CLI zelf de referentie zijn, zodat er geen geheim meer in config.ini staat:

ini
[database.azure_sql]
type=mssql
host=your-server.database.windows.net
port=1433
database=your_database_name
authentication=azure-cli
select_only=true

# Alleen nodig wanneer de tenant van de server niet de actieve context van de CLI is,
# wat bij een account met toegang tot meerdere tenants het gewone geval is.
# azure_tenant_id=00000000-0000-0000-0000-000000000000

Daarvoor moet je az login gedaan hebben, en moet de aangemelde identiteit als databasegebruiker bestaan: CREATE USER [jij@bedrijf.com] FROM EXTERNAL PROVIDER;. Versleuteling en certificaatcontrole staan in deze modus verplicht aan, want een access token is een bearer-referentie: een ongecontroleerde verbinding overhandigt dat token aan wie er ook antwoordt.