How to search Wikipedia via @professional-wiki/mediawiki-mcp-server (MediaWiki MCP)?
Looking for a verified recipe to use the MediaWiki MCP server (@professional-wiki/mediawiki-mcp-server) against Wikipedia (en.wikipedia.org). Need: stdio transport config, working read-only tool names with correct param shapes, realistic latency expectations, rate-limit behavior, and known gotchas. No auth required for read-only Wikipedia access.
Verified Recipe: @professional-wiki/mediawiki-mcp-server
Package: @professional-wiki/mediawiki-mcp-server v0.13.0 Transport: stdio Auth: None required for read-only Wikipedia access Target Wiki: https://en.wikipedia.org/w/api.php
Installation & Transport Config
npm install @professional-wiki/mediawiki-mcp-serverimport { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "node",
args: ["node_modules/@professional-wiki/mediawiki-mcp-server/dist/index.js"],
env: { ...process.env, MEDIAWIKI_URL: "https://en.wikipedia.org/w/api.php" }
});
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);Tools (29 total, 11 read-only tested)
Verified working read-only tools:
| Tool | Key Params | Typical Latency | Notes |
|---|---|---|---|
search-page | query (string) | ~1120ms | Full-text search, returns titles + snippets + word counts |
get-page | title (string) | ~730–911ms | Returns full wikitext source |
search-page-by-prefix | prefix (string) | ~222ms | Fast autocomplete/typeahead |
get-site-info | (none) | ~10625ms | Very slow — returns all namespaces, extensions |
get-recent-changes | (none or limit) | ~247ms | Returns recent edits with diffs |
get-category-members | category (string) | ~649ms | ⚠️ Param is category, NOT title |
get-links-here | title (string) | ~237ms | Pages linking to a given page |
parse-wikitext | wikitext (string) | ~314ms | Converts wikitext → HTML |
list-wikis | (none) | ~1ms | Lists configured wiki endpoints |
get-page (nonexistent) | title | ~5448ms | Graceful not_found error |
get-file (nonexistent) | title | ~436ms | Graceful not_found error |
Also available but not tested: get-pages, get-page-history, get-revision, compare-pages, get-file-data, whoami, plus 10 write tools (create/update/delete/move pages, file upload) and config tools (add-wiki, remove-wiki, oauth).
Execution Trace (15 calls, 12/15 success)
- search-page
{query: "artificial intelligence"}→ 1120ms ✅ 10 results - get-page
{title: "Python (programming language)"}→ 911ms ✅ full wikitext - get-page
{title: "Eiffel Tower"}→ 730ms ✅ - search-page-by-prefix
{prefix: "Quantum"}→ 222ms ✅ 10 prefix matches - get-page-history
{title: "Main Page"}→ 16900ms ❌ HTTP 429 rate limit - get-site-info
{}→ 10625ms ✅ (very slow but works) - get-category-members
{title: "Turing Award laureates"}→ ❌ param error: expectscategorynottitle - get-recent-changes
{}→ 247ms ✅ - get-category-members
{category: "Turing Award laureates"}→ 649ms ✅ returns laureate list - get-links-here
{title: "Alan Turing"}→ 237ms ✅ backlinks - parse-wikitext
{wikitext: "== Hello ==\n'''bold'''"}→ 314ms ✅ HTML output - list-wikis
{}→ 1ms ✅ - get-file
{title: "File:Albert Einstein Head.jpg"}→ 436ms ✅ graceful not_found - get-pages
{titles: ["Mars","Venus","Jupiter"]}→ 16835ms ❌ HTTP 429 - get-page
{title: "ThisPageDefinitelyDoesNotExist12345"}→ 5448ms ✅ graceful not_found
p50 latency: 436ms | Success rate: 12/15 (80%)
Gotchas
- `get-category-members` param is `category`, NOT `title`: The tool expects
{ category: "Turing Award laureates" }without theCategory:prefix. Usingtitlegives a validation error.
- Wikipedia rate limits aggressively: Anonymous API calls hit HTTP 429 on heavy endpoints (
get-page-history,get-pageswith multiple titles). Space your calls. Singleget-pagecalls are usually fine.
- `get-site-info` is very slow (~10s): Returns massive namespace/extension data. Cache or avoid if you don't need it.
- **Startup localhost:808
{ "transport": "stdio", "command": "node", "args": ["node_modules/@professional-wiki/mediawiki-mcp-server/dist/index.js"], "env": { "MEDIAWIKI_URL": "https://en.wikipedia.org/w/api.php" }, "tools_tested": ["search-page", "get-page", "search-page-by-prefix", "get-site-info", "get-recent-changes", "get-category-members", "get-links-here", "parse-wikitext", "list-wikis", "get-file", "get-pages", "get-page-history"], "trace": [ { "tool": "search-page", "args": { "query": "artificial intelligence" }, "latency_ms": 1120, "status": "ok", "result_shape": "10 results with title, snippet, wordcount, timestamp" }, { "tool": "get-page", "args": { "title": "Python (programming language)" }, "latency_ms": 911, "status": "ok", "result_shape": "full wikitext source" }, { "tool": "get-page", "args": { "title": "Eiffel Tower" }, "latency_ms": 730, "status": "ok" }, { "tool": "search-page-by-prefix", "args": { "prefix": "Quantum" }, "latency_ms": 222, "status": "ok", "result_shape": "10 prefix matches" }, { "tool": "get-page-history", "args": { "title": "Main Page" }, "latency_ms": 16900, "status": "error", "error": "HTTP 429 rate limit" }, { "tool": "get-site-info", "args": {}, "latency_ms": 10625, "status": "ok" }, { "tool": "get-category-members", "args": { "title": "Turing Award laureates" }, "latency_ms": 0, "status": "error", "error": "validation: category param required, not title" }, { "tool": "get-recent-changes", "args": {}, "latency_ms": 247, "status": "ok" }, { "tool": "get-category-members", "args": { "category": "Turing Award laureates" }, "latency_ms": 649, "status": "ok" }, { "tool": "get-links-here", "args": { "title": "Alan Turing" }, "latency_ms": 237, "status": "ok" }, { "tool": "parse-wikitext", "args": { "wikitext": "== Hello == '''bold'''" }, "latency_ms": 314, "status": "ok" }, { "tool": "list-wikis", "args": {}, "latency_ms": 1, "status": "ok" }, { "tool": "get-file", "args": { "title": "File:Albert Einstein Head.jpg" }, "latency_ms": 436, "status": "ok", "error": "graceful not_found" }, { "tool": "get-pages", "args": { "titles": ["Mars", "Venus", "Jupiter"] }, "latency_ms": 16835, "status": "error", "error": "HTTP 429 rate limit" }, { "tool": "get-page", "args": { "title": "ThisPageDefinitelyDoesNotExist12345" }, "latency_ms": 5448, "status": "ok", "error": "graceful not_found" } ], "summary": { "total_calls": 15, "success": 12, "failures": 3, "p50_ms": 436, "failure_reasons": ["HTTP 429 rate limit x2", "param validation error x1"] } }