Token导航 LogoToken导航TokenDH.com
MCP Gns3 logo
AI代理stdio官方级别未说明来源级核验

MCP Gns3

MCP Server

一个高性能的MCP服务器,通过GNS3 REST API v2将AI助手转变为全功能网络工程师,支持通过自然语言对话设计、部署和管理复杂的实验室拓扑。

工具数

25

提示词数

0

GitHub Stars

0

资源数

0
RustClaude自动化部署Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

btaoldai

提供方

btaoldai

最后核验

2026/5/17 20:21

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run --rm -i \

详细介绍

gns3 mcp——基于人工智能的网络工程

![License: MIT](LICENSE) ![Rust](https://www.rust-lang.org) ![MCP](https://modelcontextprotocol.io) ![Tools](#available-tools-25) ](#quick-start)

gns3 mcp 是用编写的高性能MCP服务器 这暴露了 GNS3 REST API v2 Claude将你的人工智能助手变成一名成熟的网络工程师——通过自然对话设计、部署和管理复杂的实验室拓扑。

______________________________________________________________________

为什么选择gns3 mcp?

停止点击GUI来构建实验室。随着 gns3-mcp,克劳德可以:

  • 设计 从文本描述中提取整个拓扑结构。
  • 部署 以及有线节点(思科、Arista、Docker、VPCS……)。
  • 检查 并记录你实验室的实时状态。
  • 操作 通过语音或文本完成整个设备生命周期(启动、停止和重新配置)。

您和Claude同时处理同一个GNS3项目:当Claude从对话中部署和连接时,您在GUI中进行调整。实时、双向。

______________________________________________________________________

亮点

  • 超轻:~19 MB Docker镜像(distroless/static,musl静态二进制)。
  • 25个MCP工具:用于项目、节点、链接、模板、计算服务器以及批处理和复合操作的完整CRUD。
  • 坚韧的:对5xx错误进行指数回退的自动重试(3次尝试,100/200/400ms),服务器中断的断路器。
  • 断路器:三态异步断路器(闭合/打开/半打开)可在GNS3关闭时防止请求风暴。
  • 设计安全:零OpenSSL/glibc依赖(rustls),对每个输入进行UUID验证,从不记录凭据,非根容器。
  • 整洁架构:3格Rust工作空间,具有严格的依赖反转和基于特征的注入。
  • 零摩擦:stdio传输——原生Claude Desktop和Claude Code集成,无需额外的基础设施。

______________________________________________________________________

建筑

gns3-mcp/
+-- Cargo.toml              # workspace root + shared deps
+-- crates/
|   +-- core/               # types, traits, errors (zero network deps)
|   +-- gns3-client/        # HTTP client implementing Gns3Api
|   +-- mcp-server/         # MCP tools, stdio bootstrap
+-- docs/adr/               # Architecture Decision Records
+-- .github/workflows/      # CI + Docker pipelines
+-- Dockerfile              # multistage: Alpine build -> distroless runtime

该项目强制执行严格的依赖关系规则(依赖关系反转):

mcp-server  -->  core          (traits only)
mcp-server  -.-> gns3-client   (injected in main.rs only)
gns3-client -->  core          (types + Gns3Api trait)
core        -->  nothing       (serde, thiserror, uuid)
关键洞察: mcp-server 对HTTP或reqwest一无所知。它只通过 Gns3Api 特征定义于 core,使每个工具都可以通过模拟进行完全的单元测试——不需要GNS3服务器。

______________________________________________________________________

快速开始

先决条件

  • GNS3服务器2.2.x+,正在运行并可通过HTTP访问
  • 锈蚀1.75+ 码头工人

选项1:Docker(推荐)

docker build -t gns3-mcp:latest .

docker run --rm -i \
  -e GNS3_URL=http://localhost:3080 \
  --network host \
  gns3-mcp:latest
备注: --network host 是必需的,因此容器可以在以下时间到达GNS3 localhost。在macOS/Windows Docker桌面上,使用 -e GNS3_URL=http://host.docker.internal:3080 相反。

选项2:从源代码构建

cargo build --release
GNS3_URL=http://localhost:3080 ./target/release/gns3-mcp

______________________________________________________________________

克劳德桌面/Claude代码配置

添加到配置文件(claude_desktop_config.json.claude/settings.json):

{
  "mcpServers": {
    "gns3": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "GNS3_URL",
        "-e", "GNS3_USER",
        "-e", "GNS3_PASSWORD",
        "--network", "host",
        "gns3-mcp:latest"
      ],
      "env": {
        "GNS3_URL": "http://localhost:3080"
      }
    }
  }
}

凭据使用Docker传递(-e VAR 没有 =value).在shell中定义它们或 .env file——从不在JSON配置中。

环境变量

变量必填默认描述
GNS3_URL是的http://127.0.0.1:3080GNS3服务器基本URL
GNS3_USER--基本身份验证用户名
GNS3_PASSWORD--基本身份验证密码
GNS3_TIMEOUT_SECS没有30HTTP请求超时(秒)
RUST_LOG没有info日志级别(跟踪、调试、信息、警告、错误)

______________________________________________________________________

可用工具(25)

项目

工具它做什么
gns3_get_version验证GNS3服务器连接和版本
gns3_list_projects列出所有具有状态的项目
gns3_create_project创建并打开一个新项目
gns3_open_project打开现有项目(节点/链接操作前需要)
gns3_close_project关闭项目,释放资源
gns3_delete_project永久删除项目
gns3_get_topology完整快照:一次调用中的所有节点+所有链接

节点

工具它做什么
gns3_list_templates发现可用的设备(路由器、交换机等)
gns3_create_node将模板中的节点部署到画布上
gns3_list_nodes列出具有状态、类型和控制台端口的节点
gns3_start_node启动单个节点
gns3_stop_node关闭单个节点
gns3_delete_node从项目中删除节点
gns3_update_node更新节点的名称、计算或属性
gns3_configure_switch配置交换机端口映射(VLAN、中继线)
gns3_start_all_nodes一次启动项目中的每个节点
gns3_stop_all_nodes立即关闭项目中的每个节点

链接

工具它做什么
gns3_create_link将两个节点接口连接在一起
gns3_list_links列出项目中的所有连接
gns3_delete_link删除连接

基础设施

工具它做什么
gns3_list_computes列出具有CPU/内存使用情况的计算服务器

模板

工具它做什么
gns3_update_template更新模板属性(RAM、接口、图像)

图纸

工具它做什么
gns3_add_drawing将SVG图形添加到项目画布

快照和导出

工具它做什么
gns3_export_project将项目导出为可移植存档
gns3_snapshot_project创建用于回滚的命名快照

典型工作流程

1. gns3_get_version        -- verify connectivity
2. gns3_create_project     -- or gns3_list_projects to reuse one
3. gns3_open_project       -- unlock node and link operations
4. gns3_list_templates     -- discover available appliances
5. gns3_create_node        -- repeat for each device
6. gns3_create_link        -- repeat for each cable
7. gns3_start_all_nodes    -- boot everything at once
8. gns3_get_topology       -- review the live topology

______________________________________________________________________

韧性

  • 请在5xx重试:指数退避(100ms、200ms、400ms),最多3次重试。4xx和网络错误会立即失败,不会在错误请求上浪费时间。
  • 断路器:连续5次失败后自动停止调用GNS3。使用探测请求在30秒后恢复--在停机期间保护服务器。
  • 可配置超时: GNS3_TIMEOUT_SECS env-var,默认30秒。
  • 可操作的错误:返回给克劳德的每个错误都解释了失败的原因,并建议了下一步。

______________________________________________________________________

安全

物业详细信息
凭证仅环境变量——从未记录,从未出现在错误消息中,从未对MCP可见
输入验证Claude的每个UUID都在任何API调用之前进行验证
容器distroless/static:nonroot --无shell、无包管理器、无特权用户
传输层安全纯锈 rustls --无OpenSSL,无glibc依赖
二进制静态链接的musl——零动态依赖

______________________________________________________________________

发展

cargo check --workspace                    # type-check
cargo test --workspace                     # 61+ unit tests, no GNS3 needed
cargo clippy --workspace -- -D warnings    # lint (zero warnings policy)
cargo fmt --check                          # format check

CI通过GitHub Actions在每个推送和拉取请求上自动运行。

______________________________________________________________________

兼容性

gns3 mcp标准语音 基于stdio的JSON-RPC --开放式MCP协议。任何实现MCP的客户端都可以使用它,而不仅仅是Claude。

客户状态备注
克劳德桌面/代码原生stdio支持开箱即用
OpenAI/ChatGPT支持MCP支持于2025年3月宣布
光标原生内置MCP客户端
帆板运动原生内置MCP客户端
Continue.dev原生将MCP连接到任何LLM后端(Ollama、llama.cpp等)
LM 工作室通过包装器需要MCP客户端层(例如Python mcp SDK)
自定义代理任何可以生成子进程并将JSON-RPC写入stdin的代码
关于型号性能的说明:体验的质量取决于LLM正确理解工具描述和序列调用的能力(例如。 open_project 之前 create_node).大型型号(70B+、Claude、GPT-4)很好地处理了这一点。较小的本地模型(7-13B)可能难以进行多步骤工具编排。

______________________________________________________________________

架构决策

设计原理记录在 docs/adr/:

ADR决定
0001SSE上的stdio --原生Claude桌面支持,零基础设施
0002Alpine+无发行版 --musl静态二进制,~19 MB最终图像
0003OpenSSL上的Rusts --musl交叉编译没有glibc摩擦
0004核心Gns3Api性状 --将服务器与客户端解耦,启用模拟测试
0005断路器 --服务器停机时快速故障,自动恢复
0006#\[非详尽\]错误 --semver安全错误枚举演化

______________________________________________________________________

贡献

贡献.md 用于开发设置和指南。

安全

安全.md 我们的漏洞披露政策。

______________________________________________________________________

许可证

麻省理工学院——见 许可证

目录标签

目录标签

RustClaude自动化部署网络工程本地部署AI助手实验室拓扑GNS3集成

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

25

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP