使用说明

项目简介

ISE MCP 服务器是一个遵循 Model Context Protocol (MCP) 的后端服务。它专门用于连接思科身份服务引擎 (Cisco ISE),通过调用ISE的REST API来获取数据。然后,它将这些数据访问能力转化为结构化的、可被LLM客户端发现和调用的“工具”。LLM客户端可以通过标准化的JSON-RPC协议与此服务器通信,从而获取ISE中的实时上下文信息。

主要功能点

  • 数据工具化: 将思科ISE的特定REST API端点动态转换为可调用的工具,每个工具代表对一个ISE资源(如终端、身份组)的数据查询能力。
  • JSON-RPC接口: 提供标准的JSON-RPC接口,支持客户端发现可用的工具以及调用这些工具来获取ISE数据。
  • 灵活配置: 支持通过环境变量配置ISE连接信息(如基础URL、用户名、密码),通过JSON文件配置需要暴露的ISE API端点列表。
  • STDIO传输: 支持通过标准输入/输出 (STDIO) 与MCP客户端进行通信。

安装步骤

  1. 安装Python: 确保你的系统安装了 Python 3.8 或更高版本。
  2. 下载代码: 从GitHub仓库下载或克隆项目代码。
  3. 安装依赖: 打开终端,导航到项目根目录,运行以下命令安装所需的Python包:
    pip install requests pydantic python-dotenv
  4. 配置ISE连接: 在项目根目录创建名为 '.env' 的文件,并填入你的Cisco ISE连接信息:
    ISE_BASE=https://your_ise_host # 替换为你的ISE主机地址
    USERNAME=your_username # 替换为你的ISE用户名
    PASSWORD=your_password # 替换为你的ISE密码
    请注意,此处示例使用了开发沙箱地址和默认凭据,生产环境请务必使用自己的ISE地址和安全的凭据。
  5. 配置数据端点: 在项目根目录创建名为 'urls.json' 的文件,定义你希望作为工具暴露的ISE API端点列表:
    [
      {"URL": "/ers/config/endpoint?size=100", "Name": "Endpoints"},
      {"URL": "/ers/config/identitygroup?size=100", "Name": "Identity Groups"}
      // 添加更多你需要访问的ISE API端点
    ]
    'URL' 是ISE API的路径,'Name' 将被用来生成工具的名称(例如 "Endpoints" 会变成 "endpoints" 工具)。

服务器配置(供MCP客户端使用)

MCP客户端需要知道如何启动这个服务器进程并与之通信。你需要提供以下信息给MCP客户端配置:

  • 'server name': 服务器的名称,例如 "ISE MCP 服务器"。
  • 'command': 启动服务器进程的命令,这里是 "python"。
  • 'args': 传递给命令的参数列表。第一个参数是主脚本文件路径,例如 '["ise_mcp/main.py"]'。请根据你实际存放代码的路径进行修改。如果需要以一次性模式运行(处理一个请求后退出),可以在args中添加 '"--oneshot"' 参数,例如 '["ise_mcp/main.py", "--oneshot"]'。通常MCP客户端会以持续模式运行,所以默认是 '["ise_mcp/main.py"]'。

例如,客户端的MCP服务器配置可能包含类似如下的结构信息:

{
  "name": "ISE MCP Server",
  "command": "python",
  "args": [
    "/path/to/your/downloaded/code/ise_mcp/main.py"
  ]
}

(请注意:这里仅为说明配置结构,实际配置需在MCP客户端中完成,且路径需要替换为你本地实际的脚本文件路径。)

基本使用方法

服务器启动后,会通过标准输入/输出与MCP客户端进行JSON-RPC通信。客户端会发送请求(如初始化、发现工具、调用工具),服务器处理请求并返回响应。

  • 初始化: 客户端发送 '{"jsonrpc": "2.0", "method": "initialize", ...}' 请求与服务器建立连接。
  • 发现工具: 客户端发送 '{"jsonrpc": "2.0", "method": "tools/discover", ...}' 请求获取服务器提供的工具列表及其描述和参数信息。
  • 调用工具: 客户端发送 '{"jsonrpc": "2.0", "method": "tools/call", "params": {"name": "工具名称", "arguments": {...}}, ...}' 请求执行特定的工具。例如,要获取终端列表,客户端会调用名为 "endpoints" 的工具(如果你的 'urls.json' 中有 '{"URL": "/...", "Name": "Endpoints"}')。

服务器将通过标准输出返回JSON-RPC格式的响应,包含请求结果或错误信息。

信息

分类

开发者工具