mcps-mysql-server@0.1.5
CAUTION· not startedPublisher claims: "MySQL server implementation for MCP (Model Control Protocol) framework" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
MYSQL_PASSWORDConfiguration, not credentials: _TYPER_STANDARD_TRACEBACK, ID_LOGLEVEL, ID_OIDC_AUDIENCE, MYSQL_CHARSET, MYSQL_COLLATION, MYSQL_DATABASE, MYSQL_HOST, MYSQL_PORT, MYSQL_SQL_MODE, MYSQL_USER- Where it talks to
- no vendor host named in the codeAlso tiangolo.com, python.org, palletsprojects.com, rfc-editor.org, python-hyper.org, httpbin.org, icom.museum, example.org, willmcgugan.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names tiangolo.com, python.org, palletsprojects.com, rfc-editor.org, python-hyper.org, httpbin.org, icom.museum, example.org, willmcgugan.com as well as its own vendor. The guard injects MYSQL_PASSWORD only into requests to the host you bind (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-11 and scored it 74/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; URL with embedded credentials; URL with embedded credentials. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
"""This script is used to set, get or unset values from a .env file."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.url = httpx.URL("HTTPS://jo%40email.com:a%20secret@müller.de:1234/pa%20th?search=ab#anchorlink")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.https://jo%40email.com:a%20secret@müller.de:1234/pa%20th?search=ab#anchorlinkFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.self.dotenv_path or ".env",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.subprocess.run(cmd, capture_output=True, check=True, env=env)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# Load from .env file if specifiedFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .env import DefaultIsolatedEnvFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.logger.error("python-dotenv is not installed. Cannot load .env file.")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Adds or Updates a key/value to the given .envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.If the .env path given doesn't exist, fails instead of risking creatingFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.path = os.path.join(cwd, '.env')Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.help="Location of the .env file, defaults to .env file in current working directory.")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.assert url == "https://jo%40email.com:a%[email protected]"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Return a path for the ${pwd}/.env file.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.an orphan .env somewhere in the filesystemFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.help="Load environment variables from a .env file",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.logger.error(f"Failed to load .env file: {e}")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor, subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Get the value of a given key from the given .env.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Get the correct npx commandFix: Pin versions and sources; vendor anything fetched at install time.return subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return "npx" # On Unix-like systems, just use npxFix: Pin versions and sources; vendor anything fetched at install time.return subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."""Get the correct npx command for the current platform."""Fix: Pin versions and sources; vendor anything fetched at install time."npx not found. Please ensure Node.js and npm are properly installed " "and added to your system PATH."Fix: Pin versions and sources; vendor anything fetched at install time."npx not found. Please ensure Node.js and npm are properly installed "Fix: Pin versions and sources; vendor anything fetched at install time.subprocess.run([cmd, "--version"], check=True, capture_output=True, shell=True)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.process = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for mcps-mysql-server@0.1.5 as of 3d ago. This is the package itself, not its dependencies.
What would make this Verified
6 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim shubham-rampurkar-rampurkarshubham91: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- URL with embedded credentials≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.