🚀 プレビュー: Core Content Services MCP Server
Core Content Services MCP Serverは、AIモデルがIBM FileNet Content Manager (FNCM)の機能を利用できるようにする標準化されたインターフェースを提供します。このMCP Serverを使用すると、以下のことが可能になります。
- AIエージェントを通じてFNCM内に保存されているドキュメントを管理する(ドキュメントの作成や削除を含む)
- チェックイン、チェックアウト、プロパティの更新などのドキュメントの更新を行う
- ドキュメントやフォルダなどのオブジェクトを検索する
- フォルダを管理し、フォルダ内のドキュメントをファイル/アンファイルする
- ドキュメントクラス、フォルダクラスなどを管理する
🛠️ ツールリスト
Core Content Services MCP Serverは、FileNet CPEとやり取りするための以下のツールを提供します。
ドキュメント管理
-
get_document_versions: ドキュメントのバージョン履歴を取得します。これには、メジャーおよびマイナーバージョン番号と、各バージョンのドキュメントIDが含まれます。
-
get_document_text_extract: ドキュメントのテキスト抽出注釈を取得することで、ドキュメントからテキストコンテンツを抽出します。複数のテキスト抽出が見つかった場合は、それらが連結されます。注意: この機能を使用するには、オブジェクトストアにPersistent Text Extractアドオンをインストールする必要があります。詳細については、前提条件セクションを参照してください。
-
create_document: 指定されたプロパティでコンテンツリポジトリに新しいドキュメントを作成します。ファイルパスが指定された場合、ファイルをドキュメントのコンテンツとしてアップロードできます。最初にdetermine_classとget_class_property_descriptionsを呼び出す必要があります。
-
update_document_properties: 既存のドキュメントのプロパティを、そのクラスを変更することなく更新します。ドキュメントの現在のクラスの有効なプロパティを取得するには、最初にget_class_property_descriptionsを呼び出す必要があります。
-
update_document_class: コンテンツリポジトリ内のドキュメントのクラスを変更します。警告: ドキュメントのクラスを変更すると、新しいクラスに古いクラスと同じプロパティがない場合、プロパティが失われる可能性があります。新しいclass_identifierを取得するには、最初にdetermine_classを呼び出す必要があります。
-
checkin_document: 以前にチェックアウトされたドキュメントをチェックインします。チェックイン時にファイルパスが指定された場合、新しいコンテンツファイルをアップロードできます。
-
checkout_document: ドキュメントを編集用にチェックアウトします。指定されたフォルダパスにドキュメントコンテンツをダウンロードできます。
-
cancel_document_checkout: コンテンツリポジトリ内のドキュメントのチェックアウトをキャンセルし、予約を解除します。
-
get_document_properties: IDまたはパスでコンテンツリポジトリからドキュメントを取得し、そのプロパティを持つドキュメントオブジェクトを返します。
-
get_class_specific_properties_name: ドキュメントのクラス定義に基づいて、ドキュメントのクラス固有のプロパティ名のリストを取得します。システムプロパティと非表示のプロパティはフィルタリングされます。
-
delete_document_version: コンテンツリポジトリ内の特定のドキュメントバージョンを、そのドキュメントIDを使用して削除します。
-
delete_version_series: コンテンツリポジトリ内の特定のドキュメントのバージョンシリーズ全体(すべてのバージョン)を、バージョンシリーズIDを使用して削除します。
フォルダ管理
-
create_folder: 指定された名前、親フォルダ、およびオプションのクラス識別子で、コンテンツリポジトリに新しいフォルダを作成します。
-
delete_folder: IDまたはパスを使用して、リポジトリからフォルダを削除します。
-
unfile_document: ドキュメント自体を削除することなく、フォルダからドキュメントを削除します。
-
update_folder: 既存のフォルダのプロパティを更新します。最初にdetermine_classとget_class_property_descriptionsを呼び出す必要があります。
-
get_folder_documents: フォルダに含まれるドキュメントを取得します。
メタデータ
-
list_root_classes: リポジトリ内の特定のルートクラスのすべてのクラスをリストします。
-
list_all_classes: リポジトリ内の特定のルートクラスのすべてのクラスをリストします。
-
determine_class: 利用可能なクラスとユーザーのメッセージまたはコンテキストドキュメントのコンテンツに基づいて、適切なクラスを決定します。
-
get_class_property_descriptions: 指定されたクラスのすべてのプロパティの詳細な説明を取得します。
検索
-
get_searchable_property_descriptions: 検索操作で使用できるプロパティの説明を取得します。
-
repository_object_search: 指定された条件に基づいて、リポジトリオブジェクトを検索します。
-
lookup_documents_by_name: ドキュメント名とキーワードを照合することで、ドキュメントを検索します。信頼度スコア付きの一致するドキュメントのランク付きリストを返します。ドキュメントの名前の一部を知っているが、正確なIDやパスを知らない場合に便利です。
-
lookup_documents_by_path: フォルダ階層内の位置に基づいて、ドキュメントを検索します。各パスレベルで、キーワードをフォルダ名およびドキュメントの格納名と照合します。ユーザーがパス区切り文字(例: "/Folder1/Subfolder/document")を使用してドキュメントを説明する場合に特に便利です。
注釈
- get_document_annotations: ドキュメントに関連付けられたすべての注釈を取得します。これには、注釈のID、名前、説明テキスト、およびコンテンツ要素が含まれます。
🧪 テスト済み環境
Core Content Services MCP Serverは、以下のMCPクライアントとLLMの組み合わせでテストされています。
- Claude Desktop: Sonnet 4.5、4、3.5およびHaiku 4.5
- Watsonx Orchestrate: Llama-3-2-90b-vision-instruct
他のMCPクライアントとLLMの組み合わせはテストされていませんが、このサーバーで動作する可能性があります。ぜひ試してみてください。
追加のMCPクライアントのセットアップ手順については、以下を参照してください。
- Bob-IDE MCP Server Setup
- VS Code Copilot MCP Server Setup
🚫 MCPクライアントの制限事項
一部のMCPクライアントには、使用できるツールに影響を与える制限があります。以下の表に、既知の互換性問題を示します。
| MCPクライアント |
制限事項 |
影響を受けるツール |
| Watson Orchestrate |
複雑なPydanticクラスを入力としてサポートしていません |
• create_document • update_document_properties • checkout_document • checkin_document • update_folder • repository_object_search |
注意: これらの制限は、MCPサーバー自体ではなく、MCPクライアントの入力処理機能によるものです。
⚙️ セットアップと構成
前提条件
- Python 3.13+
- uv
- macOSの場合:
brew install uv
- Windowsの場合: 上記のリンクを参照
- Content Services GraphQL API (CS-GQL)がインストールされたFileNet Content Platform Engine (CPE)サーバーへのアクセス
- ドキュメントコンテンツの取得機能を使用する場合は、オブジェクトストアにPersistent Text Extractアドオンをインストールする必要があります。
構成
Core Content Services MCP Serverは、FileNet CPEサーバーに接続するためにいくつかの環境変数を必要とします。
必須環境変数
| 環境変数 |
説明 |
デフォルト |
SERVER_URL |
Content Services GraphQL APIエンドポイントURL(必須) |
- |
USERNAME |
認証ユーザー名(必須) |
- |
PASSWORD |
認証パスワード(必須) |
- |
OBJECT_STORE |
オブジェクトストア識別子(必須) |
- |
オプション環境変数
| 環境変数 |
説明 |
デフォルト |
SSL_ENABLED |
SSLが有効になっているかどうか。true、証明書ファイルのパス、またはfalse(本番環境では推奨されません)に設定できます。 |
true |
TOKEN_SSL_ENABLED |
トークンエンドポイントでSSLが有効になっているかどうか。true、証明書ファイルのパス、またはfalse(本番環境では推奨されません)に設定できます。 |
true |
TOKEN_REFRESH |
トークンの更新間隔(秒) |
1800 |
TOKEN_URL |
OAuthトークンURL |
- |
GRANT_TYPE |
OAuthグラントタイプ |
- |
SCOPE |
OAuthスコープ |
- |
CLIENT_ID |
OAuthクライアントID |
- |
CLIENT_SECRET |
OAuthクライアントシークレット |
- |
REQUEST_TIMEOUT |
リクエストのタイムアウト時間(秒) |
30.0 |
POOL_CONNECTIONS |
コネクションプールのコネクション数 |
100 |
POOL_MAXSIZE |
最大プールサイズ |
100 |
CP4BA環境変数
| 環境変数 |
説明 |
デフォルト |
ZENIAM_ZEN_URL |
Zenトークンと交換するためにIAMトークンを送信するZen URL。例: <zen_host_route>/v1/preauth/validateAuth |
- |
ZENIAM_ZEN_SSL_ENABLED |
Zen交換ルートでSSLが有効になっているかどうか。true、証明書ファイルのパス、またはfalse(本番環境では推奨されません)に設定できます。 |
true |
ZENIAM_IAM_URL |
ユーザー/パスワードまたはクライアントID/クライアントシークレットをIAMに送信してIAMトークンを取得するためのIAM URL。例: <iam_host_route>/idprovider/v1/auth/identitytoken |
- |
ZENIAM_IAM_SSL_ENABLED |
IAMルートでSSLが有効になっているかどうか。true、証明書ファイルのパス、またはfalse(本番環境では推奨されません)に設定できます。 |
true |
ZENIAM_IAM_GRANT_TYPE |
IAMグラントタイプ |
- |
ZENIAM_IAM_SCOPE |
IAMスコープ |
- |
ZENIAM_IAM_USER |
グラントタイプがパスワードの場合、IAMユーザーを指定します。 |
- |
ZENIAM_IAM_PASSWORD |
グラントタイプがパスワードの場合、IAMパスワードを指定します。 |
- |
ZENIAM_CLIENT_ID |
グラントタイプがclient_credentialsの場合、IAMクライアントIDを指定します。 |
- |
ZENIAM_CLIENT_SECRET |
グラントタイプがclient_credentialsの場合、IAMクライアントシークレットを指定します。 |
- |
SSL構成のベストプラクティス
SSL構成(SSL_ENABLED、TOKEN_SSL_ENABLED、ZENIAM_ZEN_SSL_ENABLED、およびZENIAM_IAM_SSL_ENABLED)には、3つのオプションがあります。
- システム証明書の使用(本番環境で推奨):
trueに設定して、システムの証明書ストアを使用します。
- カスタム証明書パスの提供: 証明書のファイルパス(例:
/path/to/certificate.pem)に設定します。
- SSL検証の無効化(本番環境では推奨されません):
falseに設定して、SSL検証を無効にします。
セキュリティ警告: SSL検証を無効にする(false)のは、テスト環境でのみ使用する必要があります。本番環境では、常に適切な証明書検証を使用して、安全な通信を確保してください。
認証方法
サーバーは、2つの認証方法をサポートしています。
基本認証
以下の環境変数を設定します。
SERVER_URL=https://your-graphql-endpoint
USERNAME=your_username
PASSWORD=your_password
OBJECT_STORE=your_object_store
SSL_ENABLED=your_path_to_graphql_certificate | true | false
OAuth認証
以下の環境変数を設定します。
SERVER_URL=https://your-graphql-endpoint
USERNAME=your_username
PASSWORD=your_password
TOKEN_URL=https://your-oauth-server/token
GRANT_TYPE=password
SCOPE=openid
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
OBJECT_STORE=your_object_store
Zen/IAM認証
USER/PASSWORDとSSLをすべての外部サーバーに使用する場合のZEN/IAM環境変数の例
SERVER_URL=https://your-graphql-endpoint
SSL_ENABLED=your_path_to_graphql_certificate| true | false
OBJECT_STORE=your_object_store
ZENIAM_ZEN_URL=https://your-zen-exchange-route
ZENIAM_ZEN_SSL_ENABLED=your_path_to_zen_exchange_route_certicate | true | false
ZENIAM_IAM_URL=https://your-IAM-route
ZENIAM_IAM_SSL_ENABLED=your_path_to_IAM_route_certicate | true | false
ZENIAM_IAM_GRANT_TYPE=password
ZENIAM_IAM_SCOPE=openid
ZENIAM_IAM_USER=your_user_name
ZENIAM_IAM_PASSWORD=your_user_password
MCPクライアント/エージェントフレームワークとの統合
Claude Desktopの構成
-
Claude Desktopの設定を開きます。
- macOSの場合: 上部のメニューバーのClaudeメニューをクリックし、Settingsを選択します。
- Windowsの場合: ClaudeアプリケーションからSettingsにアクセスします。
-
Developerタブに移動し、Edit Configをクリックします。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
-
claude_desktop_config.jsonファイルに、以下の構成例のいずれかを追加します。
オプション1: ローカルインストールを使用する場合(リポジトリをクローンした場合)
{
"mcpServers": {
"core-cs-mcp-server": {
"command": "/path/to/your/uvx",
"args": [
"--from",
"/path/to/your/cs-mcp-server",
"core-cs-mcp-server"
],
"env": {
"USERNAME": "your_username",
"PASSWORD": "your_password",
"SERVER_URL": "https://your-graphql-server/content-services-graphql/graphql",
"OBJECT_STORE": "your_object_store"
}
}
}
}
オプション2: GitHubから直接インストールする場合(推奨)
{
"mcpServers": {
"core-cs-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/ibm-ecm/cs-mcp-server",
"core-cs-mcp-server"
],
"env": {
"USERNAME": "your_username",
"PASSWORD": "your_password",
"SERVER_URL": "https://your-graphql-server/content-services-graphql/graphql",
"OBJECT_STORE": "your_object_store"
}
}
}
}
-
Claude Desktopを再起動します。
- 単にウィンドウを閉じるだけでは不十分です。Claude Desktopを停止して再起動する必要があります。
- macOS: Claude > Quit
- Windows: File > Exit
-
利用可能なツールを確認します。
- Claude Desktopで利用可能なすべてのツールを表示するには、以下の手順を行います。
- まず、設定アイコンをクリックすると、次のように表示されます。
- 次に、
core-cs-mcp-serverをクリックすると、すべてのツールが表示されます。
注意: 上記のJSON構成例は、最小限の必要な環境変数のみを示しています。すべての可能な構成オプションの完全なリストについては、上記の環境変数の表を参照してください。
Watson Orchestrate (WxO)の構成
このセクションでは、Core Content Services MCP Serverを使用してIBM watsonx Orchestrateを拡張する方法について説明します。これにより、watsonx Orchestrateはチャットでのユーザーインタラクション中にIBM FileNet Content Managementとやり取りできるようになります。
構成
1. 接続変数の構成
SaaSまたはオンプレミスの提供(UI)の場合
- メインメニューアイコンをクリックします。
- Manage > Connectionsに移動します。
- Add New Connectionをクリックします。
- 接続IDと表示名を入力します。
- Nextをクリックします。
- ここで、ドラフト接続詳細(テスト環境)を構成します。
- 認証タイプのドロップダウンをKey value pairに選択します。
- 必要な各変数を入力します。
SERVER_URL: あなたのContent Services GraphQL APIエンドポイントURL
USERNAME: 認証ユーザー名
PASSWORD: 認証パスワード
OBJECT_STORE: オブジェクトストア識別子
- 必要に応じて、任意の変数を入力します(例:
SSL_ENABLED、TOKEN_REFRESHなど)。
- 完了したら、Nextをクリックします。
- ここで、ライブ接続環境変数を入力します。
- 認証タイプのドロップダウンをKey value pairに選択します。
- 上記と同じ必要な変数を入力します。
- 必要に応じて、任意の変数を入力します。
- 好みの資格情報タイプを選択します。
- Add Connectionをクリックします。
ADK(Application Development Kit)の場合
ADK CLIを使用して接続を作成する場合は、公式ドキュメントを参照してください。
2. エージェントの作成
-
メインメニューアイコンをクリックします。
-
Build > Agent Builderに移動します。
-
All agentsに移動します。
-
**Create agent +**をクリックして、新しいエージェントを追加します。
-
Create from scratchを選択します。
-
Nameを入力します(例: Core Content Services Agent)。
-
Descriptionを入力します(例: This agent enables interaction with FileNet Content Management.)。
-
Createをクリックします。
3. エージェントをCore Content Services MCP Serverで拡張する
-
Toolsetセクションに移動し、**Add tool +**をクリックします。
-
Importをクリックします。
-
Import from MCP serverをクリックします。
-
Add MCP serverをクリックします。
-
Server nameを入力します(空白文字を含まない)(例: core-cs-mcp-server)。
-
必要に応じて、Descriptionを入力します(例: This MCP Server connects to FileNet Content Platform Engine, enabling content management operations.)。
-
Install commandを入力します。
uvx --from git+https://github.com/ibm-ecm/cs-mcp-server core-cs-mcp-server
-
Connectをクリックします。
-
"Connection successful"が表示されたら、Doneをクリックします。
-
有効にするツールのActivation toggleをOnに設定します。
-
以前に作成した接続をこのエージェントに関連付けます。
4. エージェントをデプロイする
5. チャットでエージェントを使用する
-
メインメニューアイコンをクリックします。
-
Chatに移動します。
-
新しく作成したエージェントをクリックします。
例のワークフロー
構成が完了すると、有効にしたツールに応じて、watsonx Orchestrateのチャットで自然言語を使用してFileNetリポジトリとやり取りできます。例えば、以下のようなことができます。
応答でShow Reasoningをクリックすると、実行された操作の詳細を確認できます。
💻 使用方法
サーバーを直接実行する
リポジトリのローカルコピーがある場合、以下のコマンドでサーバーを直接実行できます。
USERNAME=your_username PASSWORD=your_password SERVER_URL=https://your-graphql-server/content-services-graphql/graphql OBJECT_STORE=your_object_store /path/to/your/uvx --from /path/to/your/cs-mcp-server core-cs-mcp-server
AIエージェントとの統合
Core Content Services MCP Serverは、MCPプロトコルをサポートするAIエージェントと統合できます。これにより、AIエージェントは以下のことができます。
- ドキュメントのプロパティにアクセスして取得する
- ドキュメントからテキストを抽出する
- ドキュメントを作成、更新、チェックイン、チェックアウトする
- フォルダとドキュメントの分類を管理する
- 検索を実行する
- ドキュメントの注釈を取得する
例のワークフロー
-
検索と発見
- ユーザーは通常、IDではなく、説明的な情報(名前、コンテンツ、キーワード)から始めます。
- AIエージェントは最初に、検索ツールを使用して関連するオブジェクトを見つけます。
get_searchable_property_descriptionsを使用して、有効な検索プロパティを発見します。
repository_object_searchを使用して、プロパティベースの検索を実行します。
- 検索結果には、後続の操作に必要なオブジェクトIDが含まれます。
-
ドキュメントの取得
- 検索によってオブジェクトIDが取得されると、AIエージェントは以下を取得できます。
- IDを使用してドキュメントのプロパティ
- バージョン履歴
- テキストコンテンツ(Persistent Text Extractアドオンがインストールされている必要があります)
- 注釈
-
ドキュメントの作成
ユーザーは、AIエージェントに特定のプロパティとコンテンツで新しいドキュメントを作成するように依頼できます。
-
ドキュメントの更新
- 検索によってドキュメントが特定されると、AIエージェントは以下を行うことができます。
- IDを使用してドキュメントをチェックアウトする
- プロパティまたはコンテンツを更新する
- ドキュメントをチェックインする
-
フォルダ操作
- フォルダは、パスまたは検索結果のIDによって特定できます。
- ドキュメントは、ドキュメントIDとフォルダIDの両方を使用して、ファイル/アンファイルできます。
注意: 特定のオブジェクトを変更またはアクセスするほとんどの操作には、オブジェクトIDが必要です。これは通常、最初に検索操作を行って取得します。このワークフローパターンにより、ユーザーは技術的な識別子を事前に知る必要なく、オブジェクトを意味のある属性で操作できます。
📄 ライセンス
詳細については、LICENSEファイルを参照してください。
Licensed Materials - Property of IBM (c) Copyright IBM Corp. 2019,2025 All Rights Reserved.
US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
DISCLAIMER OF WARRANTIES :
Permission is granted to copy and modify this Sample code, and to distribute modified versions provided that both the
copyright notice, and this permission notice and warranty disclaimer appear in all copies and modified versions.
THIS SAMPLE CODE IS LICENSED TO YOU AS-IS. IBM AND ITS SUPPLIERS AND LICENSORS DISCLAIM ALL WARRANTIES, EITHER
EXPRESS OR IMPLIED, IN SUCH SAMPLE CODE, INCLUDING THE WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL IBM OR ITS LICENSORS OR SUPPLIERS BE LIABLE FOR
ANY DAMAGES ARISING OUT OF THE USE OF OR INABILITY TO USE THE SAMPLE CODE, DISTRIBUTION OF THE SAMPLE CODE, OR
COMBINATION OF THE SAMPLE CODE WITH ANY OTHER CODE. IN NO EVENT SHALL IBM OR ITS LICENSORS AND SUPPLIERS BE LIABLE
FOR ANY LOST REVENUE, LOST PROFITS OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, EVEN IF IBM OR ITS LICENSORS OR SUPPLIERS HAVE
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.