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).
Конфигурация
Переменные среды: создайте файл
.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"Конфигурация 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.
Предпосылки
Docker установлен: убедитесь, что Docker Desktop установлен и запущен.
Файл
.env: Ваш файл.env(как описано в разделе «Конфигурация») должен находиться в корне проекта (/Users/username/mcp_servers/ISE_MCP/.env).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.
Предпосылки
Среда Python: убедитесь, что у вас установлен Python 3.9+ и установлены зависимости из
requirements.txt.Файл
.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:
Выберите «STDIO» в качестве типа транспорта в Инспекторе.
Задайте команду для запуска сервера как
python src/ise_mcp_server/server.py.Подключитесь к серверу.
Для HTTP-тестирования с помощью Inspector:
Запустите
python src/ise_mcp_server/server.pyв отдельном терминале, чтобы запустить сервер (по умолчанию он будет использоватьstreamable-http).В MCP Inspector выберите «HTTP».
Установите URL-адрес на
http://127.0.0.1:8000/mcp(или настроенную вами конечную точку).Подключитесь к серверу.
Запуск локально с помощью uv и fastmcp run (альтернатива STDIO)
Если у вас uv и fastmcp установлены глобально или в вашей среде, вы также можете запустить сервер с помощью команды fastmcp run , которая часто бывает полезна для клиентов на основе STDIO.
Предварительные условия:
uvустановлен и находится в вашей переменной PATH.fastmcpустановлен в среде, которую будет использоватьuv(или глобально).Файл
.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
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceA 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.254MIT
- AlicenseNot gradedqualityDmaintenanceA 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.6GPL 3.0
- FlicenseNot gradedqualityDmaintenanceA server that wraps Cisco Catalyst Center APIs into tools accessible via the Model Context Protocol, allowing AI agents to discover and execute network management operations.
- -licenseNot gradedqualityNot gradedmaintenanceA Model Context Protocol Server for interacting with the Cisco Meraki Dashboard API, enabling network configuration and management operations through natural language interactions.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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