Naar inhoud

Argos-MCP

Honderd ogen op je databases, en geen daarvan knippert.

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

Wat het doet

Argos-MCP verbindt Claude Code, of elke andere MCP-client, met PostgreSQL, MySQL/MariaDB, SQLite en SQL Server. De server staat vóór de verbinding, niet ernaast: elke query passeert eerst SELECT-only-validatie (gebonden parameters, geen gestapelde statements, complexiteitslimieten) voordat hij 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, via 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 eenrichtings-vergrendeling (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 het vanaf de broncode. Vereist: Node.js 22 of nieuwer en de Claude Code CLI.

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-aanroep, echt uitgevoerd op een lokale SQLite-database:

Aanroep:

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 mode, querybeveiliging tegen SQL-injectie, complexiteitslimieten, SSH-tunneling met vastgepinde host-keys, veldredactie
DatabasesPostgreSQL, MySQL/MariaDB, SQLite, SQL Server, 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 runtime 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 op zicht. select_only is de productiestandaard; zet hem alleen uit op een database waar schrijftoegang bewust gewenst is.