关于 MediaWiki MCP Server
MediaWiki MCP Server 让 LLM 客户端通过标准工具读取和管理 MediaWiki 网站。它支持配置多个 wiki、认证写入,并按 wiki 扩展提供结构化数据查询工具。
主要功能
- 01读取页面、历史和修订
- 02搜索页面及分类成员
- 03创建、编辑和管理页面
- 04上传及更新文件
- 05支持扩展专用查询工具
适用场景
- 01检索 wiki 页面和近期变更
- 02编辑页面或上传文件
- 03查询 Wikibase、Cargo 或 Semantic MediaWiki 数据
MCP 相关
该项目本身是 MCP 服务,向客户端提供 MediaWiki 页面读取、搜索、编辑、文件操作及站点管理工具。它还为每个配置的 wiki 发布资源,并可按已安装扩展提供额外工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
30收录的工具列表 · 更新于 6 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| wiki | string | 否 | 目标 wiki,可使用 mcp://wikis/ 资源中的键(例如 en.wikipedia.org),或完整的 mcp://wikis/ URI。省略则使用默认 wiki。 |
| title | string | 是 | Wiki 页面标题 |
| content | enum | 否 | 要返回的内容类型source | html | none |
| section | integer | 否 | 章节编号(0 = 导语;1..N = 标题章节)。将内容范围缩小到一个章节。 |
| metadata | boolean | 否 | 是否在响应中包含元数据(页面 ID、修订信息、大小、章节大纲) |
详细介绍
MediaWiki MCP Server
一个 MCP(Model Context Protocol)服务,使大模型(LLM)客户端能够与任意 MediaWiki wiki 交互。
功能
工具
所有操作 wiki 的工具都接受可选的 wiki 参数,用于指定要操作的 wiki(wiki 管理和 OAuth 工具除外)——传入 wiki 键(例如 en.wikipedia.org)或完整的 mcp://wikis/{wikiKey} URI。省略此参数则使用已配置的默认 wiki(参见配置)。每个工具响应都会报告此次调用所针对的 wiki。每个成功响应都会在 content 中以文字形式、在 structuredContent 中以 JSON 形式提供有效负载;参见响应渠道。
页面读取
| 名称 | 描述 |
|---|---|
compare-pages | 按修订版本、标题或提供的 wikitext 比较 wiki 页面的两个版本。 |
get-category-members | 列出分类中的成员(每次调用最多 500 个,通过 continueFrom 分页)。 |
get-file | 获取文件页面。 |
get-file-data | 获取文件的图像字节数据并以内嵌 Base64 格式返回,以便进行视觉分析——适用于无法访问 wiki 主机的客户端。返回缩放后的版本(设置 width);无法渲染的类型(音频、视频、二进制文件)会报错。如需元数据或下载 URL,请使用 get-file。 |
get-links-here | 列出引用某 wiki 页面的页面——链接到该页面、将其嵌入为模板或将其显示为文件的页面(通过 type 选择),包括通过重定向到达该页面的页面。每次调用最多 500 个,通过 continueFrom 分页。 |
get-page | 获取 wiki 页面。 |
get-page-history | 列出 wiki 页面的近期修订版本。 |
get-pages | 一次调用获取多个 wiki 页面(最多 50 个)。 |
get-recent-changes | 列出整个 wiki 的近期更改事件,可按时间戳、命名空间、用户、标签、类型和隐藏标记筛选(每次调用最多 50 个,通过 continue 分页)。 |
get-revision | 获取页面的指定修订版本。 |
get-site-info | 获取 wiki 的关键设置:MediaWiki 版本、内容语言、标题大小写规则、命名空间、已安装的扩展、许可证以及(可选)统计信息。 |
list-wikis | 列出所有已配置的 wiki——其键、站点名称、服务器、是否为只读或默认 wiki、是否可访问、哪些受扩展限制的工具可在其上运行,以及对于配置了 OAuth 的 wiki,其授权服务器。配置的 wiki 少于两个时禁用。 |
parse-wikitext | 将 wikitext 渲染为 HTML,但不保存。返回解析警告、wiki 链接、模板和外部 URL。 |
search-page | 搜索 wiki 页面标题和内容(全文搜索)。除非指定其他命名空间 ID,否则在 wiki 的内容命名空间中搜索。 |
search-page-by-prefix | 按前缀搜索页面标题。 |
whoami | 报告当前会话在目标 wiki 上通过身份验证的身份——用户名、是否为匿名用户,以及所属用户组(可选包含用户权限)。 |
页面写入
| 名称 | 描述 | 权限 |
|---|---|---|
create-page 🔐 | 创建新的 Wiki 页面。 | Create, edit, and move pages |
delete-page 🔐 | 删除 Wiki 页面。 | Delete pages, revisions, and log entries |
move-page 🔐 | 移动(重命名)Wiki 页面。 | Create, edit, and move pages |
protect-page 🔐 | 保护或取消保护 Wiki 页面。 | Protect and unprotect pages |
undelete-page 🔐 | 恢复已删除的 Wiki 页面。 | Delete pages, revisions, and log entries |
update-file 🔐 | 从本地磁盘上传现有文件的新版本。 | Upload, replace, and move files |
update-file-from-url 🔐 | 从 URL 上传现有文件的新版本。 | Upload, replace, and move files |
update-page 🔐 | 更新现有 Wiki 页面:覆盖内容、追加内容或重写其中的一段。 | Edit existing pages |
upload-file 🔐 | 从本地磁盘向 Wiki 上传文件。 | Upload new files |
upload-file-from-url 🔐 | 从 URL 向 Wiki 上传文件。 | Upload, replace, and move files |
Wiki 管理
| 名称 | 描述 |
|---|---|
add-wiki | 根据 Wiki 的 URL,将其添加为 MCP 资源。当 allowWikiManagement 为 false 时禁用。 |
remove-wiki | 移除 Wiki 资源。当 allowWikiManagement 为 false 或配置的 Wiki 少于两个时禁用。 |
OAuth
| 名称 | 描述 |
|---|---|
oauth-logout | 移除已存储的 OAuth 令牌。仅限 Stdio。 |
oauth-status | 列出已存储的 OAuth 令牌及其作用域和过期时间(不包含令牌值)。仅限 Stdio。 |
扩展包
每个扩展包的工具仅会在安装了该扩展的 Wiki 上注册。
| 名称 | 描述 |
|---|---|
neowiki-list-schemas | 列出架构(实体类型)及其属性数量。 |
neowiki-get-schema | 获取一个架构的属性定义、关系和选项。 |
neowiki-cypher-query | 对知识图谱运行只读 Cypher 查询。 |
neowiki-search-subjects | 在一个或全部架构中按名称查找主题 ID。 |
neowiki-get-subject | 按 ID 获取一个主题的结构化数据。 |
neowiki-get-page-subjects | 列出附加到 Wiki 页面上的主题。 |
neowiki-create-subject | 在页面上创建主题(主主题或其他主题)。需要 edit 权限。 |
neowiki-update-subject | 替换主题的标签和陈述。需要 edit 权限。 |
neowiki-delete-subject | 按 ID 删除主题。需要 edit 权限。 |
neowiki-set-main-subject | 设置或清除页面的主主题。需要 edit 权限。 |
neowiki-validate-subject | 对拟议的主题进行试运行验证并返回违规项。 |
neowiki-mint-subject-ids | 为与宿主一同编写的从属主题生成未使用的主题 ID。 |
| 名称 | 描述 |
|---|---|
smw-list-properties | 列出 Semantic MediaWiki 属性,并提供可复制粘贴到 smw-query 中的模板。 |
smw-query | 运行 Semantic MediaWiki #ask 查询。 |
| 名称 | 描述 |
|---|---|
bucket-query | 运行 Bucket Lua 查询。 |
| 名称 | 描述 |
|---|---|
cargo-list-tables | 列出 Wiki 上定义的 Cargo 表。 |
cargo-describe-table | 列出 Cargo 表的字段及其类型和列表标记。 |
cargo-query | 运行 Cargo SQL 风格的查询。 |
| 名称 | 描述 |
|---|---|
wikibase-search-entities | 按标签或别名查找项目和属性。 |
wikibase-get-entity | 读取一个实体的术语和陈述,并将引用的 ID 解析为标签。 |
wikibase-query | 对 Wiki 的查询服务运行 SPARQL 查询。仅适用于其 siteinfo 发布了查询服务的知识库。 |
wikibase-edit-entity | 根据 Wikibase 实体 JSON 创建或更改实体。需要 edit 权限。 |
wikibase-add-statement | 添加一条值为项目、字符串、外部 ID 或 URL 的陈述。需要 edit 权限。 |
资源
mcp://wikis/{wikiKey} — 每个 Wiki 的资源,提供 sitename、server(Wiki 的公开地址)、articlepath、scriptpath 以及 private 和 readOnly 标记。
- 资源仅包含这些字段:它发布的是固定列表,因此配置文件中的凭据和服务器端设置绝不会暴露在资源内容中。
- 执行
add-wiki或remove-wiki后,服务端会发送notifications/resources/list_changed,以便客户端刷新。
读取结果示例
{
"contents": [
{
"uri": "mcp://wikis/en.wikipedia.org",
"mimeType": "application/json",
"text": "{ \"sitename\":\"Wikipedia\",\"server\":\"https://en.wikipedia.org\",\"articlepath\":\"/wiki\",\"scriptpath\":\"/w\",\"private\":false }"
}
]
}
以下变量适用于任何配置。仅在自托管 HTTP 传输(端口、超时、Host/Origin 和 SSRF 防护)或运行托管 OAuth 代理时适用的变量,见 docs/deployment.md — environment variables。配置文件替换和上传目录变量见 docs/configuration.md。
| 名称 | 说明 | 默认值 |
|---|---|---|
CONFIG | 配置文件的路径 | config.json |
MCP_TRANSPORT | MCP 服务传输类型(stdio 或 http) | stdio |
MCP_LOG_LEVEL | 日志输出的最低严重级别。可选值为 debug、info、notice、warning、error、critical、alert、emergency 或 silent。 | debug |
MCP_CONTENT_MAX_BYTES | 工具返回的内容正文和结果块(wikitext、渲染后的 HTML、差异、语句和行列表)的字节上限,每次响应应用一次。请根据目标大模型客户端的工具响应预算进行调整。 | 75000 |
MCP_FILE_DATA_MAX_BYTES | get-file-data 响应的 Base64 编码大小上限。这是传输/安全保护措施;请使用工具的 width 按次调用调整实际大小。超过上限的调用会报错,而不会截断。 | 1000000 |
MCP_UPLOAD_MAX_BYTES | 服务端获取 upload-file-from-url / update-file-from-url 内容时使用的内存上限。超过此大小的文件会交由 wiki 自身的复制上传功能处理,而不会由服务端缓冲。此限制保护本服务的内存,不受 wiki 的 $wgMaxUploadSize 影响。 | 104857600 |
MCP_USER_AGENT | 替换所有出站请求的 User-Agent 标头,以便 wiki 运维人员能够联系你。请填写名称以及电子邮件地址或 URL,例如 ExampleBot/1.0 ([email protected])。 | mediawiki-mcp-server/<version> (https://github.com/ProfessionalWiki/MediaWiki-MCP-Server) |
MCP_OAUTH_CREDENTIALS_FILE | 覆盖默认的凭据存储路径。默认值:~/.config/mediawiki-mcp/credentials.json(Linux/macOS)或 %APPDATA%\mediawiki-mcp\credentials.json(Windows)。 | unset |
MCP_OAUTH_NO_BROWSER | 设为 1 可在 OAuth 流程中跳过启动浏览器;身份验证 URL 会改为记录到 stderr。适用于无头环境。 | unset |
配置
说明
仅在与私有 wiki 交互或使用经过身份验证的工具时才需要配置。
创建 config.json 文件以配置 wiki 连接。可从 config.example.json 开始配置。
{
"defaultWiki": "en.wikipedia.org",
"wikis": {
"en.wikipedia.org": {
"sitename": "Wikipedia",
"server": "https://en.wikipedia.org",
"articlepath": "/wiki",
"scriptpath": "/w"
}
}
}
内部地址与公开地址。 配置的 server 可以是内部主机名(例如 Docker 中的 http://mediawiki);返回给调用方的 URL 根据 wiki 的公开地址构建,因此内部主机名不会泄露到链接中,前提是已将内部主机列入 MCP_TRUSTED_HOSTS。请参阅 docs/configuration.md — per-wiki fields。
完整的字段参考、环境变量替换、机密来源、变更标签、上传目录和身份验证选项,请参阅 docs/configuration.md。
身份验证
标有 🔐 的工具需要身份验证。对于设置了 readOnly: true 的 wiki,写入工具(包括扩展包写入工具)会被拒绝;如果所有已配置的 wiki 都设置了此项,这些工具也会从 tools/list 中隐藏 — 参见部署。
- 基于浏览器的 OAuth(推荐)。 首次有工具需要身份验证时,通过浏览器标签页登录。为每个 wiki 设置
oauth2ClientId和oauth2CallbackPort— 参见 docs/configuration.md — OAuth(基于浏览器)。 - 按请求提供 Bearer 令牌(HTTP),已弃用。 每个请求都携带
Authorization: Bearer <token>,服务会将其转发给 MediaWiki。默认关闭,因为 MCP 服务不得接受并非为其签发的令牌。参见 docs/deployment.md — 按请求提供 Bearer 令牌。 - 托管 OAuth 代理(HTTP)。 服务将一个 MediaWiki 消费者接入为 OAuth 2.1 授权服务器,因此支持 OAuth 的客户端可以为每位用户完成登录 — 无需手动提供令牌。将其指向
https://<wiki>/mcp;匿名读取仍可使用。参见 docs/deployment.md — 托管式 OAuth 登录。 - 手动提供 OAuth2 访问令牌。 将长期有效的令牌粘贴到
config.json中。参见 docs/configuration.md — 手动提供 OAuth2 访问令牌。 - 机器人密码。 未安装 Extension:OAuth 时的备用方案。参见 docs/configuration.md — 机器人密码。
即使 wiki 允许所有用户运行 Cargo 查询,cargo-query 仍需要机器人密码或 OAuth 消费者具有 Create, query and delete data through the Cargo extension 授权。该工具也会在 wiki.gg 的 wiki 上检测 Cargo 扩展;这些 wiki 运行的是 Cargo 的 wiki.gg 分支 LIBRARIAN。
安装
选择下方的客户端;如果未列出,请使用标准配置。CONFIG 是可选项;未设置时,服务会连接到英文 Wikipedia。若要将其指向自己的 wiki 并为写入配置身份验证,请参见 docs/configuration.md。
Claude Code
将此仓库添加为插件市场,然后安装捆绑的服务:
/plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
/plugin install mediawiki-mcp-server@professional-wiki
插件可选接收一个配置文件,用于将服务指向自己的 wiki。启用插件时,在提示中设置该文件;也可以随时使用 /plugin configure mediawiki-mcp-server@professional-wiki 设置。通过命令行安装时,可使用相同的值:claude plugin install mediawiki-mcp-server@professional-wiki --config configPath=path/to/config.json。
作为插件安装时,工具的命名空间为 mcp__plugin_mediawiki-mcp-server_mediawiki__<tool>;请相应更新任何工具允许列表或钩子。
若要直接配置服务,请参见 Claude Code MCP 文档。简要步骤如下:
claude mcp add mediawiki-mcp-server -- npx -y @professional-wiki/mediawiki-mcp-server@latest
# Environment variables go before the `--`:
claude mcp add mediawiki-mcp-server -e CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest
Codex
将此仓库添加为插件市场,然后安装捆绑的服务:
codex plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
codex plugin add mediawiki-mcp-server@professional-wiki
若要将插件指向自己的 wiki,请在启动 Codex 的 shell 中设置 CONFIG,例如 export CONFIG=path/to/config.json。Codex 不支持按插件单独配置;如果不想设置环境变量,可以直接运行 codex mcp add mediawiki --env CONFIG=path/to/config.json -- npx -y @professional-wiki/mediawiki-mcp-server@latest 注册服务,这会优先于插件中的副本。
有关列出、更新或移除插件的方法,请参见 Codex 插件文档。
Claude Desktop
下载 MediaWiki-MCP-Server.mcpb,然后双击安装扩展。安装时会提示输入配置文件路径,以便将其指向自己的 wiki,而不是英文 Wikipedia。
VS Code 和 Cursor
或者手动添加标准配置。
Antigravity
将标准配置添加到 Antigravity 的 MCP 配置中,可以添加到全局配置文件 ~/.gemini/config/mcp_config.json,也可以添加到工作区配置文件 .agents/mcp_config.json。
如果你之前安装过 Gemini CLI 扩展,Antigravity 的设置向导会提供导入现有 Gemini CLI 配置的选项。
OpenCode
OpenCode 使用自己的配置格式,而不是 mcpServers;请将以下内容添加到项目根目录中的 opencode.json,或者全局安装时添加到 ~/.config/opencode/opencode.json。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mediawiki-mcp-server": {
"type": "local",
"command": ["npx", "-y", "@professional-wiki/mediawiki-mcp-server@latest"],
"environment": {
"CONFIG": "path/to/config.json"
}
}
}
}
标准配置
大多数客户端读取相同的服务配置块。将其粘贴到客户端对应的文件中,并将 mcpServers 替换为该客户端的根键:
| 客户端 | 配置文件 | 根键 |
|---|---|---|
| Cursor | ~/.cursor/mcp.json,或每个项目的 .cursor/mcp.json | mcpServers |
| VS Code | 每个工作区的 .vscode/mcp.json,或使用 MCP: Open User Configuration 命令 | servers |
| Devin Desktop(原名 Windsurf) | ~/.codeium/windsurf/mcp_config.json | mcpServers |
| Zed | ~/.config/zed/settings.json | context_servers |
| LM Studio | ~/.lmstudio/mcp.json | mcpServers |
{
"mcpServers": {
"mediawiki-mcp-server": {
"command": "npx",
"args": ["-y", "@professional-wiki/mediawiki-mcp-server@latest"],
"env": {
"CONFIG": "path/to/config.json"
}
}
}
}
对于其他客户端,npx add-mcp @professional-wiki/mediawiki-mcp-server 可能有效:add-mcp 是一个社区 CLI,可为你写入客户端的配置文件。它只会设置启动命令;请自行添加 CONFIG,以指向你自己的 wiki。
部署
将服务作为远程 HTTP 端点运行并提供给其他用户时,有单独的配置要求——请参阅 docs/deployment.md。预构建镜像发布于 ghcr.io/professionalwiki/mediawiki-mcp-server。有关第 2 天运维(日志、/health//ready、指标、优雅关闭),请参阅 docs/operations.md。
安全
默认设置适用于单用户使用。在向他人开放 HTTP 传输之前,请做好以下三项防护:
- 在反向代理处终止 TLS。 不要在不受信任的网络上直接暴露 MCP 端口。请参阅 docs/deployment.md — security checklist。
- 将
MCP_BIND与MCP_ALLOWED_HOSTS和MCP_ALLOWED_ORIGINS配套设置。 HTTP 传输默认绑定到127.0.0.1。使用MCP_BIND=0.0.0.0对外开放时,请将MCP_ALLOWED_HOSTS设为代理转发的主机名,并将MCP_ALLOWED_ORIGINS设为允许调用服务的浏览器来源——两者分别用于阻止 DNS 重绑定攻击和跨源攻击。 - 上传功能默认关闭。 在
uploadDirs或MCP_UPLOAD_DIRS中列出允许的目录后,才能使用upload-file。请参阅 docs/configuration.md — upload directories。 - 内部目标需要配置
MCP_TRUSTED_HOSTS。 出站请求受 SSRF 防护:如果目标解析到私有或环回地址(例如mediawiki.svc这样的 Docker 网络别名),则会被拒绝,除非将其主机名列入MCP_TRUSTED_HOSTS。请参阅 docs/deployment.md — outbound SSRF guard。
通过 GitHub 的安全公告表单报告漏洞——完整政策请参阅 SECURITY.md。
贡献
欢迎贡献——无论是提交拉取请求还是问题(错误、功能请求、建议),都可以。
- 要处理工具代码? 请从 AGENTS.md 开始,了解仓库布局、命令和测试模式。
- 要添加或修改工具? 请阅读 docs/tool-conventions.md——其中介绍了描述的写作风格、参数文档、注释提示以及 MediaWiki 术语规范。
- 要发布版本? 请参阅 docs/releasing.md。
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。