gophish-mcp
by dan1t0
README.md
# ๐ฃ GoPhish MCP Server




**A complete MCP (Model Context Protocol) server for interacting with all GoPhish API functionalities.**
[Features](#-key-features) โข [Installation](#-installation) โข [Configuration](#-configuration) โข [Usage](#-usage-with-claude-cursor-vscode-kiro) โข [Tools](#-available-tools)
---
> **๐ Note:** This MCP has been tested and works with GoPhish version **0.11.0**. If I receive enough love ๐, I might update it with new capabilities!
---
## โจ Key Features
- ๐ฏ **Complete Campaign Management**: Full CRUD + advanced analysis and statistics
- ๐ฅ **Group Management**: Manage target user groups with search capabilities
- ๐ง **Email Templates**: Create, edit and manage email templates
- ๐ **Landing Pages**: Manage landing pages for campaigns
- ๐ฎ **SMTP Profiles**: Configure email sending profiles
- ๐ค **User Management**: Manage system users and administrators
- ๐ **Analysis and Reports**: Detailed statistics, data export and global analysis
- ๐ **Utility Tools**: Search, validation, duplication and diagnostics
## ๐ Quick Start
### Installation
1. Clone this repository
```bash
git clone <repository-url>
cd gophish-mcp
```
2. Install dependencies:
```bash
pip install -e .
```
### Configuration
#### Option 1: .env file (Recommended)
1. Copy the example file:
```bash
cp env.example .env
```
2. Edit `.env` with your credentials:
```bash
GOPHISH_URL=https://your-gophish-server:3333
GOPHISH_API_KEY=your-api-key-here
```
#### Option 2: Environment variables
```bash
export GOPHISH_URL="https://your-gophish-server:3333"
export GOPHISH_API_KEY="your-api-key"
```
## ๐ป Usage with Claude, Cursor, VSCode, Kiro
### Step 1: Configure Credentials (One time only)
Create a `.env` file in the project directory:
```bash
cp env.example .env
# Edit .env with your real credentials
```
### Step 2: Configure MCP Client
Add the server to your MCP configuration (without credentials):
```json
{
"mcpServers": {
"gophish": {
"command": "python",
"args": ["/path/to/your/gophish-mcp/server.py"],
"cwd": "/path/to/your/gophish-mcp",
"disabled": false,
"autoApprove": [
"gophish_get_campaigns",
"gophish_get_campaign",
"gophish_get_active_campaigns",
"gophish_get_completed_campaigns",
"gophish_get_recent_campaigns",
"gophish_get_latest_campaign",
"gophish_get_campaigns_summary",
"gophish_get_campaign_results",
"gophish_get_campaign_summary",
"gophish_get_campaign_analytics",
"gophish_get_global_analytics",
"gophish_get_system_status",
"gophish_search_campaigns",
"gophish_search_groups",
"gophish_search_templates",
"gophish_get_groups",
"gophish_get_templates",
"gophish_get_pages",
"gophish_get_smtp_profiles",
"gophish_get_users",
"gophish_get_campaign_by_status",
"gophish_get_campaign_by_date_range",
"gophish_get_campaign_targets",
"gophish_get_campaign_events"
]
}
}
}
```
### Step 3: Restart MCP Client
Restart your MCP client (Claude, Cursor, etc.)
> **๐ Security Note:** Credentials are only configured in the server's `.env` file, not in the client JSON.
>
> All tools listed in `autoApprove` are read-only according to the API implementation in `server.py`. Any create, update or delete operation (`gophish_create_*`, `gophish_update_*`, `gophish_delete_*`) will always require manual approval.
## ๐ ๏ธ Tool Categories
| Category | Description |
|----------|-------------|
| **๐ READ-ONLY** | These tools only read data and are automatically approved by the MCP client |
| **โ๏ธ WRITE** | These tools modify data and require manual approval for security |
## ๐ Available Tools
### ๐ฏ Campaigns (Complete Management)
#### Basic Operations
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_campaigns` | Get all campaigns | ๐ READ-ONLY |
| `gophish_get_campaign` | Get details of a specific campaign | ๐ READ-ONLY |
| `gophish_create_campaign` | Create new campaign | โ๏ธ WRITE |
| `gophish_update_campaign` | Update existing campaign | โ๏ธ WRITE |
| `gophish_delete_campaign` | Delete campaign | โ๏ธ WRITE |
#### Analysis and Statistics
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_latest_campaign` | Get latest campaign with complete statistics | ๐ READ-ONLY |
| `gophish_get_campaigns_summary` | Get summary of last N campaigns | ๐ READ-ONLY |
| `gophish_get_campaign_results` | Get detailed results of a campaign | ๐ READ-ONLY |
| `gophish_get_campaign_summary` | Get summary with statistics of a campaign | ๐ READ-ONLY |
| `gophish_get_campaign_analytics` | Get complete analysis of a campaign | ๐ READ-ONLY |
#### Filters and Search
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_active_campaigns` | Get active campaigns | ๐ READ-ONLY |
| `gophish_get_completed_campaigns` | Get completed campaigns | ๐ READ-ONLY |
| `gophish_get_campaign_by_status` | Filter campaigns by status | ๐ READ-ONLY |
| `gophish_get_recent_campaigns` | Get campaigns from last N days | ๐ READ-ONLY |
| `gophish_get_campaign_by_date_range` | Get campaigns in date range | ๐ READ-ONLY |
| `gophish_search_campaigns` | Search campaigns by name | ๐ READ-ONLY |
#### Utilities
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_campaign_targets` | Get all targets of a campaign | ๐ READ-ONLY |
| `gophish_get_campaign_events` | Get events of a campaign | ๐ READ-ONLY |
### ๐ฅ Groups (Complete Management)
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_groups` | Get all groups | ๐ READ-ONLY |
| `gophish_create_group` | Create new group | โ๏ธ WRITE |
| `gophish_update_group` | Update existing group | โ๏ธ WRITE |
| `gophish_delete_group` | Delete group | โ๏ธ WRITE |
| `gophish_search_groups` | Search groups by name | ๐ READ-ONLY |
### ๐ง Email Templates (Complete Management)
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_templates` | Get all templates | ๐ READ-ONLY |
| `gophish_create_template` | Create new template | โ๏ธ WRITE |
| `gophish_update_template` | Update existing template | โ๏ธ WRITE |
| `gophish_delete_template` | Delete template | โ๏ธ WRITE |
| `gophish_search_templates` | Search templates by name or subject | ๐ READ-ONLY |
### ๐ Landing Pages (Complete Management)
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_pages` | Get all pages | ๐ READ-ONLY |
| `gophish_create_page` | Create new page | โ๏ธ WRITE |
| `gophish_update_page` | Update existing page | โ๏ธ WRITE |
| `gophish_delete_page` | Delete page | โ๏ธ WRITE |
### ๐ฎ SMTP Profiles (Complete Management)
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_smtp_profiles` | Get all SMTP profiles | ๐ READ-ONLY |
| `gophish_create_smtp_profile` | Create new SMTP profile | โ๏ธ WRITE |
| `gophish_update_smtp_profile` | Update existing SMTP profile | โ๏ธ WRITE |
| `gophish_delete_smtp_profile` | Delete SMTP profile | โ๏ธ WRITE |
### ๐ค User Management
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_users` | Get all users/administrators | ๐ READ-ONLY |
| `gophish_create_user` | Create new user | โ๏ธ WRITE |
| `gophish_update_user` | Update existing user | โ๏ธ WRITE |
### ๐ Global Analysis and Reports
| Tool | Description | Type |
|------|-------------|------|
| `gophish_get_system_status` | Get system status and general statistics | ๐ READ-ONLY |
| `gophish_get_global_analytics` | Get global analysis of all campaigns | ๐ READ-ONLY |
## ๐ก Usage Examples
Once configured, you can use commands like:
### Basic Management
```
Show me all GoPhish campaigns
```
```
Create a new campaign called "Test Campaign" using template with ID 1
```
```
Update campaign with ID 5 to change its name to "Updated Campaign"
```
### Analysis and Reports
```
Show me the complete analysis of campaign with ID 3
```
```
Get global statistics of all campaigns
```
```
Show me events from campaign 2
```
### Search and Filters
```
Search campaigns containing "phishing" in the name
```
```
Show me all active campaigns
```
```
Get campaigns created in the last 7 days
```
### User Management
```
List all system users
```
```
Create a new administrator user
```
### Advanced Search
```
Search templates containing "urgent" in the subject
```
```
Find groups containing "marketing" in the name
```
## ๐ Security
- โ ๏ธ Server disables SSL verification by default for local development
- โ
Make sure to use HTTPS in production
- ๐ Keep your API key secure and don't share it
- ๐ก๏ธ All write operations require valid authentication
## ๐งช Testing
### Run Tests
```bash
# Run all tests
python test.py all
# Run read-only tests
python test.py readonly
# Run verbose demo
python test.py demo
# Run comprehensive tests
python test.py comprehensive
```
### Testing Requirements
- โ
GoPhish server running
- โ
Valid credentials in `.env`
- โ
Dependencies installed: `pip install -e .`
See `tests/README.md` for more details about testing.
## ๐ ๏ธ Utilities
### Utility Scripts
```bash
# List campaigns
python utils/list_campaigns.py
```
## ๐๏ธ Development
For local development:
```bash
# Install in development mode
pip install -e .
# Run server directly
python server.py
# Run tests
python test.py all
```
## ๐ Additional Resources
- [Architecture Documentation](ARCHITECTURE.md) - Learn about the server architecture
- [Test Results](TEST_RESULTS.md) - View comprehensive test results
---
**Made with โค๏ธ for the [GoPhish](https://github.com/gophish/gophish) community**
โญ Star this repo if you find it useful!
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues