Argos-MCP
Controleer queries, scherm gevoelige velden af en registreer databasetoegang.
Argos Panoptes (Ἄργος Πανόπτης) is een figuur met honderd ogen uit de Griekse mythologie. Panoptes betekent 'alziend'.
- TypeScript
- MCP
- PostgreSQL
- MySQL
- SQLite
- MSSQL
GitHub (opent in een nieuw tabblad)README (opent in een nieuw tabblad)Changelog (opent in een nieuw tabblad)
Op deze paginaWat het doet
Wat het doet
Argos-MCP verbindt Claude Code, of elke andere MCP-client, met PostgreSQL, MySQL/MariaDB, SQLite en SQL Server. Elke query wordt gecontroleerd voordat de databasedriver de query ontvangt: SELECT-only-beperkingen, gebonden parameters, uitsluiting van gestapelde statements en complexiteitslimieten. Elke query levert precies één auditrecord op met de database, statement-hash, duur en uitkomst. De querywaarden worden niet in dat record opgenomen.
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 Argos-MCP vanuit 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.
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:
{
"database": "demo",
"query": "SELECT id, name, email FROM users ORDER BY id"
}Resultaat:
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
| Categorie | Wat het levert |
|---|---|
| Beveiliging | SELECT-only-modus, querybeveiliging tegen SQL injection, complexiteitslimieten, SSH-tunneling met vastgepinde host-keys, veldredactie |
| Databases | PostgreSQL, MySQL/MariaDB, SQLite, SQL Server inclusief Azure SQL, elk met een eigen adapter |
| Beheer | sql_add_database, sql_update_database, sql_remove_database, sql_get_config (wachtwoorden altijd geredigeerd), sql_set_mcp_configurable |
| Performance | Connection-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 schrijftoegang kan niet via MCP worden ingeschakeld.
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:
[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=50SSH-tunnels vereisen een vastgepinde ssh_host_fingerprint; zonder host-key-verificatie komt de verbinding niet tot stand. select_only is de productiestandaard; schakel die instelling alleen uit voor een database waarvoor je bewust schrijftoegang toestaat.
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:
[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-000000000000Daarvoor 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, omdat een access token een bearer-referentie is. Zonder controle kan het token naar een ongeverifieerd endpoint worden verstuurd.