vulnerable-mcp-server-secrets-pii
A simple MCP server with IP, weather, and news tools
pinned to #47b7f20updated 2 weeks ago
Ask your AI client: “install mcps/vulnerable-mcp-server-secrets-pii”.
Requires the metahub MCP server installed in your client. Set up MCP.
mh install mcps/vulnerable-mcp-server-secrets-piimetahub onboarded this repo on the author's behalf.
If you own github.com/appsecco/vulnerable-mcp-servers-lab on GitHub, claim the listing to take over publishing. Your claim preserves the existing eval history and badges; only the curator label is replaced with verified-publisher on your next publish.
Stars
264
Last commit
2 weeks ago
Latest release
published
- #ai-red-teaming
- #ai-research
- #appsecco
- #bugbounty
- #hacking
- #learning-pentesting
- #mcp
- #mcp-client
- #mcp-server
- #pentesting
- #server
- #tools
- #vulnerable-labs
What this server exposes
Surfaces parsed from this server's source at publish time.
Launches: vulnerable-mcp-server-secrets-pii
Evaluation report
WarningsAutomated checks the publisher passed at publish time — structure, docs, safety, and whether the artifact behaves as claimed.47b7f20· 2 weeks ago
Safety
21Dependencies: known vulnerabilitieswarn
2 high/critical advisories — @modelcontextprotocol/[email protected] (HIGH: GHSA-8r9q-7v3j-jr4g) · @modelcontextprotocol/[email protected] (HIGH: GHSA-w48q-cv73-mx4w)
Update the affected packages, then re-publish. (`npm audit` shows the same data locally.)
LICENSE file at repo root
LICENSE
No sensitive files in the repo
scanned for .env, credentials.json, *.pem, .ssh/, AWS / GCP configs — none found
Release history
1- releasecurrent47b7f20warn2 weeks ago
Contents
This is an intentionally vulnerable MCP server that looks like a small “utilities” server (IP / weather / news), but also contains embedded PII and sensitive information in source code (lightly obfuscated).
Do not use this outside a controlled lab environment.
What it provides
The server exposes these MCP tools:
get_current_ip: Gets the server’s public IP addressget_temperature_of_city: Gets the current temperature for a city- Expects:
{ "city": "<city name>" }
- Expects:
get_top_news_articles_nytimes: Gets top news articles from the New York Times RSS feed- Optional:
limit(default 10, max 20)
- Optional:
How it is vulnerable
This server demonstrates secrets/PII exposure patterns:
- Sensitive values (for example: contact email / internal strings / endpoints) are stored in source code and “obfuscated” (base64) rather than properly managed.
- On startup, the server prints an “admin contact” value to stderr.
- Even when values are obfuscated, anyone with access to the package source (npm tarball, repo checkout, local install) can recover them.
In real systems, this is how API keys, emails, internal URLs, tokens, and other sensitive values end up leaking through:
- source code
- package artifacts
- logs / stderr output
Requirements
- Node.js (modern version)
- npm
Install dependencies in this folder:
npm install
Run with Claude (using claude_config.json)
This folder includes claude_config.json, which is a ready-to-merge snippet for Claude's MCP server config.
- Install dependencies:
npm install
- Edit
claude_config.jsonand replace the placeholder:
/full/path/to/vulnerable-mcp-server-secrets-pii/index.js
Use an absolute path.
-
Open Claude and edit its MCP configuration (Claude Desktop typically exposes this under Settings -> Developer -> Edit config).
-
Merge the
mcpServersentry into your config. If you already havemcpServers, add just the server entry:
{
"mcpServers": {
"vulnerable-mcp-server-secrets-pii": {
"command": "node",
"args": [
"/absolute/path/to/vulnerable-mcp-server-secrets-pii/index.js"
]
}
}
}
- Restart Claude so it loads the updated MCP configuration.
After Claude restarts, the server should appear as:
vulnerable-mcp-server-secrets-pii
Run manually (for debugging)
This server speaks MCP over stdio (JSON-RPC over stdin/stdout). Most users should run it via an MCP-capable client (like Claude) rather than manually.
If you just want to confirm it starts:
npm install
node index.js
Example usage
From your MCP client:
- Get the server’s public IP:
- Call
get_current_ip
- Call
- Get temperature for a city:
- Call
get_temperature_of_citywithcity: "Paris"
- Call
- Get top NYT articles:
- Call
get_top_news_articles_nytimes(optionally withlimit: 5)
- Call
Notes
- This server makes outbound network calls (IP lookup, weather API, NYT RSS).
- The “obfuscation” used in source code is intentionally weak and is meant to illustrate why base64/encoding is not secrets management.
Links to Appsecco Resources
Reviews
No reviews yet. Be the first.
Related
vulnerable-mcp-server-malicious-code-exec
A simple MCP server with a get_qotd tool that fetches quotes from a free API
vulnerable-mcp-server-malicious-tools
A simple MCP server to fetch and display latest status of Atlassian services
vulnerable-mcp-server-indirect-prompt-injection-remote-mcp
A vulnerable MCP server demonstrating indirect prompt injection through document retrieval
mh install mcps/vulnerable-mcp-server-secrets-pii