MediaWiki MCP Server について
MediaWiki MCP Serverは、LLMクライアントから標準ツールでMediaWikiサイトを参照・管理できるようにします。複数のwiki設定や認証付きの書き込みに対応し、拡張機能に応じた構造化データ向けツールも備えています。
主な機能
- 01ページ、履歴、版の読み取り
- 02ページとカテゴリメンバーの検索
- 03ページの作成、編集、管理
- 04ファイルのアップロードと更新
- 05拡張機能別のクエリツール
活用シーン
- 01wikiページや最近の変更を取得
- 02ページの編集やファイルのアップロード
- 03Wikibase、Cargo、Semantic MediaWikiのデータを照会
MCP 対応
このプロジェクトはMCPサーバーとして、ページの読み取り、検索、編集、ファイル操作、wiki管理のツールをクライアントに公開します。設定済み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 = 見出しのあるセクション)。コンテンツを 1 つのセクションに絞り込みます。 |
| metadata | boolean | いいえ | レスポンスにメタデータ(ページ ID、リビジョン情報、サイズ、セクション一覧)を含めるかどうか |
詳細
MediaWiki MCP Server
LLM クライアントが任意の MediaWiki ウィキとやり取りできるようにする MCP(Model Context Protocol)サーバーです。
機能
ツール
ウィキを操作する各ツールでは、操作対象のウィキを指定する任意の wiki 引数を受け付けます(ウィキ管理ツールと OAuth ツールを除く)。ウィキキー(例:en.wikipedia.org)または完全な mcp://wikis/{wikiKey} URI を渡してください。省略すると、設定済みのデフォルトウィキが使われます(設定を参照)。各ツールの応答には、呼び出しが実行されたウィキが示されます。成功した応答では、ペイロードが content には文章として、structuredContent には JSON として格納されます。応答チャネルを参照してください。
ページの読み取り
| 名前 | 説明 |
|---|---|
compare-pages | リビジョン、タイトル、または指定したウィキテキストを使って、ウィキページの2つのバージョンを比較します。 |
get-category-members | カテゴリのメンバーを一覧表示します(1回の呼び出しにつき最大500件。continueFrom でページネーションします)。 |
get-file | ファイルページを取得します。 |
get-file-data | 視覚分析用に、ファイルの画像データをインライン(base64)で取得します。ウィキホストにアクセスできないクライアント向けです。縮小版が返されます(width を設定)。レンダリングできない種類(音声、動画、バイナリ)はエラーになります。メタデータまたはダウンロード URL には get-file を使用してください。 |
get-links-here | ウィキページを参照しているページを一覧表示します。対象ページへのリンク、テンプレートとしての埋め込み、またはファイルとしての表示が該当します(type で選択)。リダイレクトを経由して対象ページに到達するページも含まれます。1回の呼び出しにつき最大500件で、continueFrom によるページネーションに対応しています。 |
get-page | ウィキページを取得します。 |
get-page-history | ウィキページの最近のリビジョンを一覧表示します。 |
get-pages | 1回の呼び出しで複数のウィキページを取得します(最大50件)。 |
get-recent-changes | ウィキ全体の最近の変更イベントを一覧表示します。タイムスタンプ、名前空間、ユーザー、タグ、種類、非表示フラグで絞り込めます(1回の呼び出しにつき最大50件。continue でページネーションします)。 |
get-revision | ページの特定のリビジョンを取得します。 |
get-site-info | ウィキの主要な設定(MediaWiki のバージョン、コンテンツ言語、タイトルの大文字・小文字の規則、名前空間、インストール済み拡張機能、ライセンス、および任意の統計情報)を取得します。 |
list-wikis | 設定済みのすべてのウィキについて、キー、サイト名、サーバー、読み取り専用またはデフォルトかどうか、到達可能かどうか、拡張機能が必要なツールのうち利用可能なもの、OAuth が設定されている場合は認可サーバーを一覧表示します。設定済みのウィキが2つ未満の場合は無効になります。 |
parse-wikitext | 保存せずにウィキテキストを HTML に変換します。解析時の警告、ウィキリンク、テンプレート、外部 URL を返します。 |
search-page | ウィキページのタイトルと内容を全文検索します。ほかの名前空間 ID が指定されない限り、ウィキのコンテンツ名前空間を検索します。 |
search-page-by-prefix | プレフィックスでページタイトルを検索します。 |
whoami | 対象ウィキで現在のセッションが認証されているユーザーの情報(ユーザー名、匿名かどうか、所属グループ、および任意のユーザー権限)を返します。 |
ページの書き込み
| 名前 | 説明 | 権限 |
|---|---|---|
create-page 🔐 | 新しいウィキページを作成します。 | ページの作成、編集、移動 |
delete-page 🔐 | ウィキページを削除します。 | ページ、版、ログエントリの削除 |
move-page 🔐 | ウィキページを移動(名前変更)します。 | ページの作成、編集、移動 |
protect-page 🔐 | ウィキページを保護または保護解除します。 | ページの保護と保護解除 |
undelete-page 🔐 | ウィキページを復元します。 | ページ、版、ログエントリの削除 |
update-file 🔐 | ローカルディスク上のファイルから、既存ファイルの新しい版をアップロードします。 | ファイルのアップロード、置き換え、移動 |
update-file-from-url 🔐 | URL から、既存ファイルの新しい版をアップロードします。 | ファイルのアップロード、置き換え、移動 |
update-page 🔐 | 既存のウィキページを更新します。上書き、追記、または一部の文章の書き換えができます。 | 既存ページの編集 |
upload-file 🔐 | ローカルディスクからウィキにファイルをアップロードします。 | 新しいファイルのアップロード |
upload-file-from-url 🔐 | URL からウィキにファイルをアップロードします。 | ファイルのアップロード、置き換え、移動 |
ウィキの管理
| 名前 | 説明 |
|---|---|
add-wiki | URL からウィキを MCP リソースとして追加します。allowWikiManagement が false の場合は無効になります。 |
remove-wiki | ウィキリソースを削除します。allowWikiManagement が false の場合、または設定されているウィキが 2 つ未満の場合は無効になります。 |
OAuth
| 名前 | 説明 |
|---|---|
oauth-logout | 保存されている OAuth トークンを削除します。Stdio のみ。 |
oauth-status | スコープと有効期限を含む、保存されている OAuth トークンの一覧を表示します(トークン値は含みません)。Stdio のみ。 |
拡張パック
各パックのツールは、その拡張機能がインストールされている Wiki でのみ登録されます。
| 名前 | 説明 |
|---|---|
neowiki-list-schemas | スキーマ(エンティティタイプ)とそのプロパティ数を一覧表示します。 |
neowiki-get-schema | 1 つのスキーマのプロパティ定義、関係、選択肢を取得します。 |
neowiki-cypher-query | ナレッジグラフに対して読み取り専用の Cypher クエリを実行します。 |
neowiki-search-subjects | 1 つのスキーマまたはすべてのスキーマから、名前で主体 ID を検索します。 |
neowiki-get-subject | ID を指定して、1 つの主体の構造化データを取得します。 |
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 | smw-query 用のコピー&ペースト可能なテンプレートとともに、Semantic MediaWiki のプロパティを一覧表示します。 |
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 | 1 つのエンティティの用語と文を読み込み、参照されている ID をラベルに解決して取得します。 |
wikibase-query | Wiki のクエリサービスに対して SPARQL クエリを実行します。siteinfo でクエリサービスが公開されているリポジトリでのみ提供されます。 |
wikibase-edit-entity | Wikibase エンティティ JSON からエンティティを作成または変更します。edit 権限が必要です。 |
wikibase-add-statement | 項目、文字列、外部 ID、または URL の値を持つ文を 1 つ追加します。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 | ツールが返すコンテンツ本文と結果ブロック(ウィキテキスト、レンダリング済み HTML、差分、ステートメントや行の一覧)のバイト数上限です。レスポンスごとに適用されます。対象の LLM クライアントのツールレスポンス予算に合わせて調整してください。 | 75000 |
MCP_FILE_DATA_MAX_BYTES | get-file-data レスポンスの Base64 エンコード後のサイズに対するハード上限です。トランスポート/安全性のための追加制限です。実際のサイズは、ツールの width で呼び出しごとに調整してください。上限を超える呼び出しは切り詰められず、エラーになります。 | 1000000 |
MCP_UPLOAD_MAX_BYTES | upload-file-from-url/update-file-from-url が使用するサーバー側フェッチのメモリ上限です。これを超えるサイズのファイルはサーバーでバッファーせず、ウィキ独自のコピーアップロードに引き渡されます。この設定が保護するのはこのサーバーのメモリであり、ウィキの $wgMaxUploadSize ではありません。 | 104857600 |
MCP_USER_AGENT | すべての送信リクエストの User-Agent ヘッダーを置き換えます。これにより、ウィキの運用者があなたに連絡できます。名前とメールアドレスまたは URL を指定してください。例:ExampleBot/1.0 ([email protected]) | mediawiki-mcp-server/<version> (https://github.com/ProfessionalWiki/MediaWiki-MCP-Server) |
MCP_OAUTH_CREDENTIALS_FILE | デフォルトの認証情報保存先のパスを上書きします。デフォルト:Linux/macOS では ~/.config/mediawiki-mcp/credentials.json、Windows では %APPDATA%\mediawiki-mcp\credentials.json。 | unset |
MCP_OAUTH_NO_BROWSER | 1 に設定すると、OAuth フロー中のブラウザー起動をスキップし、代わりに認証 URL を stderr に記録します。ヘッドレス環境で便利です。 | unset |
設定
メモ
プライベートウィキと対話する場合、または認証が必要なツールを使用する場合にのみ、設定が必要です。
ウィキ接続を設定するには、config.json ファイルを作成してください。出発点として 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 はウィキの公開アドレスから生成されるため、内部ホストが MCP_TRUSTED_HOSTS に含まれていれば、リンクに内部ホスト名が漏れることはありません。docs/configuration.md — per-wiki fields を参照してください。
すべてのフィールドのリファレンス、環境変数の置換、シークレットソース、変更タグ、アップロードディレクトリ、認証オプションについては、docs/configuration.md を参照してください。
認証
🔐 が付いたツールには認証が必要です。書き込みツール(拡張機能パックへの書き込みを含む)は、readOnly: true が設定されたウィキでは拒否され、設定済みのすべてのウィキでこの設定が有効な場合は tools/list から非表示になります。詳しくはデプロイをご覧ください。
- ブラウザーベースの OAuth(推奨)。 ツールで初めて認証が必要になったときに、ブラウザータブからサインインします。ウィキごとに
oauth2ClientIdとoauth2CallbackPortを設定してください。詳しくはdocs/configuration.md — OAuth(ブラウザーベース)をご覧ください。 - リクエストごとのベアラートークン(HTTP、非推奨)。 各リクエストに
Authorization: Bearer <token>を含め、サーバーがそれを MediaWiki に転送します。MCP サーバーは、自分宛てに発行されていないトークンを受け付けてはならないため、既定では無効です。詳しくはdocs/deployment.md — リクエストごとのベアラートークンをご覧ください。 - ホスト型 OAuth プロキシ(HTTP)。 サーバーは 1 つの MediaWiki コンシューマーの前段で OAuth 2.1 認可サーバーとして動作するため、OAuth 対応クライアントで各ユーザーがサインインできます。手動でトークンを入力する必要はありません。
https://<wiki>/mcpを指定してください。匿名での読み取りも引き続き利用できます。詳しくはdocs/deployment.md — ホスト型 OAuth サインインをご覧ください。 - 手動 OAuth2 アクセストークン。 長期間有効なトークンを
config.jsonに貼り付けます。詳しくはdocs/configuration.md — 手動 OAuth2 アクセストークンをご覧ください。 - ボットパスワード。 Extension:OAuth がインストールされていない場合の代替手段です。詳しくはdocs/configuration.md — ボットパスワードをご覧ください。
cargo-query を使うには、すべてのユーザーによる Cargo クエリの実行を許可しているウィキであっても、ボットパスワードまたは OAuth コンシューマーに Create, query and delete data through the Cargo extension 権限が必要です。Cargo 拡張機能は、Cargo のフォークである wiki.gg の LIBRARIAN を実行する wiki.gg のウィキでも検出されます。
インストール
以下からクライアントを選ぶか、一覧にない場合は標準設定を使用してください。CONFIG は省略可能です。省略すると、サーバーは英語版 Wikipedia を対象とします。独自のウィキを指定して書き込み用の認証を設定する方法については、docs/configuration.mdをご覧ください。
Claude Code
このリポジトリをプラグインマーケットプレイスとして追加し、同梱のサーバーをインストールします。
/plugin marketplace add ProfessionalWiki/MediaWiki-MCP-Server
/plugin install mediawiki-mcp-server@professional-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 docsをご覧ください。概要は次のとおりです。
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
プラグインを独自のウィキに接続するには、Codex を起動するシェルで 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 plugins documentationをご覧ください。
Claude Desktop
MediaWiki-MCP-Server.mcpb をダウンロードしてダブルクリックすると、拡張機能がインストールされます。インストール時に設定ファイルのパスを尋ねられるので、英語版 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 はご自身で追加してください。
デプロイ
他のユーザーが利用できるリモート HTTP エンドポイントとしてサーバーを実行するには、独自の設定が必要です。docs/deployment.md を参照してください。ビルド済みイメージは ghcr.io/professionalwiki/mediawiki-mcp-server で公開されています。Day 2 運用(ログ、/health//ready、メトリクス、グレースフルシャットダウン)については、docs/operations.md を参照してください。
セキュリティ
デフォルト設定は、単一ユーザーでの利用において安全です。HTTP トランスポートを他のユーザーにも公開する前に、次の 3 点を必ず保護してください。
- リバースプロキシで TLS を終端してください。 信頼できないネットワーク上に MCP ポートを直接公開しないでください。docs/deployment.md — セキュリティチェックリストをご覧ください。
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 リバインディング攻撃とクロスオリジン攻撃を防ぎます。- アップロードはオプトインです。
upload-fileは、許可するディレクトリをuploadDirsまたはMCP_UPLOAD_DIRSに指定するまで無効です。docs/configuration.md — アップロードディレクトリをご覧ください。 - 内部の宛先には
MCP_TRUSTED_HOSTSが必要です。 外部へのフェッチは SSRF 対策で保護されています。プライベートアドレスまたはループバックアドレスに解決される宛先(mediawiki.svcのような Docker ネットワークのエイリアスなど)は、そのホストをMCP_TRUSTED_HOSTSに指定するまで拒否されます。docs/deployment.md — 外部への SSRF 対策をご覧ください。
脆弱性の報告には、GitHub のセキュリティアドバイザリーフォームをご利用ください。ポリシーの全文は SECURITY.md をご覧ください。
コントリビューション
コントリビューションを歓迎します。プルリクエストとイシュー(バグ、機能リクエスト、提案)のどちらも受け付けています。
- ツールのコードに取り組みますか? リポジトリの構成、コマンド、テストのパターンについては、AGENTS.md をご覧ください。
- ツールの追加または変更を行いますか? 説明文の文体、パラメーターのドキュメント、アノテーションのヒント、MediaWiki 用語の規約を説明している docs/tool-conventions.md をお読みください。
- リリースを行いますか? docs/releasing.md をご覧ください。
ライセンス
このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。