# GNS3 MCP Server
Model Context Protocol (MCP) server for GNS3 network lab automation. Control GNS3 projects, nodes, and device consoles through Claude Desktop or any MCP-compatible client.
**Version**: 0.46.0
## Features
- **32 Tools**: Complete GNS3 lab automation + resource query tools for Claude Desktop
- **25 Resources**: Read-only data access (projects, nodes, links, sessions, topology reports)
- **Project Management**: Create, open, close GNS3 projects
- **Node Control**: Start/stop/restart nodes with wildcard patterns (`*`, `Router*`)
- **Console Access**: Telnet console automation with pattern matching and grep filtering
- **SSH Automation**: Network device automation via Netmiko (200+ device types)
- **Network Topology**: Batch connect/disconnect links, create drawings, export diagrams
- **Docker Integration**: Configure container networks, read/write files
- **Claude Desktop Support**: All resources accessible via tools (`query_resource`, `list_projects`, `list_nodes`, `get_topology`)
- **Security**: API key authentication (HTTP mode), service privilege isolation, HTTPS support
## Installation
**Supported Platform:** Windows only
### Quick Start (Claude Code - Recommended)
**Prerequisites:**
- Windows 10/11
- GNS3 server running and accessible
- Claude Code installed
- **uv package manager** (for uvx): Install with `pip install uv` or download from https://github.com/astral-sh/uv
**Option 1: Using uvx (Recommended - Faster)**
```powershell
# Single command - no .env file needed!
claude mcp add --transport stdio gns3-mcp `
--env GNS3_HOST=192.168.1.20 `
--env GNS3_PORT=80 `
--env GNS3_USER=admin `
--env GNS3_PASSWORD=your-password `
-- uvx gns3-mcp@latest
# Verify installation
claude mcp get gns3-mcp
# Should show: Status: ✓ Connected
```
**Option 2: Using pip (Traditional)**
```powershell
# Step 1: Install package
pip install gns3-mcp
# Step 2: Add to Claude Code with credentials
claude mcp add --transport stdio gns3-mcp `
--env GNS3_HOST=192.168.1.20 `
--env GNS3_PORT=80 `
--env GNS3_USER=admin `
--env GNS3_PASSWORD=your-password `
-- gns3-mcp
# Step 3: Verify installation
claude mcp get gns3-mcp
# Should show: Status: ✓ Connected
```
> **Why uvx?** 10-100× faster than pip, automatic dependency isolation, no venv management needed.
---
### Installation by Editor
<details>
<summary><b>Claude Code (Detailed Setup)</b></summary>
### Claude Code Setup
**STDIO Mode (Recommended)**
STDIO mode is more secure - no HTTP service, no authentication needed, runs only when Claude Code is active.
**Using uvx (Recommended):**
```powershell
# 1. Install uv (one-time setup)
pip install uv
# 2. Create .env file
@"
GNS3_HOST=192.168.1.20
GNS3_PORT=80
GNS3_USER=admin
GNS3_PASSWORD=your-password
"@ | Out-File -FilePath .env -Encoding ASCII
# 3. Add to Claude Code
claude mcp add --transport stdio gns3-mcp -- uvx gns3-mcp@latest
# 4. Verify
claude mcp get gns3-mcp
```
**Using pip:**
```powershell
# 1. Install package globally
pip install gns3-mcp
# 2. Create .env file in project directory
@"
GNS3_HOST=192.168.1.20
GNS3_PORT=80
GNS3_USER=admin
GNS3_PASSWORD=your-password
"@ | Out-File -FilePath .env -Encoding ASCII
# 3. Add to Claude Code
claude mcp add --transport stdio gns3-mcp -- gns3-mcp
# 4. Verify
claude mcp get gns3-mcp
# Should show: Status: ✓ Connected
```
**Environment Variables:**
| Variable | Required | Description | Example |
|----------|----------|-------------|---------|
| `GNS3_HOST` | Yes | GNS3 server IP/hostname | `192.168.1.20` |
| `GNS3_PORT` | Yes | GNS3 server port | `80` or `3080` |
| `GNS3_USER` | Yes | GNS3 username | `admin` |
| `GNS3_PASSWORD` | Yes | GNS3 password | `your-password` |
</details>
<details>
<summary><b>Claude Desktop (.mcpb Package)</b></summary>
### Claude Desktop Setup
**Installation:**
1. Download the latest `.mcpb` package:
- From [Releases](https://github.com/ChistokhinSV/gns3-mcp/releases)
- Or build locally: `just build` (creates `mcp-server\mcp-server.mcpb`)
2. **Install by double-clicking** the `.mcpb` file
3. **Configure credentials** in Claude Desktop:
- Open Claude Desktop
- Go to Settings > Developer > Edit Config
- Find `gns3-mcp` server
- Add environment variables:
```json
{
"GNS3_HOST": "192.168.1.20",
"GNS3_PORT": "80",
"GNS3_USER": "admin",
"GNS3_PASSWORD": "your-password"
}
```
4. **Restart Claude Desktop**
5. **Check logs** if issues occur:
```
C:\Users\<username>\AppData\Roaming\Claude\logs\mcp-server-GNS3 Lab Controller.log
```
</details>
<details>
<summary><b>Cursor & Windsurf (JSON Configuration)</b></summary>
### Cursor Setup
**Configuration File Location:**
- **Project-specific:** `.cursor\mcp.json` (in project directory)
- **Global:** `%USERPROFILE%\.cursor\mcp.json`
**Using uvx (Recommended):**
1. Install uv: `pip install uv`
2. Create/edit `.cursor\mcp.json`:
```json
{
"mcpServers": {
"gns3-mcp": {
"command": "uvx",
"args": ["gns3-mcp@latest"],
"env": {
"GNS3_HOST": "192.168.1.20",
"GNS3_PORT": "80",
"GNS3_USER": "admin",
"GNS3_PASSWORD": "your-password"
}
}
}
}
```
**Using pip:**
1. Install package: `pip install gns3-mcp`
2. Create/edit `.cursor\mcp.json`:
```json
{
"mcpServers": {
"gns3-mcp": {
"command": "gns3-mcp",
"args": [],
"env": {
"GNS3_HOST": "192.168.1.20",
"GNS3_PORT": "80",
"GNS3_USER": "admin",
"GNS3_PASSWORD": "your-password"
}
}
}
}
```
3. Restart Cursor
---
### Windsurf Setup
**Configuration File Location:** `%USERPROFILE%\.codeium\windsurf\mcp_config.json`
**Using uvx (Recommended):**
1. Install uv: `pip install uv`
2. Create/edit `mcp_config.json`:
```json
{
"mcpServers": {
"gns3-mcp": {
"command": "uvx",
"args": ["gns3-mcp@latest"],
"env": {
"GNS3_HOST": "192.168.1.20",
"GNS3_PORT": "80",
"GNS3_USER": "admin",
"GNS3_PASSWORD": "your-password"
}
}
}
}
```
**Using pip:**
1. Install package: `pip install gns3-mcp`
2. Create/edit `mcp_config.json`:
```json
{
"mcpServers": {
"gns3-mcp": {
"command": "gns3-mcp",
"args": [],
"env": {
"GNS3_HOST": "192.168.1.20",
"GNS3_PORT": "80",
"GNS3_USER": "admin",
"GNS3_PASSWORD": "your-password"
}
}
}
}
```
3. Restart Windsurf
> **Note:** Cursor and Windsurf use identical configuration formats.
</details>
---
### Troubleshooting
**Connection Issues:**
```powershell
# Test GNS3 server connectivity
curl http://192.168.1.20:80/v3/projects
# Check Claude Code MCP status
claude mcp get gns3-mcp
# View detailed logs (Claude Code)
# Check console output when running commands
```
**Common Issues:**
- **"gns3-mcp not found"**: Ensure package is installed (`pip list | findstr gns3-mcp`)
- **"Connection refused"**: Verify GNS3 server is running and accessible
- **"Authentication failed"**: Check credentials in `.env` file
- **"Socket is closed"**: SSH session expired, reconnect automatically on next command
**For Claude Desktop issues:**
Check logs at:
```
C:\Users\<username>\AppData\Roaming\Claude\logs\mcp-server-GNS3 Lab Controller.log
```
---
### Advanced Setup
<details>
<summary><b>HTTP Mode (Always-Running Service)</b></summary>
### HTTP Mode Configuration
**HTTP mode** requires a persistent service and API key authentication. Only use if you need the service always running or network access from other machines.
**Prerequisites:**
- `.env` file with GNS3 credentials
- API key for authentication
**Setup:**
1. Add to `.env`:
```powershell
# Generate with: python -c "import secrets; print(secrets.token_urlsafe(32))"
MCP_API_KEY=your-random-token-here
```
2. Configure Claude Code:
```powershell
claude mcp add --transport http gns3-mcp `
http://127.0.0.1:8100/mcp/ `
--header "MCP_API_KEY: your-random-token-here"
```
3. Start server (in separate terminal):
```powershell
gns3-mcp --transport http --http-port 8100
```
**Note**: If `MCP_API_KEY` is missing from `.env`, it will be auto-generated on first start and automatically saved to `.env` for persistence.
</details>
<details>
<summary><b>Windows Service (Production Deployment)</b></summary>
### Windows Service Deployment
Run MCP server as a Windows service with WinSW and uvx (for HTTP mode).
**📖 See [PORTABLE_SETUP.md](PORTABLE_SETUP.md) for detailed instructions.**
**Quick Setup:**
```batch
# 1. Install uv (if not already installed)
pip install uv
# 2. Set environment variables from .env (requires Administrator)
.\set-env-vars.ps1
# 3. Install and start service (requires Administrator)
.\server.cmd install
```
**Service Management:**
```batch
# Check status
.\server.cmd status
# Start/stop/restart
.\server.cmd start
.\server.cmd stop
.\server.cmd restart
# After code updates
.\server.cmd reinstall # Reinstall service
# Remove service
.\server.cmd uninstall
# Development mode (direct run, no service)
.\server.cmd run
```
**Key Features:**
- ✅ **Portable**: Works from any folder location (no hardcoded paths)
- ✅ **No venv**: Uses uvx for automatic isolation
- ✅ **Secure**: Credentials in Windows environment variables
- ✅ **Simple**: Automated setup with PowerShell script
- **User**: GNS3MCPService (low privilege, optional)
- **Startup**: Automatic
- **Logs**: `mcp-http-server.log` and `GNS3-MCP-HTTP.wrapper.log`
</details>
<details>
<summary><b>Development Setup (Contributors)</b></summary>
### Manual Installation from Source
**Requirements:**
- Python ≥ 3.10
- GNS3 Server v3.x running and accessible
**Setup:**
```powershell
# Install dependencies
pip install -r requirements.txt
# Create .env file
@"
GNS3_HOST=192.168.1.20
GNS3_PORT=80
GNS3_USER=admin
GNS3_PASSWORD=your-password
"@ | Out-File -FilePath .env -Encoding ASCII
# Run directly (STDIO mode - no authentication)
python gns3_mcp\cli.py --host 192.168.1.20 --port 80 --username admin --password your-password
# Or add to Claude Code (project-scoped)
claude mcp add --transport stdio gns3-mcp --scope project -- python "C:\full\path\to\gns3_mcp\cli.py"
```
**Build .mcpb package:**
```powershell
just build
# Creates: mcp-server\mcp-server.mcpb
```
</details>
## Documentation
- **[CHANGELOG.md](CHANGELOG.md)** - Version history and release notes
- **[DEPLOYMENT.md](DEPLOYMENT.md)** - SSH proxy deployment instructions
- **[docs/architecture/](docs/architecture/)** - Architecture documentation and C4 diagrams
## License
MIT License
## Author
Sergei Chistokhin (Sergei@Chistokhin.com)
Raw data
{
"_id": null,
"home_page": null,
"name": "gns3-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "gns3, mcp, network, automation, ai, claude, fastmcp",
"author": null,
"author_email": "Sergei Chistokhin <Sergei@Chistokhin.com>",
"download_url": "https://files.pythonhosted.org/packages/4f/8a/fb22f45032c25fab2c09d02554a2e3d0f88b2f71fb78f25334a7cc19e45d/gns3_mcp-0.46.4.tar.gz",
"platform": null,
"description": "# GNS3 MCP Server\r\n\r\nModel Context Protocol (MCP) server for GNS3 network lab automation. Control GNS3 projects, nodes, and device consoles through Claude Desktop or any MCP-compatible client.\r\n\r\n**Version**: 0.46.0\r\n\r\n## Features\r\n\r\n- **32 Tools**: Complete GNS3 lab automation + resource query tools for Claude Desktop\r\n- **25 Resources**: Read-only data access (projects, nodes, links, sessions, topology reports)\r\n- **Project Management**: Create, open, close GNS3 projects\r\n- **Node Control**: Start/stop/restart nodes with wildcard patterns (`*`, `Router*`)\r\n- **Console Access**: Telnet console automation with pattern matching and grep filtering\r\n- **SSH Automation**: Network device automation via Netmiko (200+ device types)\r\n- **Network Topology**: Batch connect/disconnect links, create drawings, export diagrams\r\n- **Docker Integration**: Configure container networks, read/write files\r\n- **Claude Desktop Support**: All resources accessible via tools (`query_resource`, `list_projects`, `list_nodes`, `get_topology`)\r\n- **Security**: API key authentication (HTTP mode), service privilege isolation, HTTPS support\r\n\r\n## Installation\r\n\r\n**Supported Platform:** Windows only\r\n\r\n### Quick Start (Claude Code - Recommended)\r\n\r\n**Prerequisites:**\r\n- Windows 10/11\r\n- GNS3 server running and accessible\r\n- Claude Code installed\r\n- **uv package manager** (for uvx): Install with `pip install uv` or download from https://github.com/astral-sh/uv\r\n\r\n**Option 1: Using uvx (Recommended - Faster)**\r\n\r\n```powershell\r\n# Single command - no .env file needed!\r\nclaude mcp add --transport stdio gns3-mcp `\r\n --env GNS3_HOST=192.168.1.20 `\r\n --env GNS3_PORT=80 `\r\n --env GNS3_USER=admin `\r\n --env GNS3_PASSWORD=your-password `\r\n -- uvx gns3-mcp@latest\r\n\r\n# Verify installation\r\nclaude mcp get gns3-mcp\r\n# Should show: Status: \u2713 Connected\r\n```\r\n\r\n**Option 2: Using pip (Traditional)**\r\n\r\n```powershell\r\n# Step 1: Install package\r\npip install gns3-mcp\r\n\r\n# Step 2: Add to Claude Code with credentials\r\nclaude mcp add --transport stdio gns3-mcp `\r\n --env GNS3_HOST=192.168.1.20 `\r\n --env GNS3_PORT=80 `\r\n --env GNS3_USER=admin `\r\n --env GNS3_PASSWORD=your-password `\r\n -- gns3-mcp\r\n\r\n# Step 3: Verify installation\r\nclaude mcp get gns3-mcp\r\n# Should show: Status: \u2713 Connected\r\n```\r\n\r\n> **Why uvx?** 10-100\u00d7 faster than pip, automatic dependency isolation, no venv management needed.\r\n\r\n---\r\n\r\n### Installation by Editor\r\n\r\n<details>\r\n<summary><b>Claude Code (Detailed Setup)</b></summary>\r\n\r\n### Claude Code Setup\r\n\r\n**STDIO Mode (Recommended)**\r\n\r\nSTDIO mode is more secure - no HTTP service, no authentication needed, runs only when Claude Code is active.\r\n\r\n**Using uvx (Recommended):**\r\n\r\n```powershell\r\n# 1. Install uv (one-time setup)\r\npip install uv\r\n\r\n# 2. Create .env file\r\n@\"\r\nGNS3_HOST=192.168.1.20\r\nGNS3_PORT=80\r\nGNS3_USER=admin\r\nGNS3_PASSWORD=your-password\r\n\"@ | Out-File -FilePath .env -Encoding ASCII\r\n\r\n# 3. Add to Claude Code\r\nclaude mcp add --transport stdio gns3-mcp -- uvx gns3-mcp@latest\r\n\r\n# 4. Verify\r\nclaude mcp get gns3-mcp\r\n```\r\n\r\n**Using pip:**\r\n\r\n```powershell\r\n# 1. Install package globally\r\npip install gns3-mcp\r\n\r\n# 2. Create .env file in project directory\r\n@\"\r\nGNS3_HOST=192.168.1.20\r\nGNS3_PORT=80\r\nGNS3_USER=admin\r\nGNS3_PASSWORD=your-password\r\n\"@ | Out-File -FilePath .env -Encoding ASCII\r\n\r\n# 3. Add to Claude Code\r\nclaude mcp add --transport stdio gns3-mcp -- gns3-mcp\r\n\r\n# 4. Verify\r\nclaude mcp get gns3-mcp\r\n# Should show: Status: \u2713 Connected\r\n```\r\n\r\n**Environment Variables:**\r\n\r\n| Variable | Required | Description | Example |\r\n|----------|----------|-------------|---------|\r\n| `GNS3_HOST` | Yes | GNS3 server IP/hostname | `192.168.1.20` |\r\n| `GNS3_PORT` | Yes | GNS3 server port | `80` or `3080` |\r\n| `GNS3_USER` | Yes | GNS3 username | `admin` |\r\n| `GNS3_PASSWORD` | Yes | GNS3 password | `your-password` |\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>Claude Desktop (.mcpb Package)</b></summary>\r\n\r\n### Claude Desktop Setup\r\n\r\n**Installation:**\r\n\r\n1. Download the latest `.mcpb` package:\r\n - From [Releases](https://github.com/ChistokhinSV/gns3-mcp/releases)\r\n - Or build locally: `just build` (creates `mcp-server\\mcp-server.mcpb`)\r\n\r\n2. **Install by double-clicking** the `.mcpb` file\r\n\r\n3. **Configure credentials** in Claude Desktop:\r\n - Open Claude Desktop\r\n - Go to Settings > Developer > Edit Config\r\n - Find `gns3-mcp` server\r\n - Add environment variables:\r\n ```json\r\n {\r\n \"GNS3_HOST\": \"192.168.1.20\",\r\n \"GNS3_PORT\": \"80\",\r\n \"GNS3_USER\": \"admin\",\r\n \"GNS3_PASSWORD\": \"your-password\"\r\n }\r\n ```\r\n\r\n4. **Restart Claude Desktop**\r\n\r\n5. **Check logs** if issues occur:\r\n ```\r\n C:\\Users\\<username>\\AppData\\Roaming\\Claude\\logs\\mcp-server-GNS3 Lab Controller.log\r\n ```\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>Cursor & Windsurf (JSON Configuration)</b></summary>\r\n\r\n### Cursor Setup\r\n\r\n**Configuration File Location:**\r\n- **Project-specific:** `.cursor\\mcp.json` (in project directory)\r\n- **Global:** `%USERPROFILE%\\.cursor\\mcp.json`\r\n\r\n**Using uvx (Recommended):**\r\n\r\n1. Install uv: `pip install uv`\r\n\r\n2. Create/edit `.cursor\\mcp.json`:\r\n\r\n```json\r\n{\r\n \"mcpServers\": {\r\n \"gns3-mcp\": {\r\n \"command\": \"uvx\",\r\n \"args\": [\"gns3-mcp@latest\"],\r\n \"env\": {\r\n \"GNS3_HOST\": \"192.168.1.20\",\r\n \"GNS3_PORT\": \"80\",\r\n \"GNS3_USER\": \"admin\",\r\n \"GNS3_PASSWORD\": \"your-password\"\r\n }\r\n }\r\n }\r\n}\r\n```\r\n\r\n**Using pip:**\r\n\r\n1. Install package: `pip install gns3-mcp`\r\n\r\n2. Create/edit `.cursor\\mcp.json`:\r\n\r\n```json\r\n{\r\n \"mcpServers\": {\r\n \"gns3-mcp\": {\r\n \"command\": \"gns3-mcp\",\r\n \"args\": [],\r\n \"env\": {\r\n \"GNS3_HOST\": \"192.168.1.20\",\r\n \"GNS3_PORT\": \"80\",\r\n \"GNS3_USER\": \"admin\",\r\n \"GNS3_PASSWORD\": \"your-password\"\r\n }\r\n }\r\n }\r\n}\r\n```\r\n\r\n3. Restart Cursor\r\n\r\n---\r\n\r\n### Windsurf Setup\r\n\r\n**Configuration File Location:** `%USERPROFILE%\\.codeium\\windsurf\\mcp_config.json`\r\n\r\n**Using uvx (Recommended):**\r\n\r\n1. Install uv: `pip install uv`\r\n\r\n2. Create/edit `mcp_config.json`:\r\n\r\n```json\r\n{\r\n \"mcpServers\": {\r\n \"gns3-mcp\": {\r\n \"command\": \"uvx\",\r\n \"args\": [\"gns3-mcp@latest\"],\r\n \"env\": {\r\n \"GNS3_HOST\": \"192.168.1.20\",\r\n \"GNS3_PORT\": \"80\",\r\n \"GNS3_USER\": \"admin\",\r\n \"GNS3_PASSWORD\": \"your-password\"\r\n }\r\n }\r\n }\r\n}\r\n```\r\n\r\n**Using pip:**\r\n\r\n1. Install package: `pip install gns3-mcp`\r\n\r\n2. Create/edit `mcp_config.json`:\r\n\r\n```json\r\n{\r\n \"mcpServers\": {\r\n \"gns3-mcp\": {\r\n \"command\": \"gns3-mcp\",\r\n \"args\": [],\r\n \"env\": {\r\n \"GNS3_HOST\": \"192.168.1.20\",\r\n \"GNS3_PORT\": \"80\",\r\n \"GNS3_USER\": \"admin\",\r\n \"GNS3_PASSWORD\": \"your-password\"\r\n }\r\n }\r\n }\r\n}\r\n```\r\n\r\n3. Restart Windsurf\r\n\r\n> **Note:** Cursor and Windsurf use identical configuration formats.\r\n\r\n</details>\r\n\r\n---\r\n\r\n### Troubleshooting\r\n\r\n**Connection Issues:**\r\n```powershell\r\n# Test GNS3 server connectivity\r\ncurl http://192.168.1.20:80/v3/projects\r\n\r\n# Check Claude Code MCP status\r\nclaude mcp get gns3-mcp\r\n\r\n# View detailed logs (Claude Code)\r\n# Check console output when running commands\r\n```\r\n\r\n**Common Issues:**\r\n- **\"gns3-mcp not found\"**: Ensure package is installed (`pip list | findstr gns3-mcp`)\r\n- **\"Connection refused\"**: Verify GNS3 server is running and accessible\r\n- **\"Authentication failed\"**: Check credentials in `.env` file\r\n- **\"Socket is closed\"**: SSH session expired, reconnect automatically on next command\r\n\r\n**For Claude Desktop issues:**\r\nCheck logs at:\r\n```\r\nC:\\Users\\<username>\\AppData\\Roaming\\Claude\\logs\\mcp-server-GNS3 Lab Controller.log\r\n```\r\n\r\n---\r\n\r\n### Advanced Setup\r\n\r\n<details>\r\n<summary><b>HTTP Mode (Always-Running Service)</b></summary>\r\n\r\n### HTTP Mode Configuration\r\n\r\n**HTTP mode** requires a persistent service and API key authentication. Only use if you need the service always running or network access from other machines.\r\n\r\n**Prerequisites:**\r\n- `.env` file with GNS3 credentials\r\n- API key for authentication\r\n\r\n**Setup:**\r\n\r\n1. Add to `.env`:\r\n ```powershell\r\n # Generate with: python -c \"import secrets; print(secrets.token_urlsafe(32))\"\r\n MCP_API_KEY=your-random-token-here\r\n ```\r\n\r\n2. Configure Claude Code:\r\n ```powershell\r\n claude mcp add --transport http gns3-mcp `\r\n http://127.0.0.1:8100/mcp/ `\r\n --header \"MCP_API_KEY: your-random-token-here\"\r\n ```\r\n\r\n3. Start server (in separate terminal):\r\n ```powershell\r\n gns3-mcp --transport http --http-port 8100\r\n ```\r\n\r\n**Note**: If `MCP_API_KEY` is missing from `.env`, it will be auto-generated on first start and automatically saved to `.env` for persistence.\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>Windows Service (Production Deployment)</b></summary>\r\n\r\n### Windows Service Deployment\r\n\r\nRun MCP server as a Windows service with WinSW and uvx (for HTTP mode).\r\n\r\n**\ud83d\udcd6 See [PORTABLE_SETUP.md](PORTABLE_SETUP.md) for detailed instructions.**\r\n\r\n**Quick Setup:**\r\n```batch\r\n# 1. Install uv (if not already installed)\r\npip install uv\r\n\r\n# 2. Set environment variables from .env (requires Administrator)\r\n.\\set-env-vars.ps1\r\n\r\n# 3. Install and start service (requires Administrator)\r\n.\\server.cmd install\r\n```\r\n\r\n**Service Management:**\r\n```batch\r\n# Check status\r\n.\\server.cmd status\r\n\r\n# Start/stop/restart\r\n.\\server.cmd start\r\n.\\server.cmd stop\r\n.\\server.cmd restart\r\n\r\n# After code updates\r\n.\\server.cmd reinstall # Reinstall service\r\n\r\n# Remove service\r\n.\\server.cmd uninstall\r\n\r\n# Development mode (direct run, no service)\r\n.\\server.cmd run\r\n```\r\n\r\n**Key Features:**\r\n- \u2705 **Portable**: Works from any folder location (no hardcoded paths)\r\n- \u2705 **No venv**: Uses uvx for automatic isolation\r\n- \u2705 **Secure**: Credentials in Windows environment variables\r\n- \u2705 **Simple**: Automated setup with PowerShell script\r\n- **User**: GNS3MCPService (low privilege, optional)\r\n- **Startup**: Automatic\r\n- **Logs**: `mcp-http-server.log` and `GNS3-MCP-HTTP.wrapper.log`\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>Development Setup (Contributors)</b></summary>\r\n\r\n### Manual Installation from Source\r\n\r\n**Requirements:**\r\n- Python \u2265 3.10\r\n- GNS3 Server v3.x running and accessible\r\n\r\n**Setup:**\r\n```powershell\r\n# Install dependencies\r\npip install -r requirements.txt\r\n\r\n# Create .env file\r\n@\"\r\nGNS3_HOST=192.168.1.20\r\nGNS3_PORT=80\r\nGNS3_USER=admin\r\nGNS3_PASSWORD=your-password\r\n\"@ | Out-File -FilePath .env -Encoding ASCII\r\n\r\n# Run directly (STDIO mode - no authentication)\r\npython gns3_mcp\\cli.py --host 192.168.1.20 --port 80 --username admin --password your-password\r\n\r\n# Or add to Claude Code (project-scoped)\r\nclaude mcp add --transport stdio gns3-mcp --scope project -- python \"C:\\full\\path\\to\\gns3_mcp\\cli.py\"\r\n```\r\n\r\n**Build .mcpb package:**\r\n```powershell\r\njust build\r\n# Creates: mcp-server\\mcp-server.mcpb\r\n```\r\n\r\n</details>\r\n\r\n## Documentation\r\n\r\n- **[CHANGELOG.md](CHANGELOG.md)** - Version history and release notes\r\n- **[DEPLOYMENT.md](DEPLOYMENT.md)** - SSH proxy deployment instructions\r\n- **[docs/architecture/](docs/architecture/)** - Architecture documentation and C4 diagrams\r\n\r\n## License\r\n\r\nMIT License\r\n\r\n## Author\r\n\r\nSergei Chistokhin (Sergei@Chistokhin.com)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "GNS3 lab automation MCP server with AI agent integration",
"version": "0.46.4",
"project_urls": {
"Changelog": "https://github.com/ChistokhinSV/gns3-mcp/blob/master/CHANGELOG.md",
"Documentation": "https://github.com/ChistokhinSV/gns3-mcp#readme",
"Homepage": "https://github.com/ChistokhinSV/gns3-mcp",
"Issues": "https://github.com/ChistokhinSV/gns3-mcp/issues",
"Repository": "https://github.com/ChistokhinSV/gns3-mcp"
},
"split_keywords": [
"gns3",
" mcp",
" network",
" automation",
" ai",
" claude",
" fastmcp"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "8f65ed4906b036bde2679f1f68f064aae176b4a313e79ae329999ea326e37be5",
"md5": "fdaad4c18d9ddfec2cbfc52cd7d14aef",
"sha256": "1edaf91659111efdb51939feea6d8c955300cd88cd1df63efeb9d44e7a9ae4a2"
},
"downloads": -1,
"filename": "gns3_mcp-0.46.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fdaad4c18d9ddfec2cbfc52cd7d14aef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 139603,
"upload_time": "2025-11-03T20:42:23",
"upload_time_iso_8601": "2025-11-03T20:42:23.815238Z",
"url": "https://files.pythonhosted.org/packages/8f/65/ed4906b036bde2679f1f68f064aae176b4a313e79ae329999ea326e37be5/gns3_mcp-0.46.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4f8afb22f45032c25fab2c09d02554a2e3d0f88b2f71fb78f25334a7cc19e45d",
"md5": "17724502e5067aaddab1d2aa8d0f9bbf",
"sha256": "2e3ae2a90d85ab5d73be75b01570e1463d0c7078e3ee37ad8ed566329be23867"
},
"downloads": -1,
"filename": "gns3_mcp-0.46.4.tar.gz",
"has_sig": false,
"md5_digest": "17724502e5067aaddab1d2aa8d0f9bbf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 133289,
"upload_time": "2025-11-03T20:42:25",
"upload_time_iso_8601": "2025-11-03T20:42:25.109112Z",
"url": "https://files.pythonhosted.org/packages/4f/8a/fb22f45032c25fab2c09d02554a2e3d0f88b2f71fb78f25334a7cc19e45d/gns3_mcp-0.46.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-03 20:42:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ChistokhinSV",
"github_project": "gns3-mcp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "fastmcp",
"specs": [
[
">=",
"2.13.0.2"
]
]
},
{
"name": "fastapi",
"specs": [
[
">=",
"0.115.0"
]
]
},
{
"name": "httpx",
"specs": [
[
">=",
"0.28.1"
]
]
},
{
"name": "telnetlib3",
"specs": [
[
">=",
"2.0.8"
]
]
},
{
"name": "pydantic",
"specs": [
[
">=",
"2.12.3"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
">=",
"1.2.1"
]
]
},
{
"name": "cairosvg",
"specs": [
[
">=",
"2.8.2"
]
]
},
{
"name": "docker",
"specs": [
[
">=",
"7.1.0"
]
]
},
{
"name": "tabulate",
"specs": [
[
">=",
"0.9.0"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"8.4.2"
]
]
},
{
"name": "pytest-asyncio",
"specs": [
[
">=",
"1.2.0"
]
]
},
{
"name": "pytest-mock",
"specs": [
[
">=",
"3.15.1"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
">=",
"7.0.0"
]
]
},
{
"name": "ruff",
"specs": [
[
">=",
"0.14.2"
]
]
},
{
"name": "mypy",
"specs": [
[
">=",
"1.18.2"
]
]
},
{
"name": "black",
"specs": [
[
">=",
"25.9.0"
]
]
},
{
"name": "pre-commit",
"specs": [
[
">=",
"4.3.0"
]
]
}
],
"lcname": "gns3-mcp"
}