mediawiki-mcp-server

olgasafonova/mediawiki-mcp-server

3.3

If you are the rightful owner of mediawiki-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

A Model Context Protocol (MCP) server that enables AI assistants to interact with MediaWiki-powered wikis.

Tools
10
Resources
0
Prompts
0

MediaWiki MCP Server

Connect your AI assistant to any MediaWiki wiki. Search, read, and edit wiki content using natural language.

Works with: Claude Desktop, Claude Code, Cursor, ChatGPT, n8n, and any MCP-compatible tool.


What Can You Do?

Once connected, just ask your AI:

You say...What happens
"What does our wiki say about onboarding?"AI searches and summarizes relevant pages
"Find all pages mentioning the API"Full-text search across your wiki
"Who edited the Release Notes last week?"Shows revision history
"Are there broken links on the Docs page?"Checks all external URLs
"Strike out John Smith on the Team page"Applies formatting (requires auth)
"Convert this README to wiki format"Transforms Markdown → MediaWiki markup ✨

Get Started

Step 1: Download

Option A: Download pre-built binary (easiest)

Go to Releases and download for your platform.

Option B: Build from source (requires Go 1.23+)

git clone https://github.com/olgasafonova/mediawiki-mcp-server.git
cd mediawiki-mcp-server
go build -o mediawiki-mcp-server .

Step 2: Find Your Wiki's API URL

Your wiki's API URL is usually:

Wiki typeAPI URL
Standard MediaWikihttps://your-wiki.com/api.php
Wikipediahttps://en.wikipedia.org/w/api.php
Fandomhttps://your-wiki.fandom.com/api.php

Tip: Visit Special:Version on your wiki to find the exact API endpoint.

Step 3: Configure Your AI Tool

Pick your tool:

I use...Jump to setup
Claude Desktop (Mac/Windows)Setup instructions
Claude Code CLISetup instructions
CursorSetup instructions
ChatGPTSetup instructions
n8nSetup instructions
VS Code + ClineSetup instructions
Google ADK (Go/Python)Setup instructions

Claude Desktop

Works on Mac and Windows. No terminal needed after initial setup.

Mac
  1. Open the config file:

    open ~/Library/Application\ Support/Claude/claude_desktop_config.json
    

    If the file doesn't exist, create it.

  2. Add this configuration (replace the path and URL):

    {
      "mcpServers": {
        "mediawiki": {
          "command": "/path/to/mediawiki-mcp-server",
          "env": {
            "MEDIAWIKI_URL": "https://your-wiki.com/api.php"
          }
        }
      }
    }
    
  3. Restart Claude Desktop (quit and reopen)

  4. Test it: Ask "Search the wiki for getting started"

Windows
  1. Open the config file:

    %APPDATA%\Claude\claude_desktop_config.json
    

    If the file doesn't exist, create it.

  2. Add this configuration (replace the path and URL):

    {
      "mcpServers": {
        "mediawiki": {
          "command": "C:\\path\\to\\mediawiki-mcp-server.exe",
          "env": {
            "MEDIAWIKI_URL": "https://your-wiki.com/api.php"
          }
        }
      }
    }
    
  3. Restart Claude Desktop (quit and reopen)

  4. Test it: Ask "Search the wiki for getting started"


Claude Code CLI

The fastest setup. One command and you're done.

claude mcp add mediawiki /path/to/mediawiki-mcp-server \
  -e MEDIAWIKI_URL="https://your-wiki.com/api.php"

Test it: Ask "Search the wiki for getting started"


Cursor

Mac
  1. Open the config file:

    ~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    
  2. Add this configuration:

    {
      "mcpServers": {
        "mediawiki": {
          "command": "/path/to/mediawiki-mcp-server",
          "env": {
            "MEDIAWIKI_URL": "https://your-wiki.com/api.php"
          }
        }
      }
    }
    
  3. Restart Cursor

Windows
  1. Open the config file:

    %APPDATA%\Cursor\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
    
  2. Add this configuration:

    {
      "mcpServers": {
        "mediawiki": {
          "command": "C:\\path\\to\\mediawiki-mcp-server.exe",
          "env": {
            "MEDIAWIKI_URL": "https://your-wiki.com/api.php"
          }
        }
      }
    }
    
  3. Restart Cursor


ChatGPT

ChatGPT connects via HTTP. You need to run the server on a machine ChatGPT can reach.

Requirements: ChatGPT Pro, Plus, Business, Enterprise, or Education account.

Setup

  1. Start the server with HTTP mode:

    # Set your wiki URL
    export MEDIAWIKI_URL="https://your-wiki.com/api.php"
    
    # Generate a secure token
    export MCP_AUTH_TOKEN=$(openssl rand -hex 32)
    echo "Save this token: $MCP_AUTH_TOKEN"
    
    # Start the server
    ./mediawiki-mcp-server -http :8080
    
  2. In ChatGPT:

    • Go to SettingsConnectorsAdvancedDeveloper Mode
    • Add a new MCP connector
    • URL: http://your-server:8080 (must be publicly accessible)
    • Authentication: Bearer token → paste your token
  3. Test it: Ask "Search the wiki for getting started"

For production: See Security Best Practices for HTTPS setup.


n8n

n8n connects via HTTP using the MCP Client Tool node.

Setup

  1. Start the server with HTTP mode:

    export MEDIAWIKI_URL="https://your-wiki.com/api.php"
    export MCP_AUTH_TOKEN="your-secure-token"
    ./mediawiki-mcp-server -http :8080
    
  2. In n8n:

    • Add an MCP Client Tool node
    • Transport: HTTP Streamable
    • URL: http://your-server:8080
    • Authentication: Bearer → your token
  3. Enable for AI agents (add to n8n environment):

    N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
    
  4. Connect the MCP Client Tool to an AI Agent node.


VS Code

Install the Cline extension, then configure it the same way as Cursor.


Google ADK

Google's Agent Development Kit connects to MCP servers via stdio or Streamable HTTP.

Go (stdio)
import (
    "os/exec"
    "google.golang.org/adk/tool/mcptoolset"
    "github.com/modelcontextprotocol/go-sdk/mcp"
)

// Create MCP toolset for wiki access
wikiTools, _ := mcptoolset.New(mcptoolset.Config{
    Transport: &mcp.CommandTransport{
        Command: exec.Command("/path/to/mediawiki-mcp-server"),
        Env: []string{
            "MEDIAWIKI_URL=https://your-wiki.com/api.php",
        },
    },
})

// Add to your agent
agent := llmagent.New(llmagent.Config{
    Name:     "wiki-agent",
    Model:    model,
    Toolsets: []tool.Set{wikiTools},
})
Go (Streamable HTTP)

First, start the server in HTTP mode:

export MEDIAWIKI_URL="https://your-wiki.com/api.php"
./mediawiki-mcp-server -http :8080 -token "your-secret-token"

Then connect from your ADK agent:

import (
    "google.golang.org/adk/tool/mcptoolset"
    "github.com/modelcontextprotocol/go-sdk/mcp"
)

wikiTools, _ := mcptoolset.New(mcptoolset.Config{
    Transport: mcp.NewStreamableHTTPClientTransport("http://localhost:8080"),
})
Python (stdio)
from google.adk.tools.mcp_tool import MCPToolset, StdioConnectionParams, StdioServerParameters

wiki_tools = MCPToolset(
    connection_params=StdioConnectionParams(
        server_params=StdioServerParameters(
            command="/path/to/mediawiki-mcp-server",
            env={"MEDIAWIKI_URL": "https://your-wiki.com/api.php"},
        )
    )
)
Python (Streamable HTTP)

Start the server in HTTP mode, then:

from google.adk.tools.mcp_tool import MCPToolset, StreamableHTTPConnectionParams

wiki_tools = MCPToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="http://localhost:8080",
        headers={"Authorization": "Bearer your-secret-token"},
    )
)

Need to Edit Wiki Pages?

Reading works without login. Editing requires a bot password.

Create a Bot Password

  1. Log in to your wiki
  2. Go to Special:BotPasswords (e.g., https://your-wiki.com/wiki/Special:BotPasswords)
  3. Enter a bot name: mcp-assistant
  4. Check these permissions:
    • ✅ Basic rights
    • ✅ Edit existing pages
  5. Click Create and save the password (you won't see it again)

Add Credentials to Your Config

Claude Desktop / Cursor:

{
  "mcpServers": {
    "mediawiki": {
      "command": "/path/to/mediawiki-mcp-server",
      "env": {
        "MEDIAWIKI_URL": "https://your-wiki.com/api.php",
        "MEDIAWIKI_USERNAME": "YourWikiUsername@mcp-assistant",
        "MEDIAWIKI_PASSWORD": "your-bot-password-here"
      }
    }
  }
}

Claude Code CLI:

claude mcp add mediawiki /path/to/mediawiki-mcp-server \
  -e MEDIAWIKI_URL="https://your-wiki.com/api.php" \
  -e MEDIAWIKI_USERNAME="YourWikiUsername@mcp-assistant" \
  -e MEDIAWIKI_PASSWORD="your-bot-password-here"

Example Prompts

📖 More examples: See for detailed workflows by persona (content editors, documentation managers, developers).

Search & Read

  • "What does our wiki say about deployment?"
  • "Find all pages mentioning the API"
  • "Show me the Getting Started guide"
  • "List all pages in the Documentation category"

Sections & Related Content ✨

  • "Show me the sections of the Installation Guide"
  • "Get the 'Troubleshooting' section from the FAQ page"
  • "Find pages related to the API Reference"
  • "What images are on the Product Overview page?"

Track Changes

  • "What pages were updated this week?"
  • "Who edited the Release Notes page?"
  • "Show me the diff between the last two versions"
  • "Who are the most active editors this month?"
  • "Which pages get edited most frequently?"

Check Quality

  • "Are there broken links on this page?"
  • "Find orphaned pages with no links to them"
  • "Check terminology consistency in the Product category"
  • "Find pages similar to the Installation Guide"
  • "Compare how 'API version' is documented across pages"

Quick Edits (requires auth)

  • "Strike out John Smith on the Team page"
  • "Replace 'version 2.0' with 'version 3.0' on Release Notes"
  • "Make 'API Gateway' bold on the Architecture page"

File Uploads (requires auth) ✨

File Search ✨

  • "Search for 'budget' in File:Annual-Report.pdf"
  • "Find mentions of 'API' in the changelog.txt file"

Note: PDF search requires poppler-utils installed. See PDF Search Setup.

Convert Markdown ✨

  • "Convert this README to wiki format"
  • "Transform my release notes from Markdown to MediaWiki"
  • "Convert with Tieto branding and CSS" (use theme="tieto", add_css=true)

Themes:

  • tieto - Tieto brand colors (Hero Blue headings, yellow code highlights)
  • neutral - Clean output without custom colors (default)
  • dark - Dark mode optimized

Find Users

  • "Who are the wiki admins?"
  • "List all bot accounts"

Troubleshooting

"MEDIAWIKI_URL environment variable is required" → Check your config file has the correct path and URL.

"authentication failed" → Check username format: WikiUsername@BotName → Verify bot password hasn't expired → Ensure bot has required permissions

"page does not exist" → Page titles are case-sensitive. Check the exact title on your wiki.

Tools not appearing in Claude/Cursor → Restart the application after config changes.

ChatGPT can't connect → Ensure your server is publicly accessible (not just localhost) → Check the bearer token matches exactly

"PDF search requires 'pdftotext'" → Install poppler-utils for your platform (see PDF Search Setup)


PDF Search Setup

PDF search requires the pdftotext tool from poppler-utils. Text file search (TXT, MD, CSV, etc.) works without any dependencies.

PlatformInstall Command
macOSbrew install poppler
Ubuntu/Debianapt install poppler-utils
RHEL/CentOSyum install poppler-utils
Windowschoco install poppler

Windows alternative: Download binaries from poppler-windows releases and add to PATH.

Verify installation:

pdftotext -v

Compatibility

PlatformTransportStatus
Claude Desktop (Mac)stdio✅ Supported
Claude Desktop (Windows)stdio✅ Supported
Claude Code CLIstdio✅ Supported
Cursorstdio✅ Supported
VS Code + Clinestdio✅ Supported
ChatGPTHTTP✅ Supported
n8nHTTP✅ Supported
Google ADKstdio / HTTP✅ Supported

Works with any wiki: Wikipedia, Fandom, corporate wikis, or any MediaWiki installation.


Advanced Configuration

HTTP Transport Options

For ChatGPT, n8n, and remote access, the server supports HTTP transport.

CLI Flags

FlagDefaultDescription
-http(empty)HTTP address (e.g., :8080). Empty = stdio mode
-token(empty)Bearer token for authentication
-origins(empty)Allowed CORS origins (comma-separated)
-rate-limit60Max requests per minute per IP

Examples

# Basic HTTP server
./mediawiki-mcp-server -http :8080

# With authentication
./mediawiki-mcp-server -http :8080 -token "your-secret-token"

# Restrict to specific origins
./mediawiki-mcp-server -http :8080 -token "secret" \
  -origins "https://chat.openai.com,https://n8n.example.com"

# Bind to localhost only (for use behind reverse proxy)
./mediawiki-mcp-server -http 127.0.0.1:8080 -token "secret"

Security Best Practices

When exposing the server over HTTP:

1. Always Use Authentication

./mediawiki-mcp-server -http :8080 -token "$(openssl rand -hex 32)"

2. Use HTTPS via Reverse Proxy

Example nginx configuration:

server {
    listen 443 ssl;
    server_name mcp.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

3. Restrict Origins

./mediawiki-mcp-server -http :8080 -token "secret" \
  -origins "https://chat.openai.com"

Built-in Security Features

FeatureDescription
Bearer AuthValidates Authorization: Bearer <token> header
Origin ValidationBlocks requests from unauthorized domains
Rate Limiting60 requests/minute per IP (configurable)
Security HeadersX-Content-Type-Options, X-Frame-Options

Environment Variables

VariableRequiredDescription
MEDIAWIKI_URLYesWiki API endpoint (e.g., https://wiki.com/api.php)
MEDIAWIKI_USERNAMENoBot username (User@BotName)
MEDIAWIKI_PASSWORDNoBot password
MEDIAWIKI_TIMEOUTNoRequest timeout (default: 30s)
MCP_AUTH_TOKENNoBearer token for HTTP authentication

All Available Tools

Read Operations
ToolDescription
mediawiki_searchFull-text search
mediawiki_get_pageGet page content
mediawiki_get_sectionsGet section structure or specific section content ✨
mediawiki_get_relatedFind related pages via categories/links ✨
mediawiki_get_imagesGet images used on a page ✨
mediawiki_list_pagesList all pages
mediawiki_list_categoriesList categories
mediawiki_get_category_membersGet pages in category
mediawiki_get_page_infoGet page metadata
mediawiki_get_wiki_infoWiki statistics
mediawiki_list_usersList users by group
mediawiki_parsePreview wikitext
Link Analysis
ToolDescription
mediawiki_get_external_linksGet external URLs from page
mediawiki_get_external_links_batchGet URLs from multiple pages
mediawiki_check_linksCheck if URLs work
mediawiki_find_broken_internal_linksFind broken wiki links
mediawiki_get_backlinks"What links here"
Content Quality
ToolDescription
mediawiki_check_terminologyCheck naming consistency
mediawiki_check_translationsFind missing translations
mediawiki_find_orphaned_pagesFind unlinked pages
mediawiki_auditComprehensive health audit (parallel checks, health score)
Content Discovery ✨
ToolDescription
mediawiki_find_similar_pagesFind pages with similar content based on term overlap
mediawiki_compare_topicCompare how a topic is described across multiple pages

find_similar_pages - Identifies related content that should be cross-linked or potential duplicates:

"Find pages similar to the API Reference page"
→ Returns similarity scores, common terms, and linking recommendations

compare_topic - Detects inconsistencies in documentation (different values, conflicting info):

"Compare how 'timeout' is described across all pages"
→ Returns page mentions with context snippets and value mismatches
History
ToolDescription
mediawiki_get_revisionsPage edit history
mediawiki_compare_revisionsDiff between versions
mediawiki_get_user_contributionsUser's edit history
mediawiki_get_recent_changesRecent wiki activity with aggregation ✨

Aggregation ✨ - Use aggregate_by parameter to get compact summaries:

  • aggregate_by: "user" → Most active editors
  • aggregate_by: "page" → Most edited pages
  • aggregate_by: "type" → Change type distribution (edit, new, log)
Quick Edit Tools
ToolDescription
mediawiki_find_replaceFind and replace text
mediawiki_apply_formattingApply bold, italic, strikethrough
mediawiki_bulk_replaceReplace across multiple pages
mediawiki_search_in_pageSearch within a page
mediawiki_resolve_titleFuzzy title matching

Edit Response Info ✨ - All edit operations return revision tracking and undo instructions:

{
  "revision": {
    "old_revision": 1234,
    "new_revision": 1235,
    "diff_url": "https://wiki.../index.php?diff=1235&oldid=1234"
  },
  "undo": {
    "instruction": "To undo: use wiki URL or revert to revision 1234",
    "wiki_url": "https://wiki.../index.php?title=...&action=edit&undo=1235"
  }
}
Write Operations
ToolDescription
mediawiki_edit_pageCreate or edit pages
mediawiki_upload_fileUpload files from URL ✨
File Search ✨
ToolDescription
mediawiki_search_in_fileSearch text in PDFs and text files

Supported formats: PDF (text-based), TXT, MD, CSV, JSON, XML, HTML

PDF requires: poppler-utils installed (see PDF Search Setup)

Markdown Conversion ✨
ToolDescription
mediawiki_convert_markdownConvert Markdown text to MediaWiki markup

Themes:

  • tieto - Tieto brand colors (Hero Blue #021e57 headings, yellow code highlights)
  • neutral - Clean output without custom colors (default)
  • dark - Dark mode optimized

Options:

  • add_css - Include CSS styling block for branded appearance
  • reverse_changelog - Reorder changelog entries newest-first
  • prettify_checks - Replace plain checkmarks (✓) with emoji (✅)

Example:

Input:  "# Hello\n**bold** and *italic*"
Output: "= Hello =\n'''bold''' and ''italic''"

Workflow for adding Markdown content to wiki:

  1. Convert: mediawiki_convert_markdown → get wikitext
  2. Save: mediawiki_edit_page → publish to wiki

Public 360° Wiki (Tieto)

Setup for wiki.software-innovation.com

Get Your Bot Password

  1. Go to Special:BotPasswords
  2. Log in with your Tieto account
  3. Create a bot named wiki-MCP
  4. Enable: Basic rights + Edit existing pages
  5. Save the generated password

Your username: your.email@tietoevry.com#wiki-MCP

Configuration

Use this URL in your config:

MEDIAWIKI_URL=https://wiki.software-innovation.com/api.php

Example Prompts

  • "Find all pages about eFormidling"
  • "What does the wiki say about AutoSaver?"
  • "Check for broken links on the API documentation"

Development

Build from Source

git clone https://github.com/olgasafonova/mediawiki-mcp-server.git
cd mediawiki-mcp-server
go build -o mediawiki-mcp-server .

Requires Go 1.23+

Project Structure

mediawiki-mcp-server/
├── main.go                    # Server entry point, HTTP transport
├── main_test.go               # Server tests
├── wiki_editing_guidelines.go # AI guidance for editing
│
├── tools/                     # MCP tool definitions
│   ├── definitions.go         # Tool schemas and metadata
│   ├── handlers.go            # Tool request handlers
│   └── registry.go            # Tool registration
│
├── wiki/                      # MediaWiki API client
│   ├── client.go              # HTTP client with auth
│   ├── config.go              # Configuration management
│   ├── types.go               # Request/response types
│   ├── errors.go              # Error handling
│   ├── read.go                # Page reading operations
│   ├── write.go               # Page editing operations
│   ├── search.go              # Search functionality
│   ├── methods.go             # Core API methods
│   ├── history.go             # Revision history
│   ├── categories.go          # Category operations
│   ├── users.go               # User management
│   ├── links.go               # Link analysis
│   ├── quality.go             # Content quality checks
│   ├── audit.go               # Wiki health audits
│   ├── similarity.go          # Content similarity detection
│   ├── pdf.go                 # PDF text extraction
│   ├── security.go            # Input sanitization, SSRF protection
│   └── *_test.go              # Comprehensive test coverage
│
├── converter/                 # Markdown to MediaWiki converter
│   ├── converter.go           # Conversion logic
│   ├── converter_test.go      # Tests
│   └── themes.go              # Theme definitions (tieto, neutral, dark)
│
├── cmd/
│   └── benchmark/             # Performance benchmarking
│       └── main.go
│
├── ARCHITECTURE.md            # System design documentation
├── CONTRIBUTING.md            # Contribution guidelines
├── SECURITY.md                # Security policy
├── WIKI_USE_CASES.md          # Usage examples by persona
└── README.md

License

MIT License

Credits