MediaWiki MCP Server

Connect AI assistants to any MediaWiki wiki (Wikipedia, Fandom, corporate wikis) with 33+ tools for search, read, edit, and Markdown conversion.

MediaWiki MCP Server

Connect your AI assistant to any MediaWiki wiki, or script it directly from the terminal. Search, read, and edit wiki content using natural language or the wiki CLI.

CI Go Report Card License: MIT

Works with: Claude Desktop, Claude Code, Cursor, ChatGPT, n8n, and any MCP-compatible tool. Also ships a wiki CLI for shell scripts and CI pipelines, see Use from the Terminal.


Documentation

DocumentDescription
QUICKSTART.mdGet running in 2 minutes
TIETO_SETUP.mdConnect to Tieto's Public 360° Wiki (beginner-friendly)
CHANGELOG.mdVersion history
ARCHITECTURE.mdSystem design
CONTRIBUTING.mdHow to contribute
SECURITY.mdSecurity policies
WIKI_USE_CASES.mdDetailed workflows

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.24+)

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 CodeSetup instructions
Google ADK (Go/Python)Setup instructions
Shell scripts / CI (no AI)Use from the Terminal

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

Cursor has built-in MCP support. Open Cursor Settings > MCP and add a new server, or edit the config file directly:

Mac
  1. Open the config file:

    ~/.cursor/mcp.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:

    %USERPROFILE%\.cursor\mcp.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

VS Code has built-in MCP support via Copilot Chat.

  1. Open the Command Palette: Ctrl+Shift+P (Windows) or Cmd+Shift+P (Mac)
  2. Type "MCP: Add Server" and select it
  3. Choose "Stdio" as the transport type
  4. Enter the path to the binary when prompted
  5. Name the server: mediawiki

This creates a .vscode/mcp.json file. Add the environment variables:

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

On Windows, use the .exe path with double backslashes.

Reload VS Code, then use the wiki tools through Copilot Chat.


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"},
    )
)

Use from the Terminal

The wiki CLI is a command-line companion to the MCP server. It shares the same API client, auth, and configuration. Reach for it when a prompt is overkill: shell pipelines, CI checks, batch edits, cron jobs.

Install

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

Configure

The CLI reads the same environment variables as the MCP server.

export MEDIAWIKI_URL="https://your-wiki.com/api.php"

# Optional, for write operations
export MEDIAWIKI_USERNAME="User@BotName"
export MEDIAWIKI_PASSWORD="your-bot-password"

wiki config         # verify setup

You can also override the URL per-invocation with --url.

Commands

CommandWhat it does
wiki search <query>Full-text search
wiki page <title>Read a page
wiki edit <title>Create or edit a page
wiki replace <find> <replace>Find and replace across pages
wiki lint <page>Check terminology and links (exit code 4 on findings)
wiki auditWiki-wide health check
wiki recentRecent changes
wiki history <page>Revision history
wiki diff <page>Compare revisions
wiki links [external|backlinks|broken|orphans|batch]Link analysis
wiki list [pages|categories|members|users]Listing queries
wiki publish <file.md>Convert Markdown to wikitext and publish
wiki configShow or verify configuration
wiki versionPrint CLI version

Every command supports --json (machine-readable output) and --quiet (errors only).

Examples

# Pipe lint results into CI
wiki lint "Release Notes" --json > lint.json

# Find broken external links as structured data
wiki links broken --json | jq '.[] | select(.status >= 400)'

# Publish a Markdown file
wiki publish docs/onboarding.md --title "Onboarding"

# Cron-friendly health check
wiki audit --quiet --json > /tmp/wiki-health.json

Run wiki <command> --help for full flags.


Need to Edit Wiki Pages?

Reading works without login on public wikis. Private/corporate wikis often require authentication for all operations, including reading. Editing always 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 WIKI_USE_CASES.md 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"
  • "Give me a quick overview of the Configuration page"
  • "Get the content of Main Page, FAQ, and Setup all at once"

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"
  • "Find pages not updated in the last 90 days"

Page Management (requires auth) ✨

  • "Rename 'Old Guide' to 'Updated Guide'"
  • "Add category 'API' to the Integration page"
  • "Remove the 'Deprecated' category from this page"

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 Codestdio✅ 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
Circuit BreakerAutomatic failover after consecutive API failures

HTTP Endpoints

When running in HTTP mode, these endpoints are available:

EndpointDescription
/MCP protocol endpoint (tools, resources, prompts)
/healthLiveness check (always returns 200 if server is running)
/readyReadiness check (verifies wiki API connectivity)
/toolsTool discovery (lists all 40+ tools by category)
/statusResilience status (circuit breaker state, dedup stats)
/metricsPrometheus metrics (request counts, latencies)
/.well-known/mcp-server-cardSEP-2127 Server Card (pre-connect discovery) via mcp-servercard-go

Health Checks

Use /health and /ready for container orchestration:

# Kubernetes example
livenessProbe:
  httpGet:
    path: /health
    port: 8080
readinessProbe:
  httpGet:
    path: /ready
    port: 8080

Tool Discovery

Get a list of all available tools:

curl http://localhost:8080/tools | jq '.categories | keys'

Resilience Monitoring

Check circuit breaker and request deduplication status:

curl http://localhost:8080/status
# Returns: {"circuit_breaker":{"state":"closed",...},"inflight_requests":0}

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
mediawiki_get_page_summaryLead section + metadata without full page load ✨
mediawiki_batch_get_pagesFetch multiple page contents in one API call ✨
mediawiki_batch_get_pages_infoGet metadata for multiple pages at once ✨
mediawiki_search_and_readSearch + read top results in one call ✨

search_and_read ✨ — Eliminates the most common two-call pattern (search then read):

"What does the wiki say about deployment?"
→ Searches, reads top result, returns content + remaining hits as summaries

get_page_summary ✨ — Quick overview without loading full page content:

"What is the API Reference page about?"
→ Returns intro section, categories, section list, and metadata

batch_get_pages ✨ — Fetch up to 50 pages in one call:

"Get the content of Main Page, FAQ, and Getting Started"
→ Returns all three pages in a single API request
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)
mediawiki_get_stale_pagesFind pages not edited in N days ✨

get_stale_pages ✨ — Wiki hygiene: find outdated content that needs review:

"Find pages not updated in 90 days"
→ Returns stale pages sorted oldest-first with days since last edit
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 ✨
mediawiki_move_pageMove (rename) pages with redirect ✨
mediawiki_manage_categoriesAdd/remove categories without full edit ✨

move_page ✨ — Rename pages properly (don't delete and recreate):

"Rename 'Old Guide' to 'Updated Guide'"
→ Moves page, creates redirect, optionally moves talk page

manage_categories ✨ — Quick category management:

"Add category 'API' and remove category 'Deprecated' from this page"
→ Modifies categories without touching page content
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)

New to this? Check out the Tieto Setup Guide for step-by-step instructions that assume no technical knowledge.

Quick 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: [email protected]#wiki-MCP

Configuration

This wiki requires authentication for all operations (including reading).

Claude Code CLI:

claude mcp add mediawiki /path/to/mediawiki-mcp-server \
  -e MEDIAWIKI_URL="https://wiki.software-innovation.com/api.php" \
  -e MEDIAWIKI_USERNAME="[email protected]#wiki-MCP" \
  -e MEDIAWIKI_PASSWORD="your-bot-password-here"

Claude Desktop / Cursor:

{
  "mcpServers": {
    "mediawiki": {
      "command": "/path/to/mediawiki-mcp-server",
      "env": {
        "MEDIAWIKI_URL": "https://wiki.software-innovation.com/api.php",
        "MEDIAWIKI_USERNAME": "[email protected]#wiki-MCP",
        "MEDIAWIKI_PASSWORD": "your-bot-password-here"
      }
    }
  }
}

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.24+

Running Tests

# Unit tests
make test

# With coverage
make test-cover

# Lint
make lint

Integration Tests

Integration tests run against a real MediaWiki instance:

# Start MediaWiki container
docker-compose -f docker-compose.test.yml up -d

# Wait for MediaWiki to be ready (about 60 seconds)
# Run integration tests
go test -tags=integration ./wiki/...

# Stop and clean up
docker-compose -f docker-compose.test.yml down -v

Integration tests can also be triggered manually via GitHub Actions.

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
├── docker-compose.test.yml    # Integration test environment
│
├── .github/workflows/
│   ├── ci.yml                 # Unit tests, lint, build
│   └── integration.yml        # Integration tests (manual trigger)
│
├── scripts/
│   └── LocalSettings.php      # MediaWiki config for tests
│
├── 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
│   ├── integration_test.go    # Integration tests (build tag)
│   └── *_test.go              # Unit tests
│
├── 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

Like This Project?

If this server saved you time, consider giving it a ⭐ on GitHub. It helps others discover the project.


More MCP Servers

Check out my other MCP servers:

ServerDescriptionStars
gleif-mcp-serverAccess GLEIF LEI database. Look up company identities, verify legal entities.GitHub stars
miro-mcp-serverControl Miro whiteboards with AI. Boards, diagrams, mindmaps, and more.GitHub stars
nordic-registry-mcp-serverAccess Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden.GitHub stars
productplan-mcp-serverTalk to your ProductPlan roadmaps. Query OKRs, ideas, launches.GitHub stars
tilbudstrolden-mcpNordic grocery deal hunting. Find offers, plan meals, track spending.GitHub stars
mcp-servercard-goGo library for SEP-2127 Server Cards. Pre-connect discovery for MCP servers.GitHub stars

License

MIT License

Credits

相關伺服器

NotebookLM 網頁匯入器

一鍵將網頁和 YouTube 影片匯入 NotebookLM。超過 200,000 位使用者信賴。

安裝 Chrome 擴充功能