网络设备自动化协议

MCP-Cisco是一个基于模型上下文协议(MCP)的网络设备自动化工具,支持通过标准化的客户端-服务器架构实现Cisco设备的自动化配置和管理。

  • by ters-golemi
  • 本地部署
  • 更新于
在 GitHub 查看 ters-golemi/MCP-Cisco

使用说明

思科MCP

使用模型上下文协议(MCP)自动化思科设备的综合文档和示例。

概述

此存储库提供了使用MCP(模型上下文协议)自动化Cisco网络设备的完整文档、实施示例和最佳实践。MCP通过标准化的客户端-服务器架构实现了AI应用程序和网络基础设施之间的无缝集成。

什么是MCP?

模型上下文协议(MCP)是一种开放协议,它规范了应用程序如何向大型语言模型(LLM)提供上下文。它能够:

  • AI系统和网络基础设施之间的无缝集成
  • 用于类型安全和验证的模式驱动通信
  • 支持多种传输协议(HTTP、gRPC)
  • 基于意图的网络和状态管理

文档结构

核心文件

  1. MCP概述

    • 什么是MCP服务器和客户端
    • MCP服务器和客户端如何交换模式驱动的状态和意图
    • 通信协议(gRPC/HTTP端点)
    • 安全考虑和最佳做法
  2. 服务器设置指南

    • 设置基于Python的MCP服务器
    • 实现基于gRPC的服务器
    • 配置管理
    • 安全和监控
  3. 客户端设置指南

    • Python MCP客户端实现
    • gRPC客户端设置
    • Node.js客户端实现
    • 错误处理和最佳实践
  4. 实例

    • 基本设备配置
    • 接口管理
    • 多设备操作
    • 配置备份和恢复
    • 网络监控
    • VLAN和路由配置
    • 安全配置(ACL)

快速开始

先决条件

  • Python 3.8或更高版本
  • Cisco设备的网络访问
  • 对网络协议的基本理解

安装

# Clone the repository
git clone https://github.com/ters-golemi/MCP-Cisco.git
cd MCP-Cisco

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install mcp netmiko ncclient

基本用法

import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    # Connect to MCP server
    server_params = StdioServerParameters(
        command="python",
        args=["cisco_mcp_server.py"]
    )
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            
            # List available tools
            tools = await session.list_tools()
            print("Available tools:", tools)

if __name__ == "__main__":
    asyncio.run(main())

主要特点

MCP服务器

  • 通过标准化工具展示思科设备功能
  • 支持SSH、NETCONF和RESTCONF连接
  • 架构驱动的API定义
  • 连接池和状态管理
  • 全面的错误处理

MCP客户端

  • 用于设备自动化的简单API
  • 同时支持Python和Node.js
  • 异步/等待模式,实现高效操作
  • 内置重试逻辑和错误处理
  • 多设备编排

通信协议

HTTP/REST

  • 简单且得到广泛支持
  • 易于调试和测试
  • 通过标准防火墙工作
  • 基于JSON的请求/响应

gRPC

  • 高性能二进制协议
  • 双向流媒体支持
  • 使用协议缓冲区进行强类型输入
  • 自动代码生成

用例

  • 自动化设备配置管理
  • 实时网络监控和警报
  • 配置备份和合规性检查
  • 多设备编排和配置
  • 基于意图的网络自动化
  • 网络故障排除和诊断

建筑

+------------------+                    +------------------+
|                  |                    |                  |
|  MCP Client      |<---- MCP Protocol ->|   MCP Server    |
|  (Your App)      |    (HTTP/gRPC)     |                  |
|                  |                    |                  |
+------------------+                    +--------+---------+
                                                 |
                                                 | SSH/NETCONF
                                                 |
                                        +--------v---------+
                                        |                  |
                                        | Cisco Devices    |
                                        |                  |
                                        +------------------+

安全考虑

  • 使用环境变量或密钥管理器作为凭据
  • 为生产gRPC连接启用TLS/SSL
  • 实现基于令牌的身份验证
  • 应用速率限制以防止滥用
  • 维护所有操作的审计日志
  • 使用基于角色的访问控制(RBAC)

贡献

欢迎投稿!请随时提交问题或拉取请求。

许可证

本项目按原样提供,用于教育和参考目的。

资源

支持

如有疑问或问题,请在GitHub存储库中打开问题。