#3351·WeKnora

[Feature]: MCP Server 支持多个 API Key,实现按 Key 区分知识库访问权限

Author: junkai-liCreated Sep 17, 2026Updated Sep 17, 2026
Labelsenhancement

Affected Component

Backend Service & API

Problem Description

当前 MCP Server 只有一个全局的 WEKNORA_API_KEY:

WEKNORA_API_KEY = os.getenv("WEKNORA_API_KEY", "")
client = WeKnoraClient(WEKNORA_BASE_URL, WEKNORA_API_KEY)

这意味着所有通过该 MCP Server 进来的调用,都用同一个 key、同一套知识库权限,无法区分。

但 WeKnora 的 API Key 本身是支持范围(scope)控制的。我希望在 MCP 这一层能配置多个 key,让不同的 key 拥有不同的知识库访问权限——比如 A key 只能访问知识库 X,B key 只能访问知识库 Y,从而对不同的 MCP 调用方做数据隔离。目前单 key 的写法做不到这一点。

Proposed Solution

希望 MCP Server 支持配置多个 WEKNORA_API_KEY,并按 key 决定其可访问的知识库范围:

  1. 支持多 key 配置(例如逗号分隔,或映射形式 key->允许的知识库列表)。
  2. 请求进来时,根据调用方使用的 key 选择对应的权限范围,只能访问该 key 被授权的知识库;访问未授权知识库时返回明确的权限错误。
  3. 向后兼容现有单 key 配置。

核心诉求就是:不同 key = 不同的知识库访问权限,实现 MCP 层的数据隔离。 目前只能为每种权限各起一个 MCP Server 实例(各自配一个 key),再让不同调用方连不同实例,部署和维护成本高。

Alternatives

相关代码:

  • mcp-server/weknora_mcp_server.py: WEKNORA_API_KEY = os.getenv("WEKNORA_API_KEY", "")
  • mcp-server/weknora_mcp_server.py: client = WeKnoraClient(WEKNORA_BASE_URL, WEKNORA_API_KEY)(_request 中注入 X-API-Key)

Impact

My team or a small group

Use Case

Additional Information

No response

Confirmation

  • I have searched existing issues and confirmed this is a new request
  • I understand this request may need discussion and evaluation