MediaWiki
内容与创意by ProfessionalWiki
让 Large Language Model 客户端无缝连接任意 MediaWiki 站点,可创建、更新、搜索页面,并通过 OAuth 2.0 安全管理内容。
什么是 MediaWiki?
让 Large Language Model 客户端无缝连接任意 MediaWiki 站点,可创建、更新、搜索页面,并通过 OAuth 2.0 安全管理内容。
核心功能 (16 个工具)
get-pageReturns a wiki page. Use metadata=true to retrieve the revision ID required by update-page. Set content="none" to fetch only metadata without content.
get-page-historyReturns information about the latest revisions to a wiki page, in segments of 20 revisions, starting with the latest revision. The response includes API routes for the next oldest, next newest, and latest revision segments.
search-pageSearch wiki page titles and contents for the provided search terms, and returns matching pages.
set-wikiSets the wiki to use for the current session. You MUST call this tool when interacting with a new wiki.
add-wikiAdds a new wiki to the MCP resources from a URL.
remove-wikiRemoves a wiki from the MCP resources.
update-pageUpdates a wiki page. Replaces the existing content of a page with the provided content
get-fileReturns information about a file, including links to download the file in thumbnail, preview, and original formats.
create-pageCreates a wiki page with the provided content.
upload-fileUploads a file to the wiki from the local disk.
upload-file-from-urlUploads a file to the wiki from a web URL.
delete-pageDeletes a wiki page.
get-revisionReturns a revision of a wiki page.
undelete-pageUndeletes a wiki page.
get-category-membersGets all members in the category. Returns only page IDs, namespaces, and titles.
search-page-by-prefixPerforms a prefix search for page titles.
README
MediaWiki MCP Server
An MCP (Model Context Protocol) server that enables Large Language Model (LLM) clients to interact with any MediaWiki wiki.
Features
Tools
Every tool that operates on a wiki accepts an optional wiki argument naming the wiki to act on (the wiki-management and OAuth tools do not) — pass a wiki key (e.g. en.wikipedia.org) or the full mcp://wikis/{wikiKey} URI. Omit it to use the configured default wiki (see Configuration). Each tool response reports the wiki the call ran against.
Page reads
| Name | Description |
|---|---|
compare-pages | Diff two versions of a wiki page by revision, title, or supplied wikitext. |
get-category-members | List members of a category (up to 500 per call, paginated via continueFrom). |
get-file | Fetch a file page. |
get-page | Fetch a wiki page. |
get-page-history | List recent revisions of a wiki page. |
get-pages | Fetch multiple wiki pages in one call (up to 50). |
get-recent-changes | List recent change events across the wiki, filterable by timestamp, namespace, user, tag, type, and hide flags (up to 50 per call, paginated via continue). |
get-revision | Fetch a specific revision of a page. |
list-wikis | List every configured wiki — its key, sitename, server, whether it is read-only or the default, whether it is reachable, which extension-gated tools work on it, and, for an OAuth-configured wiki, its authorization server. |
parse-wikitext | Render wikitext to HTML without saving. Returns parse warnings, wikilinks, templates, and external URLs. |
search-page | Search wiki page titles and contents. |
search-page-by-prefix | Search page titles by prefix. |
Page writes
| Name | Description | Permissions |
|---|---|---|
create-page 🔐 | Create a new wiki page. | Create, edit, and move pages |
delete-page 🔐 | Delete a wiki page. | Delete pages, revisions, and log entries |
undelete-page 🔐 | Undelete a wiki page. | Delete pages, revisions, and log entries |
update-file 🔐 | Upload a new revision of an existing file from local disk. | Upload, replace, and move files |
update-file-from-url 🔐 | Upload a new revision of an existing file from a URL. | Upload, replace, and move files |
update-page 🔐 | Update an existing wiki page. | Edit existing pages |
upload-file 🔐 | Upload a file to the wiki from local disk. | Upload new files |
upload-file-from-url 🔐 | Upload a file to the wiki from a URL. | Upload, replace, and move files |
Wiki management
| Name | Description |
|---|---|
add-wiki | Add a wiki as an MCP resource from its URL. Disabled when allowWikiManagement is false. |
remove-wiki | Remove a wiki resource. Disabled when allowWikiManagement is false or fewer than two wikis are configured. |
OAuth
| Name | Description |
|---|---|
oauth-logout | Remove stored OAuth tokens. Stdio only. |
oauth-status | List stored OAuth tokens with scopes and expiry (no token values). Stdio only. |
Extension packs
| Name | Description |
|---|---|
bucket-query | Run a Bucket extension Lua query. Enabled only when the wiki has Bucket installed. |
cargo-describe-table | List the fields of a Cargo extension table with their types and list-flags. Enabled only when the wiki has Cargo installed. |
cargo-list-tables | List Cargo tables defined on the wiki. Enabled only when the wiki has Cargo installed. |
cargo-query | Run a Cargo extension SQL-style query. Enabled only when the wiki has Cargo installed. |
smw-list-properties | List Semantic MediaWiki properties with copy-paste templates for smw-query. Enabled only when the wiki has SMW installed. |
smw-query | Run a Semantic MediaWiki #ask query. Enabled only when the wiki has SMW installed. |
Resources
mcp://wikis/{wikiKey} — per-wiki resource exposing sitename, server, articlepath, scriptpath, and a private flag.
- Credentials (
token,username,password) are never exposed in resource content. - After
add-wikiorremove-wiki, the server sendsnotifications/resources/list_changedso clients refresh.
{
"contents": [
{
"uri": "mcp://wikis/en.wikipedia.org",
"mimeType": "application/json",
"text": "{ \"sitename\":\"Wikipedia\",\"server\":\"https://en.wikipedia.org\",\"articlepath\":\"/wiki\",\"scriptpath\":\"/w\",\"private\":false }"
}
]
}
Environment variables
| Name | Description | Default |
|---|---|---|
CONFIG | Path to your configuration file | config.json |
MCP_ALLOW_STATIC_FALLBACK | Set to true to allow HTTP startup when config.json has static credentials. See docs/deployment.md — Shape 2. | unset |
MCP_CONTENT_MAX_BYTES | Byte cap for content bodies (wikitext, rendered HTML, diffs). Tune to the target LLM client's tool-response budget. | 50000 |
MCP_LOG_LEVEL | Minimum severity for logger output. One of debug, info, notice, warning, error, critical, alert, emergency, or silent. | debug |
MCP_OAUTH_CREDENTIALS_FILE | Override the default credentials store path. Default: ~/.config/mediawiki-mcp/credentials.json (Linux/macOS) or %APPDATA%\mediawiki-mcp\credentials.json (Windows). | unset |
MCP_OAUTH_NO_BROWSER | Set to 1 to skip launching a browser during the OAuth flow; the auth URL is logged to stderr instead. Useful in headless environments. | unset |
MCP_PUBLIC_URL | Override the request-derived public URL used in OAuth protected-resource discovery. Useful for reverse-proxy setups that rewrite the Host header. | unset |
MCP_MAX_REQUEST_BODY | Maximum HTTP request body size (StreamableHTTP transport). Accepts size strings like 512kb or 1mb. Oversize requests get a JSON-RPC 413. | 1mb |
MCP_METRICS | Set to true to expose Prometheus metrics at GET /metrics on the HTTP transport. | unset |
MCP_SESSION_IDLE_TIMEOUT | Seconds an HTTP session may sit idle before it is closed and removed (StreamableHTTP transport). Any request resets the timer. 0 disables expiry. | 1800 |
MCP_SHUTDOWN_GRACE_MS | Maximum ms to wait for in-flight /mcp calls to drain on SIGTERM / SIGINT. See docs/operations.md — Graceful shutdown. | 10000 |
MCP_TRANSPORT | Type of MCP server transport (stdio or http) | stdio |
PORT | Port used for StreamableHTTP transport | 3000 |
Configuration
[!NOTE] Config is only required when interacting with a private wiki or using authenticated tools.
Create a config.json file to configure wiki connections. Use the config.example.json as a starting point.
{
"defaultWiki": "en.wikipedia.org",
"wikis": {
"en.wikipedia.org": {
"sitename": "Wikipedia",
"server": "https://en.wikipedia.org",
"articlepath": "/wiki",
"scriptpath": "/w"
}
}
}
For the full field reference, env-var substitution, secret sources, change tags, upload directories, and authentication options, see docs/configuration.md.
Authentication
Tools marked 🔐 require authentication. They are also hidden from tools/list when the configured default wiki has readOnly: true — see Deployment.
- Browser-based OAuth (recommended). Sign in through a browser tab the first time a tool needs auth. Set
oauth2ClientIdandoauth2CallbackPortper wiki — see docs/configuration.md — OAuth (browser-based). - Per-request bearer token (HTTP). Each request carries
Authorization: Bearer <token>; the server forwards it to MediaWiki. See docs/deployment.md — per-request bearer token. - Manual OAuth2 access token. Paste a long-lived token into
config.json. See docs/configuration.md — manual OAuth2 access token. - Bot password. Fallback when Extension:OAuth isn't installed. See docs/configuration.md — bot password.
The Cargo tools (cargo-query, cargo-list-tables, cargo-describe-table) call API actions gated by the runcargoqueries user right. Most wikis grant this to all users by default; wikis that restrict it require the Create, query and delete data through the Cargo extension grant on the bot password or OAuth consumer. The Cargo extension is also detected on wiki.gg-hosted wikis (Helldivers, Terraria, Ark, etc.), where it ships under the rebranded name LIBRARIAN.
Installation
<details> <summary><b>Install in Claude Desktop</b></summary>Follow the guide, use following configuration:
{
"mcpServers": {
"mediawiki-mcp-server": {
"command": "npx",
"args": [
"@professional-wiki/mediawiki-mcp-server@latest"
],
"env": {
"CONFIG": "path/to/config.json"
}
}
}
}
code --add-mcp '{"name":"mediawiki-mcp-server","command":"npx","args":["@professional-wiki/mediawiki-mcp-server@latest"]}'
Go to Cursor Settings -> MCP -> Add new MCP Server. Name to your liking, use command type with the command npx @professional-wiki/mediawiki-mcp-server. You can also verify config or add command like arguments via clicking Edit.
{
"mcpServers": {
"mediawiki-mcp-server": {
"command": "npx",
"args": [
"@professional-wiki/mediawiki-mcp-server@latest"
],
"env": {
"CONFIG": "path/to/config.json"
}
}
}
}
Follow the guide, use following configuration:
{
"mcpServers": {
"mediawiki-mcp-server": {
"command": "npx",
"args": [
"@professional-wiki/mediawiki-mcp-server@latest"
],
"env": {
"CONFIG": "path/to/config.json"
}
}
}
}
Follow the Claude Code MCP docs.
Run the below command, optionally with -e flags to specify environment variables.
claude mcp add mediawiki-mcp-server npx @professional-wiki/mediawiki-mcp-server@latest
You should end up with something like the below in your .claude.json config:
"mcpServers": {
"mediawiki-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"@professional-wiki/mediawiki-mcp-server@latest"
],
"env": {
"CONFIG": "path/to/config.json"
}
}
},
Run:
gemini extensions install https://github.com/ProfessionalWiki/MediaWiki-MCP-Server
This installs the extension from the latest GitHub Release. To pin a specific version, append --ref=<tag> (for example --ref=v0.6.5).
See the Gemini CLI extensions documentation for how to update, list, or uninstall extensions.
</details>Deployment
Running the server as a remote HTTP endpoint for other users has its own configuration requirements — see docs/deployment.md. A pre-built image is published at ghcr.io/professionalwiki/mediawiki-mcp-server. For day-2 operations (logs, /health//ready, metrics, graceful shutdown), see docs/operations.md.
Security
Defaults are safe for single-user use. Before exposing the HTTP transport to others, lock down three things:
- Trust the proxy, not the header. The server forwards any
Authorization: Bearerheader straight to MediaWiki — authentication is the reverse proxy's job. Terminate TLS there, and don't expose the MCP port directly on an untrusted network. See docs/deployment.md — reverse proxy requirements. - Pair
MCP_BINDwithMCP_ALLOWED_HOSTSandMCP_ALLOWED_ORIGINS. The HTTP transport binds to127.0.0.1by default. When you open it up withMCP_BIND=0.0.0.0, setMCP_ALLOWED_HOSTSto the hostnames your proxy forwards andMCP_ALLOWED_ORIGINSto the browser origins allowed to call the server — these block DNS-rebinding and cross-origin attacks respectively. - Uploads are opt-in.
upload-fileis disabled until you list allowed directories inuploadDirsorMCP_UPLOAD_DIRS. See docs/configuration.md — upload directories.
Report a vulnerability via GitHub's security advisory form — full policy in SECURITY.md.
Contributing
Contributions are welcome — pull requests and issues (bugs, feature requests, suggestions) both work.
- Working on tool code? Start from AGENTS.md for repo layout, commands, and testing patterns.
- Adding or modifying a tool? Read docs/tool-conventions.md — it covers description voice, parameter docs, annotation hints, and MediaWiki terminology conventions.
- Running a release? See docs/releasing.md.
License
This project is licensed under the MIT License. See the LICENSE file for details.
常见问题
MediaWiki 是什么?
让 Large Language Model 客户端无缝连接任意 MediaWiki 站点,可创建、更新、搜索页面,并通过 OAuth 2.0 安全管理内容。
MediaWiki 提供哪些工具?
提供 16 个工具,包括 get-page、get-page-history、search-page 等。
相关 Skills
文档共著
by anthropics
围绕文档、提案、技术规格、决策记录等写作任务,按上下文收集、结构迭代、读者测试三步协作共创,减少信息遗漏,写出更清晰、经得起他人阅读的内容。
✎ 写文档、方案或技术规格时容易思路散、信息漏,它用结构化共著流程帮你高效传递上下文、反复打磨内容,还能从读者视角做验证。
内部沟通
by anthropics
按公司常用模板和语气快速起草内部沟通内容,覆盖 3P 更新、状态报告、领导汇报、项目进展、事故复盘、FAQ 与 newsletter,适合需要统一格式的团队沟通场景。
✎ 按公司偏好的模板快速产出状态汇报、领导更新和 FAQ,既省去反复改稿,也让内部沟通更统一、更专业。
平面设计
by anthropics
先生成视觉哲学,再落地成原创海报、艺术画面或其他静态设计,输出 .png/.pdf,强调构图、色彩与空间表达,适合需要高完成度视觉成品的场景。
✎ 做海报、插画或静态视觉稿时,用它能快速产出兼顾美感与版式的PNG/PDF成品,原创设计更省心,也更适合规避版权风险。
相关 MCP Server
by nirholas
免费的加密新闻聚合 MCP,汇集 Bitcoin、Ethereum、DeFi、Solana 与 altcoins 资讯源。
by roomi-fields
Automate Google NotebookLM — Q&A with citations, audio, video, content generation
by codeturion
为 AI agents 提供准确的 UE5 C++ API 文档,避免臆造函数签名与 include 声明。