Enables configuration of the server through environment variables stored in a .env file, including ISE connection details, credentials, and SSL verification settings.
Provides access to Cisco Identity Services Engine (ISE) REST APIs, allowing discovery and interaction with ISE endpoints like endpoint configuration and identity group management, with support for filtering API results.
Supports containerized deployment using Docker, with configurations for both standalone operation and integration with Claude Desktop.
ISE MCP 服务器(使用 FastMCP)
概述
ISE MCP 服务器是一个使用 Python fastmcp
库构建的模型上下文协议 (MCP)服务器。它动态地将思科身份服务引擎 (ISE) API 终端公开为结构化、可发现的 MCP 工具。该服务器允许客户端以标准化方式与思科 ISE REST API 交互,并提供动态工具生成和 API 响应过滤等功能。
特征
- 动态工具生成: MCP 工具根据
src/ise_mcp_server/urls.json
配置文件中的条目自动创建。 - **FastMCP 集成:**利用
fastmcp
库实现强大的 MCP 服务器实现,包括模式生成和请求处理。 - **异步 API 调用:**使用
httpx.AsyncClient
与 Cisco ISE 进行非阻塞通信。 - **API 过滤:**支持通过每个工具中的
filter_expression
和query_params
参数过滤 Cisco ISE API 结果。 - 环境驱动配置: Cisco ISE 连接详细信息(基本 URL、用户名、密码)和 SSL 验证设置(
ISE_VERIFY_SSL
)通过.env
文件配置。 - **详细的文档字符串:**动态生成的工具包括全面的文档字符串,解释其用途、其目标的 ISE API 端点以及如何使用过滤参数。
- **标准化交互:**遵守模型上下文协议,允许通过任何兼容 MCP 的客户端进行交互。
- **可流式 HTTP 传输:**配置为默认使用
streamable-http
传输进行基于 Web 的访问。
设置
服务器
{ “mcpServers”:{ “ise”:{ “command”:“python”, “args”:[ “ise_mcp_server.py”, “--oneshot” ],“env”:{ “ISE_BASE”:“ https://devnetsandboxise.cisco.com ”, “USERNAME”:“readonly”, “PASSWORD”:“ISEisC00L” } } } }
要求
- Python 3.9 或更高版本。
- 所需的 Python 软件包列在
requirements.txt
(位于项目根目录)中。使用以下命令安装它们:或者,如果使用uv
:关键依赖项包括fastmcp
、httpx
、pydantic
和python-dotenv
。(确保requirements.txt
反映的是httpx
而不是requests
)。
配置
- **环境变量:**使用您的 Cisco ISE API 凭证和基本 URL 在项目根目录(
/Users/username/mcp_servers/ISE_MCP/.env
mcp_servers/ISE_MCP/.env )中创建一个.env
文件: - **URL 配置 (
urls.json
):**确保src/ise_mcp_server/urls.json
文件(与src/ise_mcp_server/server.py
位于同一目录)存在且结构正确。此文件定义了将作为 MCP 工具公开的 ISE API 端点。URL
:Cisco ISE API 端点的相对路径。Name
:用于派生 MCP 工具名称的人性化名称(例如,“端点”成为工具endpoints
)。FilterableFields
:一个字符串数组,列出了可与此端点的filter_expression
一起使用的已知字段。此列表由用户维护,对于有效过滤至关重要。
使用 Docker 为 Claude Desktop 运行服务器
该服务器设计为作为 Docker 容器运行,尤其是与通过 STDIO 交互的 Claude Desktop 等客户端一起使用时。
先决条件
- **Docker 已安装:**确保 Docker Desktop 已安装并正在运行。
- **
.env
文件:**您的.env
文件(如配置中所述)必须存在于项目根目录(/Users/username/mcp_servers/ISE_MCP/.env
mcp_servers/ISE_MCP/.env )中。 - **已配置 Dockerfile 的 STDIO:**本项目中的
Dockerfile
(Dockerfile
) 应配置为使用stdio
传输ENTRYPOINT
应如下所示:确保它不会复制.env
文件。
构建 Docker 镜像
导航到包含 Dockerfile ( /Users/username/mcp_servers/ISE_MCP/
) 的目录并构建 Docker 映像:
或者,如果从项目根目录构建:
配置 Claude 桌面
更新“ISE_MCP”服务器的 Claude Desktop MCP 服务器配置( claude_desktop_config.json
或cline_mcp_settings.json
),如下所示:
Docker 参数的解释:
run
:执行 Docker 容器。-i
:(交互式)即使未连接也保持 STDIN 开放,这对于基于 STDIO 的 MCP 通信至关重要。--rm
:容器退出时自动删除。--env-file
:指定主机上.env
文件的路径。Docker 会将这些变量加载到容器中。ise-mcp:latest
:要运行的 Docker 映像的名称和标签。cwd
:设置命令的工作目录,确保如果 Claude Desktop 从不同的默认目录运行命令,相对路径(如--env-file
)能够正确解析。
使用 Docker Compose 运行(本地测试的替代方案)
还提供了一个docker-compose.yml
文件用于本地测试。它构建镜像并运行容器,并从.env
文件加载环境变量。
此方法适合直接测试,但上述docker run
配置更适合 Claude Desktop 集成。
本地运行服务器(不使用 Docker)
对于开发或当不喜欢 Docker 时,您可以直接使用 Python 运行服务器。
先决条件
- **Python 环境:**确保您拥有 Python 3.9+ 并且已从
requirements.txt
安装了依赖项。 .env
文件:.env
文件必须存在于项目根目录中(/Users/username/mcp_servers/ISE_MCP/.env
)。
执行
导航到项目根目录并运行:
默认情况下, src/ise_mcp_server/server.py
配置为使用streamable-http
传输方式启动服务器,通常访问http://127.0.0.1:8000/mcp
。您可以根据特定客户端的需要,修改server.py
以更改传输方式(例如,更改为stdio
)或其他服务器参数。
使用 MCP Inspector (本地 Python) 进行开发和测试
对于使用 MCP Inspector 进行本地开发:
运行此命令后,MCP Inspector 将启动。
- 使用 Inspector 进行 STDIO 测试:
- 在检查器中选择“STDIO”作为传输类型。
- 将运行服务器的命令设置为
python src/ise_mcp_server/server.py
。 - 连接到服务器。
- 使用 Inspector 进行 HTTP 测试:
- 在单独的终端中运行
python src/ise_mcp_server/server.py
来启动服务器(默认情况下它将使用streamable-http
)。 - 在 MCP 检查器中,选择“HTTP”。
- 将 URL 设置为
http://127.0.0.1:8000/mcp
(或您配置的端点)。 - 连接到服务器。
- 在单独的终端中运行
使用uv
和fastmcp run
在本地运行(STDIO 的替代方案)
如果您已全局或在您的环境中安装了uv
和fastmcp
,您还可以使用fastmcp run
命令运行服务器,这对于基于 STDIO 的客户端通常很有用。
先决条件:
uv
已安装并位于您的 PATH 中。fastmcp
安装在uv
将使用的环境中(或全局)。.env
文件存在于项目根目录中。
执行:
此命令指示uv
在指定的项目目录中执行fastmcp run src/ise_mcp_server/server.py --transport stdio
。 --transport stdio
标志对于需要 STDIO 的客户端非常重要。
**Claude Desktop uv
方法配置:**如果您更喜欢 Claude Desktop 的这种方法,您可以按如下方式进行配置:
如果您将服务器命名为“ISE_LOCAL_UV”或相应地调整密钥,Claude Desktop 将获取此配置。请注意, fastmcp run
将自动从当前工作目录(在本例中/Users/username/mcp_servers/ISE_MCP
)加载.env
文件。
与服务器交互
一旦运行,就可以使用任何与 MCP 兼容的客户端(例如 MCP Inspector)访问 ISE MCP 服务器。
工具发现
客户端可以发现可用的工具。每个工具对应urls.json
中的一个条目。工具名称源自Name
字段(例如,“Identity Groups” 变为identity_groups
)。
调用工具
使用单个可选参数params
调用工具,该参数是 Pydantic 模型( FilterableToolInput
或NonFilterableToolInput
)的一个实例。
**示例:调用不带过滤器的endpoints
工具:**如果工具的输入模型使用default_factory
,则 MCP 客户端通常允许在没有明确参数的情况下调用该工具。
**示例:使用过滤器调用endpoints
工具:**参数将根据 Pydantic 模型进行构造。对于从具有FilterableFields
的端点生成的工具:
filter_expression
(字符串,可选):以fieldName.OPERATION.value
格式指定过滤器(例如mac.EQUALS.AA:BB:CC:DD:EE:FF
)。请参阅该工具的文档字符串,了解可用的FilterableFields
和支持的 ISE 操作(例如 CONTAINS、EQUALS、STARTSWITH)。query_params
(字典,可选):允许指定其他任意查询参数(例如,{"size": 100, "page": 2}
)。这些参数会直接传递给 ISE API。
如果urls.json
中的端点具有空的FilterableFields
数组,则相应的工具将仅接受query_params
。
请参阅每个工具的动态生成的文档字符串,了解有关其端点和可用可过滤字段的具体详细信息。
日志记录
该服务器使用标准的 Python logging
模块,由fastmcp
配置。与服务器操作和 API 交互相关的日志消息将输出到控制台。
执照
Apache 2.0许可证
Related MCP Servers
- -securityFlicense-qualityA Model Context Protocol server that provides a comprehensive interface for interacting with the ConnectWise Manage API, simplifying API discovery, execution, and management for both developers and AI assistants.Last updated -462Python
- AsecurityAlicenseAqualityA Model Context Protocol server that provides tools for interacting with Gmail and Calendar APIs, enabling programmatic management of emails and calendar events.Last updated -87JavaScriptMIT License
Paddle MCP Serverofficial
AsecurityAlicenseAqualityA Model Context Protocol server that provides tools for interacting with the Paddle Billing API, enabling users to manage products, prices, customers, transactions, subscriptions, and create custom financial reports.Last updated -88414TypeScriptApache 2.0Infisical MCP Serverofficial
AsecurityAlicenseAqualityA Model Context Protocol server that enables interaction with Infisical APIs for secret management, allowing users to create, update, delete, and list secrets through function calling.Last updated -93316JavaScriptApache 2.0