Prüft MCP server Konfigurationen auf Klartext-Secrets, riskante Einstellungen und unsichere Berechtigungen über verschiedene AI Agents hinweg.
Auch bekannt als toolstile/cli, toolstile
- Stars
- 0
- Tools
- —
- Downloads, 30 Tage
- —
- Neueste Version
- —
- Letzter Commit
- 12. Nov. 2026
- Lizenz
- MIT
Was ist toolstile MCP?
toolstile ist ein MCP server. Prüft MCP server Konfigurationen auf Klartext-Secrets, riskante Einstellungen und unsichere Berechtigungen über verschiedene AI Agents hinweg.
Zusammenfassung generiert aus dem README des Projekts
Über toolstile MCP server
Dieses Tool ermöglicht es Entwicklern, die Konfigurationen ihrer MCP server auf Sicherheitslücken zu prüfen. Es scannt Config-Dateien für Claude Code, Claude Desktop, Cursor, Codex, VS Code, Windsurf, Devin Desktop, Gemini CLI und Cline, um High-Risk-Probleme wie API-Keys, Passwörter oder Tokens im Klartext zu identifizieren. Zudem werden Medium- und Low-Risk-Einstellungen wie nicht fixierte Package-Versionen, zu weit gefasster Filesystem-Zugriff oder unsichere Remote-Verbindungen über plain HTTP erkannt.
Das Tool läuft lokal via npx und sendet während eines Standard-Audits keine Daten oder Secrets an externe Server. Nutzer können viele Fundstellen automatisch mit dem fix command beheben, der Secrets in Umgebungsvariablen verschiebt und Package-Versionen fixiert. Wer den managed Toolstile Service nutzt, kann über das CLI zusätzlich einen MCP Proxy einrichten, um den Agent-Zugriff und Credentials über ein zentrales Dashboard zu verwalten.
Was du damit machen kannst
- 1Scan nach geleakten CredentialsIdentifiziere, ob API-Keys oder Tokens im Klartext in deinen Agent-Konfigurationsdateien stehen.
- 2Automatisierte Security-RemediationVerschiebe sensible Umgebungsvariablen automatisch in eine sichere lokale Datei und aktualisiere die Client-Konfigurationen.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
So installierst du toolstile MCP
Formate geprüft am 10. Nov. 2026Zu Cursor hinzufügenZu Goose hinzufügentoolstile MCP in Claude Code installieren
$ claude mcp add cli -- npx -y toolstiletoolstile MCP in Cursor installieren
~/.cursor/mcp.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"toolstile"
]
}
}
}toolstile MCP in VS Code installieren
.vscode/mcp.json
{
"servers": {
"cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"toolstile"
]
}
}
}toolstile MCP in VS Code CLI installieren
$ code --add-mcp '{"name":"cli","type":"stdio","command":"npx","args":["-y","toolstile"]}'toolstile MCP in Claude Desktop installieren
claude_desktop_config.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"toolstile"
]
}
}
}toolstile MCP in Codex installieren
$ codex mcp add cli -- npx -y toolstiletoolstile MCP in Codex config.toml installieren
~/.codex/config.toml
[mcp_servers.cli] command = "npx" args = ["-y", "toolstile"]
toolstile MCP in Gemini CLI installieren
$ gemini mcp add -s user cli npx -- -y toolstiletoolstile MCP in Gemini settings.json installieren
~/.gemini/settings.json
{
"mcpServers": {
"cli": {
"command": "npx",
"args": [
"-y",
"toolstile"
]
}
}
}Automatisierte Checks
Geluften am 15. Nov. 2026Vollständiger Bericht →Unsere automatisierten Checks bestanden. Das ist kein Security-Audit: Lies den Code und gib dem Server nur den minimal notwendigen Zugriff. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbartoolstile/cli is public and reachablegithub.com/toolstile/cli ↗Bestanden
- Paket nennt dieses Repository als Quelletoolstile names toolstile/cli as sourcenpmjs.com/package/toolstile ↗Bestanden
- Build-Provenienz (Sigstore-Attestierung)Sigstore attestation for toolstilenpmjs.com/package/toolstile/v/0.5.1#provenance ↗Bestanden
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-11-12github.com/toolstile/cli ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNo popular package one edit away from toolstileBestanden
- Keine kritischen Advisories im Paket oder seinen AbhängigkeitenNicht geprüft
- Keine versteckten Anweisungen an das Modell0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNicht geprüft
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehentoolstile
Check the MCP server configs your AI agents use, in one command:
npx toolstile audit
It reads the configs of Claude Code, Claude Desktop, Cursor, Codex, VS Code, Windsurf, Devin Desktop, Gemini CLI and Cline and grades them for:
| Check | Severity |
|---|---|
| API keys, tokens and passwords written into config files, URLs or arguments | high |
Remote servers reached over plain http:// |
high |
Containers run with --privileged, the Docker socket or host networking (--net=host) |
high |
| The same credential pasted into several clients' configs | medium |
| Config files holding secrets that other accounts can reach (file and folder permissions) | medium |
npx, uvx and docker servers that run whatever version is newest |
medium |
| Filesystem servers that can read your whole home folder or disk | medium |
| Permission rules that approve every tool of a server without asking | medium |
| Tools on a client's auto-approve list | low |
It also lists servers set up separately in several clients. That is context, not scored: remote servers need an entry per client.
toolstile audit · local MCP config check · nothing leaves this machine
Grade C 71/100 2 high · 1 medium
10 MCP servers in 4 files from Claude Code, Cursor, Codex
HIGH Plaintext secrets (2)
Anything that can read these files can use the credentials, including
backups, dotfile syncs and other tools.
• github (Cursor) GitHub token
~/.cursor/mcp.json mcpServers.github.env.GITHUB_PERSONAL_ACCESS_TOKEN
• linear (Claude Code) authorization header
~/.claude.json mcpServers.linear.headers.Authorization
Fix Move them into environment variables, or use the server's OAuth sign-in.
Rotate any secret in a file that was shared or synced.
…
Fix them: npx toolstile audit --fix (shows every change; you pick which to apply)
Fix what it finds
npx toolstile audit --fix
lists every change it can make, as a diff with secret values hidden, then lets you pick which to apply (space toggles, enter applies):
1. HIGH github (Cursor): move secret to $GITHUB_PERSONAL_ACCESS_TOKEN
~/.cursor/mcp.json mcpServers.github.env.GITHUB_PERSONAL_ACCESS_TOKEN
- "••••"
+ "${env:GITHUB_PERSONAL_ACCESS_TOKEN}"
2. MEDIUM linear (Claude Code): pin linear-mcp to 1.4.2
~/.claude.json mcpServers.linear.args[1]
- "linear-mcp"
+ "linear-mcp@1.4.2"
| Finding | What --fix does |
|---|---|
Plaintext secret in env or a header |
Replaces the value with a variable reference in the client's own syntax (${NAME} for Claude Code and Gemini CLI, ${env:NAME} for Cursor, VS Code and Windsurf, env_vars / bearer_token_env_var / env_http_headers for Codex). The value goes into ~/.config/toolstile/secrets.env (mode 600), and one line in your shell profile (~/.zshrc, ~/.bash_profile or ~/.bashrc, ~/.profile, or fish's conf.d) loads it. A secret shared by several clients becomes one variable. |
| Config file with secrets readable by other accounts | chmod 600 |
| Unpinned npm or PyPI package | Pins the version that is current now, looked up on npm or PyPI |
Rule that approves a whole server, or enableAllProjectMcpServers |
Removes it. These start unselected, since the agent then asks before each tool. |
Everything else (secrets in arguments or URLs, Claude Desktop and Cline, which
cannot read variables, Devin Desktop, Windows, http:// servers, Docker images, broad
filesystem roots and auto-approve lists) is listed with what to change by hand.
Each edited file is checked before it is written: it must parse to exactly the
planned result, or it is left alone. JSON files keep their comments and layout;
a Codex server's table is rewritten in place. The original files are copied to
~/.config/toolstile/backups/ first. They still hold the old secrets, so delete
them once your agents work. After moving secrets, open a new terminal and restart
your agents so they start with the variables, and rotate any secret that sat in a
shared or synced file.
--dry-run only shows the changes; --yes (or -y) applies the ones that start
selected without asking.
The audit only reads
- Reads config files on your machine. Writes nothing unless you ask for a card,
or run
--fixand confirm the changes. - Makes no network requests and collects no telemetry. (
--fixlooks up the current version of the unpinned packages it offers to pin on npm or PyPI. Only the separateauthandmcpcommands below talk to Toolstile, and only when you run them.) - Never prints, stores or sends secret values. Findings name the file and key,
for example
mcpServers.github.env.GITHUB_TOKEN, and the kind of secret. - Never quotes a config file: one that cannot be read or parsed is listed with a
reason and position only, for example
invalid TOML at line 3, column 12. - Plain TypeScript with two runtime dependencies
(smol-toml, for Codex's TOML
config, and jsonc-parser, so
--fixkeeps comments and layout in JSON files) and an optional one (resvg-js, only to render--cardas PNG). Read it before you run it.
Options
--fix Suggest fixes and apply the ones you select
-y, --yes With --fix: apply the fixes that start selected, without asking
--dry-run With --fix: only show the changes
--json Print results as JSON
--card [file] Write a shareable grade card (default toolstile-audit.png;
use a .svg name for SVG). Contains only the grade and counts.
--redact Hide your home folder and project paths, for posting the output
--project <dir> Also scan project configs in <dir> (default: current directory)
--no-project Scan only user-level configs
--fail-on <level> Exit with code 1 if any finding is at or above high, medium or low
--fail-on high makes it usable in CI or a pre-commit hook for repositories that
check in .mcp.json, .cursor/mcp.json or .vscode/mcp.json.
Exit codes:
| Code | Meaning |
|---|---|
| 0 | The audit ran, and no finding reached the --fail-on level (or --fail-on was not set) |
| 1 | A finding is at or above the --fail-on level |
| 2 | Invalid options, or the audit itself failed |
Scoring
Each distinct problem has a weight: 10 for a leaked secret, plain-http remote or
privileged container; 4 for readable secret files, unpinned packages, broad
filesystem access and whole-server auto-approval; 2 for each copied secret; 1 for
auto-approved tools. A secret pasted into several files counts as one leak. The
score is 100 / (1 + weight / 50): one leaked secret scores 83 (B), four score
about 56 (D). Grades: A 90+, B 75+, C 60+, D 40+, F below 40.
Share your grade
npx toolstile audit --card
writes a 1200×630 image with your grade and counts (no server names, paths or
values) and prints a ready-to-post link. To post the text report instead, add
--redact so it shows ~ and <project> in place of your folders.
Files it reads
| Client | User config | Project config |
|---|---|---|
| Claude Code | ~/.claude.json, ~/.claude/settings.json |
.mcp.json, .claude/settings*.json |
| Claude Desktop | claude_desktop_config.json in the app's config folder |
|
| Cursor | ~/.cursor/mcp.json |
.cursor/mcp.json |
| Codex | $CODEX_HOME/config.toml (default ~/.codex) |
.codex/config.toml |
| VS Code | user settings.json and mcp.json |
.vscode/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
|
| Devin Desktop | ~/.config/devin/mcp_config.json (%APPDATA%\devin on Windows) |
.devin/mcp_config.json, .devin/mcp_config.local.json |
| Gemini CLI | ~/.gemini/settings.json |
.gemini/settings.json |
| Cline | cline_mcp_settings.json in VS Code or Cursor storage |
Connect your agents to Toolstile
If you use the managed Toolstile service, the CLI can also sign in and set up the agents on a machine for you (self-hosted instances use each agent app's own sign-in instead):
npx toolstile auth login
npx toolstile mcp setup
auth login prints a link and a code. Open the link on any device with a
browser (your laptop or phone) and sign in. The page fills in the code and this
machine's name; edit the name if you like, check the code matches and approve.
The machine appears under that name in the Toolstile dashboard. Nothing has to
reach the machine you are signing in, so it works over SSH, in containers and on
servers without a browser.
mcp setup lists the agents it finds (Claude Code, Claude Desktop, Cursor,
Codex, VS Code, Windsurf, Devin Desktop, Gemini CLI, Cline) and lets you turn each one on or
off. Run it again any time to change the selection. Each enabled agent appears
under this machine in the Toolstile dashboard with its own access, so you can
grant, limit or revoke it there; then choose which MCP servers it can use.
Which agents on this machine should use Toolstile?
› ◉ Claude Code ~/.claude.json
○ Cursor ~/.cursor/mcp.json
◉ Codex ~/.codex/config.toml
↑/↓ move · space toggle · a all · enter save · esc cancel
Without a terminal, pass the choice as flags:
npx toolstile mcp setup --enable claude-code,codex --disable cursor.
How it stays out of your configs: an enabled agent's config gets a toolstile
server that runs npx -y toolstile@<version> mcp proxy --agent <agent>. The proxy
relays the agent's MCP messages to Toolstile using that agent's own token, which
lives only in the CLI's credentials file (~/.config/toolstile/credentials.json,
readable by you alone; %APPDATA%\toolstile on Windows). No token is written
into the agent's config, so toolstile audit has nothing to flag. JSON configs
with comments are not rewritten; setup prints the entry to add yourself.
The CLI keeps the credentials file, --fix's secrets.env and its backups in one
folder: $TOOLSTILE_CONFIG_DIR when set, otherwise %APPDATA%\toolstile on
Windows and $XDG_CONFIG_HOME/toolstile (default ~/.config/toolstile)
elsewhere.
npx toolstile auth logout ends the CLI's sign-in. Agents you enabled keep
working until you turn them off with mcp setup or delete the device in the
dashboard.
| Option | Command | Meaning |
|---|---|---|
--server <url> |
auth login |
Toolstile address (default https://app.toolstile.com, or TOOLSTILE_URL) |
--no-browser |
auth login |
Do not try to open a browser on this machine |
--enable <agents> |
mcp setup |
Turn these on without prompting (comma-separated) |
--disable <agents> |
mcp setup |
Turn these off without prompting |
--workspace <slug> |
mcp setup |
Workspace the agents use (default: the last one, or personal) |
--device-name <name> |
mcp setup |
Name for this machine in the dashboard (default: its hostname) |
Use it from code
import { audit } from "toolstile";
const { grade, findings } = audit();
About
Built by Akshit Kr Nagpal as part of Toolstile, an MCP gateway that keeps upstream credentials off your machines and lets you choose which tools each agent can use. Toolstile is available as a managed service and as an open-source self-hosted edition at toolstile/toolstile. The audit works on its own and does not require a Toolstile account.
Questions and reports: support@toolstile.com.
Development
Development uses Vite+. Its vp env shims pick Node.js
from .node-version and pnpm from packageManager, so install Vite+, then run:
pnpm install
pnpm typecheck
pnpm test # builds dist, then runs the tests with vp test
pnpm build
Development needs Node.js 22.18+, 24.11+ or 26+. The published CLI still runs on Node.js 18 and later.
Releases
The npm package is published by GitHub Actions with npm trusted publishing and provenance, so each release links back to the commit and workflow that built it. No npm token is stored anywhere.
License
toolstile MCP Fragen
Wie füge ich toolstile MCP zu Claude Code hinzu?
Führe claude mcp add cli -- npx -y toolstile in deinem Terminal aus. Füge --scope user hinzu, damit der Server in jedem Projekt verfügbar ist.
Wie füge ich toolstile MCP zu Cursor hinzu?
Öffne ~/.cursor/mcp.json und füge den Server unter mcpServers hinzu, mit der Cursor-Config aus dem Installationsabschnitt oben.
Sendet das Audit meine Daten an einen Server?
Nein, das Audit liest nur lokale Config-Dateien, nimmt keine Netzwerk-Requests vor und sammelt keine Telemetrie.
Welche AI Clients unterstützt toolstile?
Es unterstützt Claude Code, Claude Desktop, Cursor, Codex, VS Code, Windsurf, Devin Desktop, Gemini CLI und Cline.
Werden meine Secret-Werte gespeichert?
Nein, das Tool gibt Secret-Werte niemals aus, speichert sie nicht und sendet sie auch nicht.