内容
# WebCenter 内容管理服务器
[](LICENSE)
[](https://modelcontextprotocol.io)
适用于 Oracle WebCenter 内容管理的模型上下文协议服务器。为 **代理团队** 构建:确定性、范围门控、可审计,并围绕 MCP 最佳实践所要求的综合工具表面而构建。
> **v2.0** 是对旧版 v1 代码的完全重写。有关升级演练,请参见 [`docs/MIGRATING-FROM-V1.md`](docs/MIGRATING-FROM-V1.md)。
## 您将获得
- **16 个整合工具** + 工作流工具框架(取代 v1 的 59 个端点形工具)。请参见生成的 [`docs/api/ENDPOINTS.md`](docs/api/ENDPOINTS.md)。
- **三个角色包提示** — 管理员、审计员、迁移员 — 预先塑造代理以适应常见工作流。
- **OAuth 2.1 无处不在**:MCP-RS 入站(RFC 9728 + RFC 8707 受众绑定),WCC OAuth 出站(PKCE + 旋转刷新),适用于本地 WCC 的基本身份验证回退。
- **可流式传输的 HTTP 传输**,根据 MCP 2025-06-18 规范,以及适用于桌面客户端的标准输入/输出。
- **四个分发渠道** 在发布管道中连接 - npm、Claude Desktop Extension (DXT)、Electron 应用程序、签名多架构 Docker 镜像(发布时发布)。
- **审计日志** (stderr JSON 行)记录每个工具调用、令牌验证、同意决策和传输拒绝。
- **531 个测试** 跨单元/集成/架构/安全/评估项目。架构防护禁止重复调度增长,并禁止捆绑任何 LLM SDK。
## 快速入门
> **发布前。** `v2.0.1` 已标记但 **尚未发布** 到 npm、GitHub 容器注册表或发布页面。今天可以 **从源代码** 运行;npm / DXT / Electron / Docker 通道在发布发布时亮起。
### 从源代码运行
```sh
git clone https://github.com/JohnRSim/webcenter-content-mcp-server.git
cd webcenter-content-mcp-server
pnpm install
pnpm build
```
将 Claude Desktop 指向构建的入口点:
```jsonc
// macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
// Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"webcenter": {
"command": "node",
"args": ["/absolute/path/to/webcenter-content-mcp-server/dist/bin/wcc-mcp.js"],
"env": {
"WCC_BASE_URL": "https://wcc.example.com/documents/wcc/api/v1.1",
"WCC_USER": "svc",
"WCC_PASSWORD": "...",
},
},
},
}
```
或者直接运行可流式传输的 HTTP 传输 — `node dist/bin/wcc-mcp.js --http`
(监听 `127.0.0.1:3999`)。
### 一旦发布 `v2.0.1`
发布管道(`.github/workflows/release.yml`) 生成四个渠道:
- **npm** — `npx -y webcenter-content-mcp-server` 作为 Claude Desktop `command`。
- **DXT** — 将 `wcc-mcp.dxt` 包(GitHub 发布资产)安装到 Claude Desktop。
- **Electron 应用程序** — 签名的桌面安装程序(Windows / macOS / Linux)在发布页面。
- **Docker** — `ghcr.io/johnrsim/wcc-mcp-server` 用于托管部署。
每个路径的完整逐步指南 — 配置、身份验证、故障排除 — 在
**[`docs/USAGE.md`](docs/USAGE.md)** 中。参考部署清单和操作员运行手册:[`deploy/`](deploy/),[`docs/operators/`](docs/operators/)。
## 工具表面(摘要)
| 工具 | 目的 |
| ------------------------------ | ----------------------------------------------------------------------------------------------- |
| `wcc_doc_search` | 全文 + 元数据搜索(自动将纯文本包装在 `<qsch>` 中)。 |
| `wcc_doc_get` | 按 `dDocName` 或 `dID` 获取元数据;简洁或详细。 |
| `wcc_doc_download` | 按修订版流式传输文档;尊重 `PathPolicy`。 |
| `wcc_doc_write` | 创建、替换或更新元数据(区分 `action`)。 |
| `wcc_doc_lifecycle` | 删除、签出、反向签出、过期。 |
| `wcc_doc_storage` | 存储层更新 + 从存档恢复。 |
| `wcc_doc_capabilities` | 测试当前凭证的允许操作。 |
| `wcc_folder_browse` | 列出子项、列出文件、获取功能。 |
| `wcc_folder_write` | 创建 / 移动 / 删除文件夹。 |
| `wcc_public_links` | 公共链接 CRUD。 |
| `wcc_application_links` | 应用程序链接 CRUD。 |
| `wcc_workflow` | 工作流 CRUD + 批准/拒绝。 |
| `wcc_taxonomy` | 分类 + 类别管理。 |
| `wcc_attachment` | 附件列表 / 添加 / 获取 / 删除。 |
| `wcc_bulk_job` | 启动 / 状态 / 取消批量作业。 |
| `wcc_system` | 文档类型、配置信息、元信息、数据源查询。 |
| `wcc_workflow_bulk_reclassify` | **工作流工具** — 将元数据补丁应用于许多文档,具有部分故障 + resumeToken。 |
请参见 [`docs/api/ENDPOINTS.md`](docs/api/ENDPOINTS.md) 以获取每个输入/输出模式、范围、注释和示例。
## 架构
```
src/
bin/wcc-mcp.ts CLI 入口(捆绑到 dist/bin/wcc-mcp.js)
transports/ 标准输入/输出 + 可流式传输的 HTTP — 单一调度路径
server/ 构建服务器、调度器、上下文工厂
registry/ 工具 + 资源 + 提示注册表
tools/<domain>/ 16 个整合工具定义
prompts/ 角色包提示(管理员 / 审计员 / 迁移员)
wcc/ WCC HTTP 客户端 + 按资源模块
auth/
basic/ 基本身份验证策略
mcp-rs/ OAuth 资源服务器(第 4a 阶段)
wcc-oauth/ 对 IDCS/Keycloak 的 OAuth 客户端(第 4b 阶段)
lib/
workflow/ 工作流框架(引擎 + resumeToken)
sampling/ MCP 采样原语 + 预算
elicitation/ MCP 引发原语 + 验证
errors/ 20 码稳定错误分类法
logger/ 仅标准错误日志 + 减少
audit/ 结构化审计日志 + 水槽
path-policy/ 标准输入/输出 / Electron / 托管
profiles/ 多租户配置文件管理器
ssrf-guard/ 私有 IP + DNS 重新绑定防御
ratelimit/ 令牌桶 + Express 中间件
config/ Zod 配置模式
electron/ GUI 主机(在第 6 阶段重写)
deploy/hosted/ Dockerfile + compose + Caddyfile + nginx.conf
```
详细架构撰写:[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。决策记录:[`docs/adr/`](docs/adr/)。
## 关键规则
这三个规则由代码 + 架构防护强制执行。它们是不可商量的。
1. **绝不写入标准输出到标准输入模式。** 标准输入/输出是 MCP 传输通道。诊断仅限于标准错误。ADR 0001。
2. **无服务器端 LLM 依赖。** 服务器从不捆绑 `@anthropic-ai/sdk`、`openai` 等。多步骤推理通过 `sampling/createMessage` 生活在 MCP 客户端。ADR 0003 + `tests/architecture/no-server-llm.test.ts`。
3. **单一调度路径。** v1 标准输入/输出/HTTP 复制陷阱在结构上是不可能的 — 两个传输都通过 `src/server/dispatcher.ts:dispatchToolCalls`。`tests/architecture/no-duplicate-dispatch.test.ts` 处的 AST 防护。
## 命令
```sh
pnpm install # 使用 pnpm 9;npm 支持但 lockfile 为 pnpm
pnpm typecheck # tsc --noEmit
pnpm lint # eslint 搭配 typescript-eslint
pnpm test # 完整的 vitest 套件(单元/集成/架构/安全/评估)
pnpm test -- --project unit # 单个项目
pnpm test:electron # Playwright 渲染器-IPC 回归(在 Linux CI 上需要 xvfb)
pnpm bench # tinybench 微基准(冷启动、调度器、审计吞吐量)
pnpm build # tsup 捆绑 → dist/
pnpm sbom # CycloneDX SBOM → dist/sbom.json
pnpm dxt:pack # DXT 包 → dist/wcc-mcp.dxt
pnpm docs:generate # 从注册表重新生成 docs/api/
pnpm docs:check # CI 门控:docs/api/ 过时时失败
```
## 配置
CLI 使用的环境变量:
| 变量 | 必需 | 目的 |
| ------------------------------------------------------- | ----------- | --------------------------------------------------------------------- |
| `WCC_BASE_URL` | 是 | WCC REST API 基本 URL。 |
| `WCC_USER` / `WCC_PASSWORD` | 是(基本) | 基本身份验证凭证。 |
| `WCC_MCP_PROFILE` | 否 | 配置文件 ID(默认 `default`)。 |
| `MCP_PORT` | 否 | HTTP 端口(默认 `3999`)。 |
| `MCP_BIND_HOST` | 否 | HTTP 绑定(默认 `127.0.0.1`)。 |
| `MCP_RS_ENABLED` | 否 | `1` 在 `/mcp` 上启用 OAuth 资源服务器门控。 |
| `MCP_RS_ISSUER` / `MCP_RS_AUDIENCE` / `MCP_RS_JWKS_URI` | 当 MCP-RS | 参见 [`docs/operators/oauth-setup.md`](docs/operators/oauth-setup.md)。 |
| `MCP_PATH_POLICY` | 否 | `stdio`(默认)、`electron` 或 `hosted`。 |
| `WCC_MCP_LEGACY_TOOL_NAMES` | 否 | `1` 激活 v1 名称伪影(在 v2.1.0 中删除)。 |
| `WCC_MCP_RESUME_SECRET` | 推荐 | 用于 HMAC 工作流恢复令牌的 32 字节机密。 |
## 许可证
双重许可:
- **GPL-3.0-or-later** 适用于开放使用。参见 [`LICENSE`](LICENSE)。
- **商业许可证** 可从 Fishbowl Solutions 获得。参见 [`LICENSING.md`](LICENSING.md)。
## 安全
参见 [`SECURITY.md`](SECURITY.md) 以获取协调披露运行手册和包含的威胁范围。每个签名文物的验证命令也列出在那里。
## 致谢
由 Anthropic 构建 [模型上下文协议](https://modelcontextprotocol.io)。工具设计遵循公共 MCP 最佳实践指南;身份验证遵循 OAuth 2.1 + RFC 7636(PKCE)+ RFC 8707(资源指示符)+ RFC 9728(受保护资源元数据)。
连接信息
猜你喜欢
暂无推荐服务器