WeKnora MCP Dispatch
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WeKnora MCP DispatchFind documents about MCP authentication in my knowledge base"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WeKnora MCP Dispatch
面向 WeKnora v0.7.1 的多用户 MCP 网关。一个 Streamable HTTP MCP 服务实例可以接收多个客户端请求,并以客户端提交的 WeKnora API Key 决定其可访问的空间和知识库。
本项目基于 WeKnora MCP Server 改造,重点解决单个服务端静态 API Key 无法实现客户端权限隔离的问题。
鉴权链路
MCP client
├─ 可选:Cloudflare Access Service Token
└─ Authorization: Bearer <WeKnora API Key>
↓
WeKnora MCP Dispatch
├─ 使用只读 /knowledge-bases 请求验证 API Key
├─ 将 Key 绑定到当前异步请求上下文
└─ 以 X-API-Key 转发到 WeKnora API
↓
WeKnora v0.7.1不同客户端不共享静态 WeKnora Key。请求级 Key 使用 Python ContextVar
隔离,即使请求重叠执行,也不会把一个客户端的身份转发给另一个客户端。
Related MCP server: mcp-uni
安全特性
公网 MCP 只接受
Authorization: Bearer <WeKnora API Key>。不接受外部
X-API-Key作为第二条认证通道。API Key 通过 WeKnora 的只读接口验证。
验证缓存只保存 SHA-256 指纹,不保存原始 Key。
缓存条目数、TTL 和验证并发均有上限。
上游临时限流或不可用返回
503,不会误判 Key 永久无效。MCP_READ_ONLY=true时只注册/允许知识库查询工具。MCP_HTTP_PATH=/mcp时仅接受/mcp与/mcp/。动态 Key 模式不会回退到
WEKNORA_API_KEY静态环境变量。
只读工具
生产只读模式允许:
list_knowledge_basesget_knowledge_basehybrid_searchlist_knowledgeget_knowledgelist_chunkslist_agentsget_agentwiki_searchwiki_read_pagewiki_index_view
Docker 运行
docker build -t weknora-mcp-dispatch:0.1.0 .
docker run --rm \
--name weknora-mcp-dispatch \
-p 127.0.0.1:18082:8000 \
-e WEKNORA_BASE_URL=http://app:8080/api/v1 \
-e MCP_AUTH_MODE=weknora_api_key \
-e MCP_READ_ONLY=true \
-e MCP_HTTP_PATH=/mcp \
-e MCP_API_KEY_VALIDATION_TTL_SECONDS=60 \
-e MCP_API_KEY_VALIDATION_CACHE_MAX_ENTRIES=2048 \
-e MCP_API_KEY_VALIDATION_MAX_CONCURRENCY=16 \
-e WEKNORA_API_KEY= \
-e MCP_SERVER_AUTH_TOKEN= \
weknora-mcp-dispatch:0.1.0如使用 WeKnora 官方 Compose,可参考
production.request-scoped.override.yml
为现有 mcp 服务启用请求级鉴权。
客户端请求头
直接访问 MCP:
Authorization: Bearer <WEKNORA_SPACE_API_KEY>如果外层使用 Cloudflare Access Service Token:
CF-Access-Client-Id: <CLOUDFLARE_SERVICE_TOKEN_CLIENT_ID>
CF-Access-Client-Secret: <CLOUDFLARE_SERVICE_TOKEN_CLIENT_SECRET>
Authorization: Bearer <WEKNORA_SPACE_API_KEY>Cloudflare 负责公网入口鉴权,WeKnora API Key 负责用户/空间权限控制;两层可以同时启用。
WorkBuddy 配置示例
WorkBuddy 支持用户级 ~/.workbuddy/mcp.json 和项目级
<项目目录>/.workbuddy/mcp.json。以下示例通过环境变量保存凭据:
{
"mcpServers": {
"weknora": {
"type": "http",
"url": "https://kb.example.com/mcp",
"headers": {
"Authorization": "Bearer ${WEKNORA_SPACE_API_KEY}",
"CF-Access-Client-Id": "${CF_ACCESS_CLIENT_ID}",
"CF-Access-Client-Secret": "${CF_ACCESS_CLIENT_SECRET}"
}
}
}
}将 url 替换为实际 MCP 地址,并在启动 WorkBuddy 前设置三个环境变量。
如果没有启用 Cloudflare Access Service Token,删除两个 CF-Access-* 请求头即可。
保存配置后,在 WorkBuddy 的 MCP 页面确认服务状态为绿色。
参考:WorkBuddy MCP 配置说明、 HTTP MCP 配置字段。
Codex 配置示例
在 ~/.codex/config.toml 中加入:
[mcp_servers.weknora]
url = "https://kb.example.com/mcp"
bearer_token_env_var = "WEKNORA_SPACE_API_KEY"
env_http_headers = { "CF-Access-Client-Id" = "CF_ACCESS_CLIENT_ID", "CF-Access-Client-Secret" = "CF_ACCESS_CLIENT_SECRET" }Codex 会从 WEKNORA_SPACE_API_KEY 读取 Bearer Token,并从另外两个环境变量
生成 Cloudflare Access 请求头。未启用 Cloudflare Access Service Token 时,删除
env_http_headers 这一行即可。设置环境变量后重启 Codex,再通过 codex mcp list
确认服务已加载。
不建议把 WeKnora API Key 或 Cloudflare Client Secret 明文提交到配置仓库。
环境变量
变量 | 推荐值 | 说明 |
|
| WeKnora API 地址 |
|
| 启用请求级 WeKnora Key |
|
| 禁止写入类 MCP 工具 |
|
| 对外 MCP 路径 |
|
| Key 验证缓存 TTL |
|
| 最大缓存指纹数 |
|
| 最大并发验证数 |
|
| 验证 WeKnora HTTPS 证书 |
请求级模式下应保持 WEKNORA_API_KEY 和 MCP_SERVER_AUTH_TOKEN 为空。
HTTP 结果
状态码 | 含义 |
| 缺少 WeKnora API Key |
| Key 无效或不可用于 WeKnora API |
| 请求路径不在配置的 MCP 精确路径内 |
| WeKnora Key 验证暂时不可用或并发受限 |
本地测试
python -m pip install -e ".[test]"
pytest测试覆盖缺失/无效 Key、外部 X-API-Key 拒绝、重叠请求身份隔离、
缓存不保存原始 Key、临时限流、Streamable HTTP 任务上下文继承和精确路径限制。
兼容模式
项目仍保留上游 shared_secret 模式,便于兼容旧客户端;多用户生产部署应使用
MCP_AUTH_MODE=weknora_api_key。
上游与许可证
本项目基于 WeKnora MCP Server 及其 MIT 许可代码改造。原始项目资料和兼容说明 保留在仓库文档中;本仓库的生产入口重点面向 WeKnora v0.7.1 多用户派发场景。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA minimal, containerized MCP server that exposes a Streamable HTTP transport with API key authentication, allowing secure access to MCP endpoints.Last updated
- Alicense-qualityCmaintenanceA universal MCP server that acts as a unified gateway for dynamically connecting and managing multiple MCP servers via a single HTTP endpoint.Last updated156MIT
- Alicense-qualityBmaintenanceExposes LLM Wiki desktop capabilities via Streamable HTTP transport for MCP clients, enabling project listing, file reading, search, and knowledge graph queries through a secure API.Last updatedMIT
- Flicense-qualityBmaintenanceBridges stdio Model Context Protocol (MCP) servers to MCP Streamable HTTP behind a single gateway, enabling multi-tenant, multi-user deployment with per-tenant environment variables via HTTP headers.Last updated
Related MCP Connectors
Remote ChromaDB vector database MCP server with streamable HTTP transport
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mwe-support/weknora-mcp-dispatch'
If you have feedback or need assistance with the MCP directory API, please join our Discord server