ISE MCP Server

Apache 2.0
4
  • Apple
  • Linux
Integrations
  • 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)サーバです。Cisco Identity Services Engine(ISE)APIエンドポイントを、構造化された検出可能なMCPツールとして動的に公開します。このサーバにより、クライアントは標準化された方法でCisco ISE REST APIとやり取りすることができ、動的なツール生成やAPIレスポンスのフィルタリングなどの機能を提供します。

特徴

  • 動的ツール生成: MCP ツールはsrc/ise_mcp_server/urls.json構成ファイルのエントリに基づいて自動的に作成されます。
  • **FastMCP 統合:**スキーマ生成やリクエスト処理を含む堅牢な MCP サーバー実装のためにfastmcpライブラリを活用します。
  • 非同期 API 呼び出し: Cisco ISE との非ブロッキング通信にhttpx.AsyncClientを使用します。
  • **API フィルタリング:**各ツールのfilter_expressionおよびquery_params引数を通じて Cisco ISE API 結果のフィルタリングをサポートします。
  • 環境主導型構成: Cisco ISE 接続の詳細 (ベース URL、ユーザー名、パスワード) と SSL 検証設定 ( ISE_VERIFY_SSL ) は、 .envファイルを介して構成されます。
  • **詳細なドキュメント文字列:**動的に生成されたツールには、その目的、対象となる ISE API エンドポイント、フィルタリング パラメータの使用方法を説明する包括的なドキュメント文字列が含まれています。
  • **標準化されたインタラクション:**モデル コンテキスト プロトコルに準拠し、MCP 互換のクライアントを介したインタラクションを可能にします。
  • ストリーミング可能な HTTP トランスポート: Web ベースのアクセスでは、デフォルトで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
    主な依存関係には、 fastmcphttpxpydanticpython-dotenvが含まれます。( requirements.txtrequestsではなくhttpxが反映されていることを確認してください)。

構成

  1. 環境変数: Cisco ISE API 認証情報とベース URL を使用して、プロジェクト ルート ディレクトリ ( /Users/username/mcp_servers/ISE_MCP/.env ) に.envファイルを作成します。
    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と同じディレクトリにあります)が存在し、正しく構成されていることを確認してください。このファイルは、MCPツールとして公開されるISE APIエンドポイントを定義します。
    [ { "URL": "/ers/config/endpoint", "Name": "Endpoints", "FilterableFields": ["mac", "name", "description", "identityGroupName"] }, { "URL": "/ers/config/identitygroup", "Name": "Identity Groups", "FilterableFields": ["name", "description"] } // ... more endpoints ]
    • URL : Cisco ISE API エンドポイントの相対パス。
    • Name : MCP ツール名を導出するために使用される、人間が判読できる名前 (例: 「エンドポイント」はツールのendpointsになります)。
    • FilterableFields : このエンドポイントのfilter_expressionで使用できる既知のフィールドをリストした文字列の配列。このリストはユーザーが管理し、効果的なフィルタリングに不可欠です。

Claude Desktop 用の Docker でサーバーを実行する

このサーバーは、特に STDIO を介して対話する Claude Desktop などのクライアントで使用する場合に、Docker コンテナーとして実行されるように設計されています。

前提条件

  1. Docker がインストールされている: Docker Desktop がインストールされ、実行されていることを確認します。
  2. .envファイル: .envファイル (構成で説明) は、プロジェクト ルート ( /Users/username/mcp_servers/ISE_MCP/.env ) に存在する必要があります。
  3. **STDIO用に構成されたDockerfile:**このプロジェクトのDockerfileDockerfile )は、 stdioトランスポートを使用するように構成する必要があります。ENTRYPOINT 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デスクトップの設定

次のように、「ISE_MCP」サーバーの Claude Desktop MCP サーバー構成 ( claude_desktop_config.jsonまたはcline_mcp_settings.json ) を更新します。

{ "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 を開いたままにします。これは、STDIO ベースの MCP 通信に重要です。
  • --rm : コンテナの終了時に自動的に削除します。
  • --env-file : ホストマシン上の.envファイルへのパスを指定します。Docker はこれらの変数をコンテナに読み込みます。
  • ise-mcp:latest : 実行する Docker イメージの名前とタグ。
  • cwd : コ��ンドの作業ディレクトリを設定し、Claude Desktop が別のデフォルト ディレクトリからコマンドを実行する場合に相対パス ( --env-fileなど) が正しく解決されるようにします。

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 、通常http://127.0.0.1:8000/mcpで利用可能なstreamable-httpトランスポートを使用してサーバーを起動するように設定されています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 が起動します。

  • Inspector を使用した STDIO テストの場合:
    1. インスペクターでトランスポート タイプとして「STDIO」を選択します。
    2. サーバーを実行するコマンドをpython src/ise_mcp_server/server.pyとして設定します。
    3. サーバーに接続します。
  • Inspector を使用した HTTP テストの場合:
    1. 別のターミナルでpython src/ise_mcp_server/server.pyを実行してサーバーを起動します (デフォルトではstreamable-httpが使用されます)。
    2. MCP インスペクターで、「HTTP」を選択します。
    3. URL をhttp://127.0.0.1:8000/mcp (または構成したエンドポイント) に設定します。
    4. サーバーに接続します。

uvfastmcp runを使用してローカルで実行する (STDIO の代替)

uvfastmcpグローバルまたは環境にインストールされている場合は、 fastmcp runコマンドを使用してサーバーを実行することもできます。これは、STDIO ベースのクライアントに役立つことがよくあります。

前提条件:

  1. uvがインストールされ、PATH に追加されます。
  2. uvが使用する環境に(またはグローバルに)インストールされたfastmcp
  3. プロジェクト ルートに.envファイルがあります。

実行:

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

このコマンドは、指定されたプロジェクトディレクトリ内でfastmcp run src/ise_mcp_server/server.py --transport stdioを実行するようuv指示します。-- --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 ... } }

サーバー名を「ISE_LOCAL_UV」にするか、キーを適宜変更すると、Claude Desktop がこの設定を認識できるようになります。fastmcp fastmcp run 、現在の作業ディレクトリ(この場合は/Users/username/mcp_servers/ISE_MCP )から.envファイルを自動的に読み込みます。

サーバーとのやり取り

実行後は、MCP 互換クライアント (MCP Inspector など) を使用して ISE MCP サーバーにアクセスできるようになります。

ツールの発見

クライアントは利用可能なツールを検出できます。各ツールはurls.json内のエントリに対応しています。ツール名はNameフィールドから派生します(例:「Identity Groups」はidentity_groupsになります)。

ツールの呼び出し

ツールは、Pydantic モデル ( FilterableToolInputまたはNonFilterableToolInput ) のインスタンスである単一のオプション引数paramsで呼び出されます。

**例: フィルターなしでendpointsツールを呼び出す:**ツールの入力モデルがdefault_factory使用する場合、MCP クライアントは通常、明示的な引数なしでツールを呼び出すことを許可します。

**例: フィルター付きendpointsツールの呼び出し:**引数はPydanticモデルに従って構造化されます。FilterableFields FilterableFields持つエンドポイントから生成されたツールの場合:

// Example arguments for a tool call (client-dependent format) { "params": { "filter_expression": "name.CONTAINS.mydevice", "query_params": { "size": 10, "page": 1 } } }
  • filter_expression (文字列、オプション): fieldName.OPERATION.valueの形式でフィルターを指定します(例: mac.EQUALS.AA:BB:CC:DD:EE:FF )。利用可能なFilterableFieldsとサポートされている ISE 演算(例:CONTAINS、EQUALS、STARTSWITH)については、ツールのドキュメントを参照してください。
  • query_params (dict, オプション): 任意のクエリパラメータ(例: {"size": 100, "page": 2} )を指定できます。これらのパラメータはISE APIに直接渡されます。

urls.json内のエンドポイントに空のFilterableFields配列がある場合、対応するツールはquery_paramsのみを受け入れます。

エンドポイントと利用可能なフィルタリング可能なフィールドの詳細については、各ツールの動的に生成された docstring を参照してください。

ログ記録

サーバーはfastmcpによって設定された標準の Python loggingモジュールを使用します。サーバーの操作と API のやり取りに関連するログメッセージがコンソールに出力されます。

ライセンス

Apache 2.0 ライセンス

Related MCP Servers

  • -
    security
    F
    license
    -
    quality
    A 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 -
    46
    2
    Python
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server that provides tools for interacting with Gmail and Calendar APIs, enabling programmatic management of emails and calendar events.
    Last updated -
    8
    7
    JavaScript
    MIT License
    • Apple
  • A
    security
    A
    license
    A
    quality
    A 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 -
    8
    84
    14
    TypeScript
    Apache 2.0
  • A
    security
    A
    license
    A
    quality
    A 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 -
    9
    33
    16
    JavaScript
    Apache 2.0

View all related MCP servers

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