IBM核心内容服务MCP服务器
概述
Core Content Services MCP Server提供了一个标准化的接口,使AI模型能够使用IBM FileNet Content Manager(FNCM)功能。此MCP服务器使您能够:
- 通过AI代理管理存储在FNCM中的文档,包括文档创建和删除
- 对文档执行更新,如签入、签出和属性更新
- 搜索文档和文件夹等对象
- 管理文件夹和文件夹中的文件/取消文件
- 管理文档类、文件夹类等
______________________________________________________________________
工具列表
核心内容服务MCP服务器提供以下工具用于与FileNet内容平台引擎(CPE)交互:
文档管理
- get_document_versions:检索文档的版本历史记录,包括每个版本的主版本号和次版本号以及文档ID。
- get_document_text_extract:通过检索文档的文本提取注释从文档中提取文本内容。如果发现多个文本提取,则将它们连接起来。 注: 此功能要求在对象存储中安装持久文本提取插件。看 先决条件 有关更多详细信息,请参阅第节。
- 创建_文档:在内容存储库中创建具有指定属性的新文档。如果提供了文件路径,则可以将文件作为文档内容上传。需要首先调用determined_class和get_ass_property_descriptions。
- update_document_properties:更新现有文档的属性,而不更改其类。需要首先调用get_ass_property_descriptions来获取文档当前类的有效属性。
- update_document_class:更改内容存储库中文档的类。 警告: 如果新类的属性与旧类不同,则更改文档的类可能会导致属性丢失。需要首先调用determined_class来获取新的class_identifier。
- checkindocument:签入以前签出的文档。如果提供了文件路径,则可以在签入期间上传新的内容文件。
- checkout_document:签出文档进行编辑。可以将文档内容下载到指定的文件夹路径(如果提供)。
- cancel_document_checkout:取消内容存储库中的文档签出,释放保留。
- get_document_properties:按ID或路径从内容存储库中检索文档,返回文档对象及其属性。
- get_class_specific_properties_name:根据文档的类定义检索文档的类特定属性名列表。过滤掉系统属性和隐藏属性。
- delete_document_version:使用文档ID删除内容存储库中的特定文档版本。
- 删除版本系列:使用版本系列ID删除内容存储库中的整个版本系列(文档的所有版本)。
文件夹管理
- 创建文件夹:在内容存储库中创建一个具有指定名称、父文件夹和可选类标识符的新文件夹。
- 删除文件夹:使用文件夹的ID或路径从存储库中删除文件夹。
- unfille_document:从文件夹中删除文档,但不删除文档本身。
- update_folder:更新现有文件夹的属性。需要首先调用determined_class和get_ass_property_descriptions。
- get_folder_documents:获取文件夹中包含的文档。
元数据
- list_root_classes:列出根类。
- list_all_classes:列出存储库中特定根类的所有类。
- 确定类别:根据可用类和用户消息或上下文文档的内容确定适当的类。
- get_class_property_descriptions:检索指定类的所有属性的详细描述。
搜索
- get_searchable_property_descriptions:检索可用于搜索操作的属性描述。
- 仓库_对象_搜索:根据指定条件搜索存储库对象。
- lookup_documents_by_name:通过将关键字与文档名称进行匹配来搜索文档。返回具有置信度得分的匹配文档的排名列表。当您知道文档名称的一部分,但不知道其确切的ID或路径时,这很有用。
- lookup_documents_by_path:根据文档在文件夹层次结构中的位置搜索文档。在每个路径级别将关键字与文件夹名称和文档包含名称进行匹配。当用户使用路径分隔符(例如“/Folder1/Subfolder/document”)描述文档时特别有用。
注释
- get_document_注释:检索与文档关联的所有注释,包括其ID、名称、描述性文本和内容元素。
______________________________________________________________________
测试环境
核心内容服务MCP服务器已使用以下MCP客户端和LLM组合进行了测试:
- 克劳德桌面版十四行诗4.5、4、3.5和俳句4.5
- 沃森管弦乐队:Llama-3-2-90b-视觉结构体
虽然其他MCP客户端和LLM组合尚未经过测试,但它们可能适用于此服务器。我们鼓励您自己进行实验和验证。
有关其他MCP客户端的设置说明,请参阅:
MCP客户端限制
一些MCP客户端具有影响可以使用哪些工具的限制。下表显示了已知的兼容性问题:
| MCP客户端 | 限制 | 受影响的工具 |
|---|---|---|
| Watson Orchestrate | 不支持复杂的Pydantic类作为输入。因此,您将无法创建或修改文档或文件夹。您仅限于查看操作。 | • create_document |
• update_document_properties • checkout_document • checkin_document • update_folder • repository_object_search | |Watson Orchestrate |代理尝试调用MCP工具时出现零星的“无效工具调用对象”错误|• create_document • checkin_document • checkout_document • get_document_versions • repository_object_search |
注: 这些限制是由于MCP客户端的输入处理能力造成的,而不是MCP服务器本身。
______________________________________________________________________
设置和配置
先决条件
- 在macOS上: brew install uv - 在Windows上:请参阅上面的链接
- 访问已安装内容服务GraphQL API(CS-GQL)的FileNet CPE服务器
- 持久文本提取插件 如果要使用文档内容检索功能,则必须在对象存储中安装
- 此插件允许从文档中提取和存储文本内容 - 如果没有这个插件 get_document_text_extract 工具不会返回文档内容 - 有关安装说明,请参阅 IBM关于安装持久文本插件的文档
配置
Core Content Services MCP服务器需要几个环境变量才能连接到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 |
LOG_LEVEL | 服务器的日志记录级别。有效值: DEBUG, INFO, WARNING, ERROR, CRITICAL | INFO |
用于业务自动化环境变量的Cloud Pak
| 环境变量 | 描述 | 默认值 |
|---|---|---|
ZENIAM_ZEN_URL | Zen url,用于将IAM令牌发送到Zen令牌进行交换,例如:\/v1/preauth/validateAuth | - |
ZENIAM_ZEN_SSL_ENABLED | Zen交换路由是否启用了SSL。可以设置为 true,证书文件的路径,或 false (不建议用于生产) | true |
ZENIAM_IAM_URL | IAM url,用于向IAM发送用户/pwd或客户端_id/客户端_secret以获取IAM令牌,例如:\/idprovider/v1/auth/indentitytoken | - |
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),您有三个选择:
- 使用系统证书(推荐用于生产):设置为
true使用系统的证书存储。
- 提供自定义证书路径:设置为证书的文件路径(例如。,
/path/to/certificate.pem).
- 禁用SSL验证(不建议用于生产):设置为
false禁用SSL验证。
安全警告:禁用SSL验证(false)应仅在测试环境中使用。对于生产部署,始终使用适当的证书验证来确保安全通信。身份验证方法
服务器支持三种身份验证方法:
基本认证
设置以下环境变量:
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 | falseOAuth身份验证
设置以下环境变量:
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_storeZen/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桌面配置
- 打开克劳德桌面设置:
- 在macOS上,单击顶部菜单栏中的Claude菜单,然后选择 设置. - 在Windows上,访问 设置 来自Claude应用程序。 Screenshot showing Settings
- 导航至 开发者 选项卡并单击 编辑配置:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %APPDATA%\Claude\claude_desktop_config.json Screenshot showing "Edit Config"
- 将以下配置示例之一添加到 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/ibm-content-services-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: - 在macOS上:Claude>退出 - 在Windows上:文件>退出
- 检查可用工具:
- 要查看Claude Desktop中的所有可用工具,请按以下步骤操作: - 首先单击设置图标,您应该看到: Screenshot showing MCP Servers - 然后单击 core-cs-mcp-server,您应该看到所有工具: Screenshot showing Claude tools
注: 上面的JSON配置示例仅显示了所需的最小环境变量。有关所有可能配置选项的完整列表,请参阅上面的环境变量表。
Watson编排(WxO)配置
本节介绍如何使用核心内容服务MCP服务器增强IBM watsonx Orchestrator,使watsonx Orchestrate能够在聊天中的用户交互期间与IBM FileNet内容管理进行交互。
配置
1.配置连接变量
对于SaaS或本地产品(UI):
- 单击主菜单图标
- 导航至 管理>连接
- 点击 添加新连接
- 输入连接ID和显示名称
- 点击 下一步
- 现在,您将配置草稿连接详细信息(测试环境)
- 选择要使用的身份验证类型下拉列表 以键值对 - 输入每个必需的变量: - SERVER_URL:您的Content Services GraphQL API终结点URL - USERNAME:身份验证用户名 - PASSWORD:身份验证密码 - OBJECT_STORE:对象存储标识符 - 根据需要输入任何可选变量(例如。, SSL_ENABLED, TOKEN_REFRESH等等) - 点击 下一步 完成后
- 现在,您将输入实时连接环境变量
- 选择要使用的身份验证类型下拉列表 以键值对 - 输入与上述相同的必需变量 - 根据需要输入任何可选变量 - 选择首选凭据类型 - 点击 添加连接
对于ADK(应用程序开发工具包):
要使用ADK CLI创建连接,请参阅 官方文件.
2.创建代理
- 单击主菜单图标
- 导航至 构建>代理构建器
- 导航至 所有代理商
- 点击 创建代理+ 添加新代理
- 选择 从头开始创建
- 输入一个 名字 (例如。,
Core Content Services Agent)
- 输入一个 描述 (例如。,
This agent enables interaction with FileNet Content Management.)
- 点击 创建
3.用核心内容服务MCP服务器增强代理
- 导航至 工具集 部分,单击 添加工具+
- 点击 导入
- 点击 从MCP服务器导入
- 点击 添加MCP服务器
- 输入一个 服务器名称 没有任何空格字符(例如。,
core-cs-mcp-server)
- 可选择输入 描述 (例如。,
This MCP Server connects to FileNet Content Platform Engine, enabling content management operations.)
- 输入一个 安装命令:
uvx --from git+https://github.com/ibm-ecm/ibm-content-services-mcp-server core-cs-mcp-server- 点击 连接
- 如果您看到“连接成功”,请单击 完成
- 设置 激活切换 到 开 对于您要启用的工具
- 将您之前创建的连接与此代理相关联
4.部署代理
- 点击 部署
- 在弹出窗口中,单击 部署 再次
5.让代理在聊天中使用
- 单击主菜单图标
- 导航至 聊天
- 单击新创建的代理
工作流示例
配置后,您可以通过watsonx Orchestrate聊天中的自然语言与FileNet存储库进行交互,具体取决于您启用的工具。例如:
- “查找文档标题中包含pdf的所有文档”
- “创建一个名为Project Z的新文件夹”
点击 显示推理 在任何响应中查看所执行操作的详细信息。
______________________________________________________________________
用法
直接运行服务器
如果您有存储库的本地副本,则可以直接使用以下命令运行服务器:
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代理集成
核心内容服务MCP服务器可以与支持MCP协议的AI代理集成。这允许AI代理:
- 访问和检索文档属性
- 从文档中提取文本
- 创建、更新、签入和签出文档
- 管理文件夹和文档分类
- 执行搜索
- 获取文档注释
工作流示例
- 搜索和发现:
- 用户通常从描述性信息(名称、内容、关键字)而不是ID开始 - AI Agent首先使用搜索工具来定位相关对象: - get_searchable_property_descriptions 发现有效的搜索属性 - repository_object_search 用于基于属性的搜索 - 搜索结果包括后续操作所需的对象ID
- 文献检索:
- 通过搜索获得对象ID后,AI Agent可以检索: - 使用ID的文档属性 - 版本历史 - 文本内容(需要安装持久文本提取插件) - 注释
- 文档创建:
用户可以要求AI Agent创建具有特定属性和内容的新文档。
- 文档更新:
- 通过搜索识别文档后,AI Agent可以: - 使用文档ID查看文档 - 更新属性或内容 - 将文档重新签入
- 文件夹操作:
- 文件夹可以通过路径或搜索结果中的ID进行标识 - 文档可以使用文档和文件夹ID进行归档/取消归档
注: 大多数修改或访问特定对象的操作都需要对象ID,通常首先通过搜索操作获得。这种工作流模式确保用户可以通过对象的有意义属性来处理对象,而不需要他们预先知道技术标识符。
______________________________________________________________________
许可证
看 许可证 文件以获取详细信息。
# Copyright contributors to the IBM Core Content Services MCP Server project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.______________________________________________________________________
