README
🚀 Cisco NSO MCP 服务器
Cisco NSO MCP 服务器是一个用于 Cisco NSO(网络服务编排器)的 Model Context Protocol (MCP) 服务器实现,借助自然语言交互达成 AI 驱动的网络自动化,为网络管理带来更智能、便捷的体验。
🚀 快速开始
Cisco NSO MCP 服务器使用 Python 编写,可通过 pip 进行安装,并能作为命令行工具运行。以下是快速安装和启动服务器的命令:
# 安装包
pip install cisco-nso-mcp-server
# 运行服务器
cisco-nso-mcp-server
✨ 主要特性
- MCP 协议支持:将 Cisco NSO 的功能暴露为 MCP 工具和服务,可供任何 MCP 兼容客户端消费。
- 灵活性高:MCP 是一种开放协议,与 LLM 无关,可直接在无 LLM 的应用程序中使用,也可通过集成层让 LLM 控制,还能按需混合使用。
- 异步处理:利用 Python 的异步编程功能,高效处理网络操作,支持并发处理和错误处理。
📦 安装指南
安装
使用 pip 进行安装:
pip install cisco-nso-mcp-server
运行服务器
运行 MCP 服务器:
cisco-nso-mcp-server
配置选项
MCP 服务器支持 stdio 和 sse 两种传输类型。
标准配置
默认情况下,服务器使用 stdio 传输。若要更改传输类型或 SSE 传输的主机和端口,可参考以下命令:
- 使用标准配置运行服务器
cisco-nso-mcp-server --transport stdio
- 更改 SSE 传输的主机和端口
cisco-nso-mcp-server --transport sse --host 0.0.0.0 --port 8000
环境变量优先级
环境变量的值会覆盖默认值,但会被命令行参数覆盖。
💻 使用示例
连接到服务器
标准输入输出传输(stdio)
对于 stdio 传输,需启动服务器进程并通过 stdin 和 stdout 进行通信:
from mcp import ClientSession, StdioServerParameters
from contextlib import AsyncExitStack
async def connect():
exit_stack = AsyncExitStack()
server_params = StdioServerParameters(
command="cisco-nso-mcp-server",
args=[],
env=None
)
stdio_transport = await exit_stack.enter_async_context(stdio_client(server_params))
stdio, write = stdio_transport
session = await exit_stack.enter_async_context(ClientSession(stdio, write))
await session.initialize()
# 现在你可以使用会话调用工具和读取资源
return session
SSE 传输
对于 SSE 传输,可通过标准 HTTP 客户端连接到服务器:
from mcp import ClientSession, SSEServerParameters
from contextlib import AsyncExitStack
async def connect():
exit_stack = AsyncExitStack()
server_params = SSEServerParameters(
url="http://localhost:8000",
headers={"Authorization": "Bearer YOUR_TOKEN"}
)
sse_transport = await exit_stack.enter_async_context(sse_client(server_params))
session = await exit_stack.enter_async_context(ClientSession(sse_transport))
await session.initialize()
# 现在你可以使用会话调用工具和读取资源
return session
🔧 技术细节
MCP 服务器利用 Python 的异步编程功能来高效处理网络操作:
- 异步函数定义:所有工具函数都使用
async def定义为协程。 - 非阻塞 I/O:对 Cisco NSO 的网络调用包装在
asyncio.to_thread()中,以防止阻止事件循环。 - 并发处理:多个工具调用可以同时处理而无需等待之前操作完成。
- 错误处理:异步
try/except块捕获并正确格式化来自网络操作的错误。
📄 许可证
本项目采用 MIT License。
📚 详细文档
什么是 MCP?
Model Context Protocol (MCP) 是一种开放协议,标准化了 AI 模型与外部工具和服务之间的交互方式。MCP 实现了以下功能:
- 工具定义:结构化地定义 AI 模型可以使用工具的方式。
- 工具发现:模型发现可用工具的机制。
- 工具执行:模型调用工具并接收结果的标准方法。
- 上下文管理:在工具和模型之间高效传递上下文。
- 框架无关:适用于 OpenAI、Anthropic、Google Gemini 等多个 AI 框架。
- 互操作性:为 AI 系统与外部工具之间的通信提供通用语言。
MCP 的灵活性说明
尽管 MCP 的主要用例是与 LLM 集成,但 MCP 和类似的工具框架(如 Smithery)是 LLM 无关的——它们只是特定协议的 API。这意味着你可以:
- 直接使用:在没有 LLM 的任何应用程序中直接使用。
- 通过集成层让 LLM 控制:通过集成层让 LLM 控制。
- 根据需要混合两种方法:根据具体需求和用例混合两种方法。
这种灵活性使 MCP 工具超越了仅限于 LLM 应用程序的价值,成为在工具和服务之间进行通信的通用工具。
Scan to join WeChat group