Wikipedia MCP Server
Provides comprehensive Wikipedia access for AI assistants via MCP Streamable HTTP transport, enabling search, article retrieval, summaries, section analysis, link discovery, and multi-language support.
README
Wikipedia MCP Server
A Model Context Protocol (MCP) server that provides comprehensive Wikipedia access for AI assistants. Built in TypeScript, deployed on Vercel, and fully compatible with the MCP Streamable HTTP transport (protocol version 2025-03-26).
Features
- š Advanced Search ā find articles with relevance ranking
- š Full Article Access ā plain text extracts or complete wikitext
- š Smart Summaries ā concise summaries tailored to a specific query
- šļø Section Analysis ā extract and summarize individual sections
- š Link Discovery ā internal links and related articles
- š Multi-language ā 50+ language codes, 140+ country codes, resolved automatically
- š Parallel Search ā
multi_search_wikipediaruns multiple queries simultaneously - šÆ Fact Extraction ā structured key-fact lists from any article
- š Coordinates ā lat/lon for geographic articles
- ā” Streamable HTTP ā full MCP transport support (POST + GET SSE + DELETE)
- š Security hardened ā input sanitization, tiered rate limiting, no
Serverheader - š Vercel ready ā stateless serverless deployment, zero cold-start friction
Quick Start
1. Deploy
git clone https://github.com/YOUR_USERNAME/wikipedia-mcp-vercel.git
cd wikipedia-mcp-vercel
vercel
Or use the Deploy with Vercel button above.
2. Connect your AI client
The server implements MCP Streamable HTTP transport (2025-03-26).
Both the POST channel (client ā server) and the GET SSE channel (server ā client) are supported.
MCP endpoint: https://your-app.vercel.app/mcp
Claude Desktop
{
"mcpServers": {
"wikipedia": {
"type": "http",
"url": "https://your-app.vercel.app/mcp"
}
}
}
Claude Code / CLI
claude mcp add wikipedia --transport http https://your-app.vercel.app/mcp
Any MCP client (generic)
Configure the client with transport type streamable-http and the endpoint URL above.
The server uses stateless mode (no Mcp-Session-Id header), which is correct and expected for serverless deployments.
3. Environment variables (optional)
| Variable | Default | Description |
|---|---|---|
WIKIPEDIA_LANGUAGE |
en |
Wikipedia language code (e.g. ja, es, de) |
WIKIPEDIA_COUNTRY |
US |
Country code ā language mapping (e.g. JP, CN, LK) |
ENABLE_CACHE |
false |
In-memory cache (useful for local dev) |
WIKIPEDIA_BOT_USERNAME |
ā | Bot account username (Account@BotName) |
WIKIPEDIA_BOT_PASSWORD |
ā | Bot account password |
PORT |
8000 |
Local dev port (ignored by Vercel) |
Copy .env.example ā .env for local development.
4. Verify
# Health check
curl https://your-app.vercel.app/health
# Test MCP initialize
curl -X POST https://your-app.vercel.app/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
MCP Tools
All 13 tools accept optional language (e.g. "ja") and country (e.g. "JP") parameters. When set, the query is sent as-is to that language's Wikipedia endpoint (e.g. ja.wikipedia.org). Wikipedia's own search can often match a short English title phrase to the correct local article, but there is no translation layer in this server.
Tool reference
| Tool | Description |
|---|---|
search_wikipedia |
Search by keyword in one language |
multi_search_wikipedia |
Run multiple searches across multiple languages in parallel |
get_article |
Full article ā plain text extract, or wikitext with full: true |
get_summary |
Introductory summary only |
get_sections |
Table of contents (section titles + levels) |
get_links |
All internal wikilinks in an article |
get_coordinates |
Latitude/longitude for geographic articles |
get_related_topics |
Related articles via link graph |
summarize_article_for_query |
Summary focused on a specific question |
summarize_article_section |
Summary of one named section |
extract_key_facts |
Bullet-list of key facts |
test_wikipedia_connectivity |
API diagnostics + auth status |
list_supported_countries |
All supported language and country codes |
MCP Prompts
Three prompt templates are registered and available via prompts/list / prompts/get:
| Prompt | Description |
|---|---|
search_in_native_language |
Query format guidance for non-English Wikipedia |
wikipedia_usage_guide |
Full guide covering all tools and best practices |
multilingual_research |
Step-by-step guide for cross-language research |
REST API
Standard HTTP endpoints for non-MCP usage:
GET /health
GET /search/:query?limit=10
GET /article/:title
GET /summary/:title
GET /sections/:title
GET /links/:title
GET /coordinates/:title
GET /related/:title?limit=10
GET /summary/:title/query/:query/length/:maxLength
GET /summary/:title/section/:section/length/:maxLength
GET /facts/:title?topic=...&count=5
GET /test-connectivity
GET /supported-countries
POST /tools/:toolName
Architecture
src/
āāā server.ts # Express app wiring
āāā routes/
ā āāā mcp.ts # Streamable HTTP transport (POST + GET SSE + DELETE)
ā āāā rest.ts # REST endpoints
āāā mcp-server.ts # MCPServer helper ā tool dispatch, language routing
āāā handlers.ts # Tool handler functions
āāā toolRegistrations.ts # SDK tool + prompt registration
āāā toolDefinitions.ts # JSON Schema definitions (for REST /mcp info)
āāā prompts.ts # Prompt template logic
āāā wikipedia-client.ts # Wikipedia Action API client
āāā sanitize.ts # Input sanitization
āāā middleware.ts # Rate limiting, Server header removal
āāā utils.ts # Shared helpers
āāā types.ts # TypeScript interfaces
Transport design
The server uses stateless Streamable HTTP ā the correct mode for serverless platforms:
POST /mcpā receives JSON-RPC messages, returns JSON or SSE streamGET /mcpā opens an SSE channel for server-initiated messages (clients reconnect on timeout)DELETE /mcpā session termination (acknowledged; no server-side sessions to clean up)
A fresh McpServer + StreamableHTTPServerTransport instance is created for each request. All Wikipedia logic is handled by the shared, stateless MCPServer helper.
Development
npm install
npm run dev # tsx watch mode on port 8000
npm run build # tsc ā dist/
npm start # node dist/server.js
vercel dev # local Vercel simulation
Bot authentication
For higher Wikipedia API rate limits, create a bot password:
- Log in to your Wikipedia account
- Go to Special:BotPasswords
- Create a new bot password
- Set
WIKIPEDIA_BOT_USERNAME=YourAccount@BotNameandWIKIPEDIA_BOT_PASSWORD=...
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.