Skip to main content
Glama
automateyournetwork

ISE MCP Server

Сервер ISE MCP (использующий FastMCP)

Обзор

Сервер ISE MCP — это сервер Model Context Protocol (MCP), созданный с использованием библиотеки Python fastmcp . Он динамически представляет конечные точки API Cisco Identity Services Engine (ISE) как структурированные, обнаруживаемые инструменты MCP. Этот сервер позволяет клиентам взаимодействовать с API Cisco ISE REST стандартизированным способом, предлагая такие функции, как динамическая генерация инструментов и фильтрация ответов API.

Related MCP server: ONOS MCP Server

Функции

  • Динамическая генерация инструментов: инструменты MCP автоматически создаются на основе записей в файле конфигурации src/ise_mcp_server/urls.json .

  • Интеграция FastMCP: использует библиотеку fastmcp для надежной реализации сервера MCP, включая генерацию схем и обработку запросов.

  • Асинхронные вызовы API: использует httpx.AsyncClient для неблокируемой связи с Cisco ISE.

  • Фильтрация API: поддерживает фильтрацию результатов API Cisco ISE с помощью аргументов filter_expression и query_params в каждом инструменте.

  • Конфигурация на основе среды: сведения о подключении Cisco ISE (базовый URL, имя пользователя, пароль) и параметры проверки SSL ( ISE_VERIFY_SSL ) настраиваются с помощью файла .env .

  • Подробные строки документации: динамически генерируемые инструменты включают в себя подробные строки документации, объясняющие их назначение, конечную точку API ISE, на которую они нацелены, и порядок использования параметров фильтрации.

  • Стандартизированное взаимодействие: соответствует протоколу контекста модели, что позволяет взаимодействовать через любой клиент, совместимый с MCP.

  • Потоковый HTTP-транспорт: настроен на использование streamable-http транспорта по умолчанию для веб-доступа.

Настраивать

Сервер

{ "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 (в корне проекта). Установите их с помощью:

    pip install -r requirements.txt

    Или, если использовать uv :

    uv pip install -r requirements.txt

    Ключевые зависимости включают fastmcp , httpx , pydantic и python-dotenv . (Убедитесь, что requirements.txt отражает httpx вместо requests ).

Конфигурация

  1. Переменные среды: создайте файл .env в корневом каталоге проекта ( /Users/username/mcp_servers/ISE_MCP/.env ) с вашими учетными данными API Cisco ISE и базовым URL-адресом:

    ISE_BASE="https://your-ise-instance.example.com"
    USERNAME="your-ise-api-username"
    PASSWORD="your-ise-api-password"
    # Optional: Controls SSL certificate verification for ISE API calls.
    # Default is true. Set to "false" to disable (insecure).
    # Or provide a path to a CA bundle file, e.g., "/path/to/your/ca.pem".
    ISE_VERIFY_SSL="true"
  2. Конфигурация URL ( urls.json ): Убедитесь, что файл src/ise_mcp_server/urls.json (расположенный в том же каталоге, что и src/ise_mcp_server/server.py ) присутствует и структурирован правильно. Этот файл определяет конечные точки API ISE, которые будут представлены как инструменты MCP.

    [
      {
        "URL": "/ers/config/endpoint",
        "Name": "Endpoints",
        "FilterableFields": ["mac", "name", "description", "identityGroupName"]
      },
      {
        "URL": "/ers/config/identitygroup",
        "Name": "Identity Groups",
        "FilterableFields": ["name", "description"]
      }
      // ... more endpoints
    ]
    • URL : Относительный путь к конечной точке API Cisco ISE.

    • Name : понятное человеку имя, используемое для получения имени инструмента MCP (например, «Endpoints» становится endpoints инструмента).

    • FilterableFields : Массив строк, перечисляющих известные поля, которые можно использовать с filter_expression для этой конечной точки. Этот список поддерживается пользователем и имеет решающее значение для эффективной фильтрации.

Запуск сервера с Docker для Claude Desktop

Этот сервер предназначен для работы в качестве контейнера Docker, особенно при использовании с такими клиентами, как Claude Desktop, которые взаимодействуют через STDIO.

Предпосылки

  1. Docker установлен: убедитесь, что Docker Desktop установлен и запущен.

  2. Файл .env : Ваш файл .env (как описано в разделе «Конфигурация») должен находиться в корне проекта ( /Users/username/mcp_servers/ISE_MCP/.env ).

  3. Dockerfile настроен для STDIO: Dockerfile в этом проекте ( Dockerfile ) должен быть настроен на использование транспорта stdio . ENTRYPOINT должен выглядеть так:

    ENTRYPOINT ["python", "-m", "ise_mcp_server", "--transport", "stdio"]

    Убедитесь, что файл .envне копируется.

Создайте образ Docker

Перейдите в каталог, содержащий Dockerfile ( /Users/username/mcp_servers/ISE_MCP/ ), и создайте образ Docker:

docker build -t ise-mcp:latest .

Альтернативный вариант, если сборка выполняется из корня проекта:

docker build -t ise-mcp:latest -f src/Dockerfile .

Настроить рабочий стол Клода

Обновите конфигурацию сервера Claude Desktop MCP ( claude_desktop_config.json или cline_mcp_settings.json ) для сервера «ISE_MCP» следующим образом:

{
  "mcpServers": {
    // ... other servers ...
    "ISE_MCP": {
      "command": "docker",
      "args": [
        "run",
        "-i",         // Essential for STDIO interaction
        "--rm",       // Automatically remove the container when it exits
        "--env-file=/Users/username/mcp_servers/ISE_MCP/.env", // Mounts your .env file
        "ise-mcp:latest" // The image we just built
      ],
      "cwd": "/Users/username/mcp_servers/ISE_MCP" // Ensures paths are correct
    }
    // ... other servers ...
  }
}

Объяснение аргументов Docker:

  • run : запускает контейнер Docker.

  • -i : (Интерактивно) Сохраняет STDIN открытым, даже если он не подключен, что имеет решающее значение для связи MCP на основе STDIO.

  • --rm : Автоматически удаляет контейнер при выходе.

  • --env-file : Указывает путь к файлу .env на хост-машине. Docker загрузит эти переменные в контейнер.

  • ise-mcp:latest : Имя и тег образа Docker для запуска.

  • cwd : Устанавливает рабочий каталог для команды, гарантируя, что относительные пути (например, для --env-file ) будут разрешены правильно, если Claude Desktop запускает команды из другого каталога по умолчанию.

Запуск с Docker Compose (альтернатива для локального тестирования)

Файл docker-compose.yml также предоставляется для локального тестирования. Он создает образ и запускает контейнер, загружая переменные среды из файла .env .

docker-compose up --build

Этот метод подходит для прямого тестирования, но для интеграции Claude Desktop предпочтительнее использовать приведенную выше конфигурацию docker run .

Запуск сервера локально (без Docker)

Для разработки или когда Docker нежелателен, вы можете запустить сервер напрямую с помощью Python.

Предпосылки

  1. Среда Python: убедитесь, что у вас установлен Python 3.9+ и установлены зависимости из requirements.txt .

  2. Файл .env : Файл .env должен присутствовать в корне проекта ( /Users/username/mcp_servers/ISE_MCP/.env ).

Исполнение

Перейдите в корневой каталог проекта и запустите:

python src/ise_mcp_server/server.py

По умолчанию src/ise_mcp_server/server.py настроен на запуск сервера с использованием streamable-http транспорта, обычно доступного по адресу http://127.0.0.1:8000/mcp . Вы можете изменить server.py , чтобы изменить транспорт (например, на stdio ) или другие параметры сервера, если это необходимо для вашего конкретного клиента.

Разработка и тестирование с помощью MCP Inspector (локальный Python)

Для локального развития с MCP Inspector:

python -m fastmcp dev src/ise_mcp_server/server.py --with httpx --with pydantic --with python-dotenv

После выполнения этой команды запустится MCP Inspector.

  • Для тестирования STDIO с помощью Inspector:

    1. Выберите «STDIO» в качестве типа транспорта в Инспекторе.

    2. Задайте команду для запуска сервера как python src/ise_mcp_server/server.py .

    3. Подключитесь к серверу.

  • Для HTTP-тестирования с помощью Inspector:

    1. Запустите python src/ise_mcp_server/server.py в отдельном терминале, чтобы запустить сервер (по умолчанию он будет использовать streamable-http ).

    2. В MCP Inspector выберите «HTTP».

    3. Установите URL-адрес на http://127.0.0.1:8000/mcp (или настроенную вами конечную точку).

    4. Подключитесь к серверу.

Запуск локально с помощью uv и fastmcp run (альтернатива STDIO)

Если у вас uv и fastmcp установлены глобально или в вашей среде, вы также можете запустить сервер с помощью команды fastmcp run , которая часто бывает полезна для клиентов на основе STDIO.

Предварительные условия:

  1. uv установлен и находится в вашей переменной PATH.

  2. fastmcp установлен в среде, которую будет использовать uv (или глобально).

  3. Файл .env присутствует в корне проекта.

Исполнение:

uv --directory /Users/username/mcp_servers/ISE_MCP run fastmcp run src/ise_mcp_server/server.py --transport stdio

Эта команда сообщает uv выполнить fastmcp run src/ise_mcp_server/server.py --transport stdio в указанном каталоге проекта. Флаг --transport stdio важен для клиентов, ожидающих STDIO.

Конфигурация Claude Desktop для метода uv : Если вы предпочитаете этот метод для Claude Desktop, вы можете настроить его следующим образом:

{
  "mcpServers": {
    // ... other servers ...
    "ISE_LOCAL_UV": { // Using a different key to distinguish
      "command": "uv",
      "args": [
        "--directory",
        "/Users/username/mcp_servers/ISE_MCP",
        "run",
        "fastmcp",
        "run",
        "src/ise_mcp_server/server.py",
        "--transport",
        "stdio"
      ],
      "cwd": "/Users/username/mcp_servers/ISE_MCP", // Ensures .env is found if relative paths are used by fastmcp for .env loading
      "transportType": "stdio" // Explicitly tell Claude this is an STDIO server
    }
    // ... other servers ...
  }
}

Эта конфигурация будет принята Claude Desktop, если вы назовете свой сервер "ISE_LOCAL_UV" или соответствующим образом измените ключ. Обратите внимание, что fastmcp run автоматически загрузит файл .env из текущего рабочего каталога (в данном случае /Users/username/mcp_servers/ISE_MCP ).

Взаимодействие с сервером

После запуска к серверу ISE MCP можно получить доступ с помощью любого MCP-совместимого клиента (например, MCP Inspector).

Инструмент обнаружения

Клиенты могут обнаружить доступные инструменты. Каждый инструмент соответствует записи в urls.json . Названия инструментов выводятся из поля Name (например, "Identity Groups" становится identity_groups ).

Вызов инструмента

Инструменты вызываются с одним необязательным аргументом params , который является экземпляром модели Pydantic ( FilterableToolInput или NonFilterableToolInput ).

Пример: Вызов инструмента endpoints без фильтров: Клиент MCP обычно разрешает вызывать инструмент без явных аргументов, если входная модель инструмента использует default_factory .

Пример: Вызов инструмента endpoints с фильтрами: Аргументы будут структурированы в соответствии с моделью Pydantic. Для инструмента, созданного из конечной точки с FilterableFields :

// Example arguments for a tool call (client-dependent format)
{
  "params": {
    "filter_expression": "name.CONTAINS.mydevice",
    "query_params": {
      "size": 10,
      "page": 1
    }
  }
}
  • filter_expression (string, необязательно): Задает фильтры в формате fieldName.OPERATION.value (например, mac.EQUALS.AA:BB:CC:DD:EE:FF ). Обратитесь к docstring инструмента для доступных FilterableFields и поддерживаемых операций ISE (например, CONTAINS, EQUALS, STARTSWITH).

  • query_params (dict, необязательно): Позволяет указывать другие произвольные параметры запроса (например, {"size": 100, "page": 2} ). Они передаются напрямую в API ISE.

Если конечная точка в urls.json имеет пустой массив FilterableFields , соответствующий инструмент будет принимать только query_params .

Подробную информацию о конечной точке и доступных фильтруемых полях см. в динамически сгенерированной строке документации каждого инструмента.

Ведение журнала

Сервер использует стандартный модуль logging Python, настроенный fastmcp . Сообщения журнала, связанные с операциями сервера и взаимодействиями API, будут выводиться на консоль.

Лицензия

Лицензия Apache 2.0

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides access to ACI.dev functions (tools) through either direct app-specific tools or a unified interface with dynamic tool discovery and execution based on user intent.
    254
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides programmatic access to ONOS SDN controller's network management capabilities, enabling device control, topology management, and analytics through ONOS's REST API.
    6
    GPL 3.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol Server for interacting with the Cisco Meraki Dashboard API, enabling network configuration and management operations through natural language interactions.

View all related MCP servers

Related MCP Connectors

  • MCP server for AI access to Swagger by SmartBear.

  • MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.

  • An authenticated remote MCP server for user-owned devices and one-shot capability invocation.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/automateyournetwork/ISE_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server