Secure MCP Server
by Urabewe
README.md
# π Secure MCP Server
**Production-ready Multi-Context Protocol server with web search and persistent memory**
Works on **Windows, Linux, and Mac** - Built with Python for maximum security and compatibility.
## β¨ Features
| Feature | Description |
|---------|-------------|
| π **Security First** | JWT authentication, rate limiting, input sanitization, encryption |
| π§ **Persistent Memory** | Vector database with semantic search using AI embeddings |
| π **Web Search** | Built-in web search (DuckDuckGo + optional Brave API) |
| π₯ **Multi-User** | Isolated memory spaces and authentication per user |
| πͺ **Windows Ready** | Full support for Windows, Linux, and Mac |
| π **Easy Setup** | Automated installation with sensible defaults |
## π― Quick Start
### Windows (5 minutes)
```cmd
setup.bat
venv\Scripts\activate
python manage_users.py
python src\server.py
```
**See [QUICKSTART_WINDOWS.md](QUICKSTART_WINDOWS.md) for detailed Windows instructions**
### Linux/Mac (5 minutes)
```bash
chmod +x setup.sh
./setup.sh
source venv/bin/activate
python3 manage_users.py
python3 src/server.py
```
**See [QUICKSTART.md](QUICKSTART.md) for detailed Linux/Mac instructions**
## π Requirements
- **Python 3.8+** ([Download](https://www.python.org/downloads/))
- β οΈ Windows: Check "Add Python to PATH" during installation
- 2GB RAM recommended
- Internet connection (for web search)
## π οΈ What's Included
### MCP tools (memory, search, SwarmUI skills)
1. **`web_search`** - Search the internet for information
2. **`store_memory`** - Save information with tags for later
3. **`search_memory`** - Find memories using semantic search
4. **`get_recent_memories`** - Retrieve recent context
5. **`memory_stats`** - View storage statistics
6. **`clear_memories`** - Reset memory storage
7. **`delete_memory`** - Remove one memory by ID
8. **`list_swarmui_skills`** / **`get_swarmui_skill`** - Load SwarmUI agent skills from `.agents/skills/*/SKILL.md` when `swarmui.path` or `SWARMUI_PATH` is set
9. **SwarmUI HTTP API** (when `swarmui.api_url` or `SWARMUI_API_URL`): **`swarmui_get_queue_status`**, **`swarmui_list_models`**, **`swarmui_list_t2i_params`**, **`swarmui_generate_image`**, **`swarmui_interrupt`** β calls SwarmUIβs JSON `POST /API/...` (session + optional login). For broad compatibility, call `swarmui_list_models` with an empty arguments object (`{}`) first, then narrow by path/subtype if needed. `swarmui_generate_image` also auto-resolves nickname/partial model text to a valid model path by querying listmodels internally, and accepts a natural-language `instruction` string (it parses model/steps/cfg/resolution/images). It downloads outputs and returns **embedded MCP image content** so clients like LM Studio can render images directly in chat (rather than URL-only Markdown links); if the client sends a **progress token** with the tool call, queue/backend updates are sent while generation runs. See `config.example.yaml`.
### Core Components
- β
**MCP Server** (`src/server.py`) - Main server with stdio transport
- β
**Security Module** - JWT auth, encryption, rate limiting
- β
**Memory System** - Vector database with ChromaDB
- β
**Web Search** - DuckDuckGo (free) + Brave API (optional)
- β
**User Management** - CLI tool for user administration
- β
**Test Client** - Automated testing and verification
## π Security Features
- β
JWT token-based authentication (30-min expiration)
- β
Per-user rate limiting (60/min, 1000/hour)
- β
AES-256 encryption for sensitive data
- β
Bcrypt password hashing
- β
Input sanitization (prevents injection attacks)
- β
URL filtering for web search
- β
Isolated user memory spaces
- β
Comprehensive audit logging
## π Project Structure
```
secure-mcp-server/
βββ src/
β βββ server.py # Main MCP server β
β βββ security.py # Authentication & encryption
β βββ memory_system.py # Vector database & memory
β βββ web_search.py # Web search functionality
βββ data/ # Runtime data (auto-created)
β βββ memory_db/ # Memory storage
β βββ server.log # Activity logs
βββ setup.bat # Windows installation β
βββ setup.sh # Linux/Mac installation β
βββ manage_users.py # User management CLI β
βββ test_client.py # Testing utility β
βββ QUICKSTART_WINDOWS.md # Windows guide β
βββ QUICKSTART.md # Linux/Mac guide
βββ requirements.txt # Python dependencies
```
β = Most important files
## π§ͺ Testing Your Server
### Automated Tests (Windows)
```cmd
venv\Scripts\activate
python test_client.py
```
### Automated Tests (Linux/Mac)
```bash
source venv/bin/activate
python test_client.py
```
### Interactive Mode
```cmd
python test_client.py --interactive
```
## π‘ Usage Example
```python
# Store a memory
await session.call_tool(
"store_memory",
arguments={
"content": "User prefers Python and dark mode",
"tags": ["preferences"]
},
meta={"user_id": "john"}
)
# Search memories
await session.call_tool(
"search_memory",
arguments={"query": "What are user preferences?"},
meta={"user_id": "john"}
)
# Web search
await session.call_tool(
"web_search",
arguments={"query": "Python MCP tutorial"},
meta={"user_id": "john"}
)
```
## π§ Configuration
Edit `.env` file for settings:
```env
# Security
JWT_SECRET_KEY=your-secret-key
ENCRYPTION_KEY=your-encryption-key
# Memory
MEMORY_DB_PATH=./data/memory_db
MEMORY_MAX_RESULTS=10
# Web Search
SEARCH_API_KEY=optional-brave-api-key
SEARCH_MAX_RESULTS=10
# Rate Limiting
RATE_LIMIT_PER_MINUTE=60
RATE_LIMIT_PER_HOUR=1000
```
## πͺ Windows-Specific Notes
### Python Installation
1. Download from [python.org](https://www.python.org/downloads/)
2. **β οΈ IMPORTANT**: Check "Add Python to PATH" during installation
3. Restart Command Prompt after installation
### Running Scripts
- Use `python` (not `python3`)
- Use `\` for paths (e.g., `data\memory_db`)
- Activate venv: `venv\Scripts\activate`
### Claude Desktop Integration
Config file location: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"secure-mcp": {
"command": "python",
"args": ["C:\\path\\to\\secure-mcp-server\\src\\server.py"]
}
}
}
```
## π Troubleshooting
### Windows
| Issue | Solution |
|-------|----------|
| "Python not recognized" | Add Python to PATH or reinstall with PATH option |
| Module errors | Run `pip install -r requirements.txt` |
| Activation fails | Use `venv\Scripts\activate.bat` |
### Linux/Mac
| Issue | Solution |
|-------|----------|
| Permission denied | Run `chmod +x setup.sh` |
| Module errors | Run `pip install -r requirements.txt` |
| Python version | Ensure Python 3.8+ with `python3 --version` |
### All Platforms
| Issue | Solution |
|-------|----------|
| Slow first run | Embedding model downloads once (~80MB) |
| Web search fails | Check internet; DuckDuckGo works without API key |
| Auth failures | Verify user exists with `manage_users.py` |
## π Performance
- **Memory search**: <100ms for 1000 memories
- **Web search**: 1-3 seconds (network dependent)
- **Authentication**: <10ms
- **Supports**: Hundreds of concurrent users
## π¨ Security Checklist
Before deploying:
- [ ] Change default admin password (admin/changeme123)
- [ ] Generate unique JWT_SECRET_KEY
- [ ] Generate unique ENCRYPTION_KEY
- [ ] Review rate limits in `.env`
- [ ] Enable logging and monitoring
- [ ] Backup `data/` directory regularly
- [ ] Keep dependencies updated
## π Documentation
- **[Windows Quick Start](QUICKSTART_WINDOWS.md)** - Windows installation
- **[Linux/Mac Quick Start](QUICKSTART.md)** - Unix installation
- **[Project Summary](PROJECT_SUMMARY.md)** - Complete overview
- **[Full Documentation](docs/README.md)** - Detailed guide
- **[Tool Usage Playbook](TOOL_USAGE.md)** - LLM-facing MCP tool routing and reliability rules
## π Learning Resources
- MCP Protocol: https://docs.anthropic.com/mcp
- ChromaDB: https://docs.trychroma.com/
- Brave Search API: https://brave.com/search/api/
## π License
Provided as-is for educational and development purposes.
---
## π You're All Set!
Your MCP server is:
- β
Fully functional
- β
Production-ready
- β
Windows compatible
- β
Security-hardened
- β
Multi-user capable
- β
Well-documented
**Questions?** Check the documentation or review code comments.
**Ready to start?** Follow your platform's Quick Start guide!
Built with β€οΈ for Windows, Linux, and Mac. Happy building! π
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessSyncing