wikipedia-mcp-server
Server Details
Search Wikipedia, read summaries and full text, target sections, find nearby pages, list languages.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/wikipedia-mcp-server
- GitHub Stars
- 2
- Server Listing
- wikipedia-mcp-server
TDQS
Scored across 6 tools
Each tool targets a distinct resource or action: full article retrieval, table of contents, summaries, language links, text search, and geosearch. While get_article, get_summary, and get_sections all read content, the descriptions clearly delineate granularity and use cases, preventing ambiguity.
All tools follow the same wikipedia_verb_noun pattern (get_article, get_languages, get_sections, get_summary, search_articles, search_nearby). The uniform prefix and consistent verb-object structure make the tool set highly predictable.
Six tools is well-scoped for a Wikipedia read/research server. Each tool earns its place, covering retrieval, navigation, search, and cross-language features without redundancy or bloat.
The surface covers core read workflows: search, summary, full article, section navigation, language editions, and nearby articles. Minor gaps like category listing or page history are absent, but these are not essential for the server's evident retrieval-focused purpose.
Available Tools
6 toolswikipedia_get_articleGet Wikipedia ArticleARead-onlyInspect
Fetch article content as clean plain text. Without section_index: returns the full article with == Section == markers preserved for structure — or, when the article exceeds the size budget, a compact section outline (truncated: true) that points to wikipedia_get_sections plus a section_index read instead of the full text. With section_index (from wikipedia_get_sections): returns that section and every subsection nested under it, each heading above its own body. section_index 0 is the lead section, the text above the first heading, which is the full prose wikipedia_get_summary returns only a truncated fragment of. Section-targeted reads are faster and smaller when only part of the article is needed. Data tables are omitted from both paths, so a section whose body is entirely a data table returns its heading and little else; tables used only for layout, such as multi-column lists, keep their content. Page furniture is omitted as well — maintenance banners, sister-project and library-resource boxes, portal bars, and spoken-article notices — while a hatnote naming a related article is kept. Redirect pages are followed automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title (e.g. "Python (programming language)"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
| section_index | No | Section index from wikipedia_get_sections. 0 reads the lead section (Introduction) — the text above the first heading. Omit for the full article. Providing this returns the targeted section plus every subsection nested under it, as plain text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| title | No | Resolved article title. |
| pageid | No | Wikipedia page ID. Absent on API parse responses that omit it. |
| content | No | Plain-text article content. Both full articles and section reads carry == Section == markers above the text each one heads. When truncated is true, this instead carries a section outline (heading names and byte sizes) plus a pointer to the targeted-read path. |
| language | No | Language edition queried. |
| truncated | No | True when a full-article read exceeded the size budget and content is a section outline instead of the full text. Always false for section reads and for full articles within budget. |
| content_type | No | Content type: "full_article" or "section". |
| section_title | No | Section title when section_index was provided — "Introduction" for the lead, which has no heading of its own. Absent for full-article reads. |
| original_length | No | Character length of the full article text before outlining. Present only when truncated is true. |
| sections_suggested | No | True when content is an outline — call wikipedia_get_sections, then wikipedia_get_article with a section_index to read a specific section. Present only when truncated is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint and openWorldHint. The description goes far beyond by disclosing behavior under size budget (truncated: true with a compact outline), omission of data tables and page furniture, retention of hatnotes, and automatic redirect following. This describes what the agent will actually receive and what gets discarded, providing rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds unique value. It is front-loaded with the core action and then systematically covers modes, truncation, table handling, furniture, and redirects without redundancy. The structure logically flows from general behavior to edge cases, and the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple modes, truncation, omission behaviors) and the availability of an output schema, the description covers all critical aspects: when truncation occurs, what the fallback is, what is omitted, what is kept, and how redirects are handled. It also ties into sibling tools, leaving no gap in an agent's ability to decide when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds extra nuance, especially for section_index (0 meaning lead, nested subsections behavior) and title character restrictions. While the description does not spell out the language parameter format beyond schema, it meaningfully enriches the two most behaviorally complex parameters, so it earns above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fetch') and resource ('article content') as clean plain text, and clearly distinguishes between the full-article mode and the section-targeted mode. It also references sibling tools (wikipedia_get_sections, wikipedia_get_summary) with explicit contrasts, so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: it explains when section_index should be used ('faster and smaller when only part of the article is needed'), the truncation fallback to sections plus a section_index read, and clarifies that the summary tool returns only a truncated fragment of the lead, implying this tool is needed for full prose. No alternative tool is left ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_get_languagesGet Wikipedia Article LanguagesARead-onlyInspect
List the language editions available for a Wikipedia article. Returns language codes, article titles in each language, and full URLs. Useful for cross-language research and for discovering the correct article title in a target language before fetching it. A popular article exists in hundreds of editions, so pass editions to narrow the answer to the codes you care about — the codes with no article come back under missing, and total_languages still reports the full count. Redirect pages are followed automatically, and source_title reports the resolved article the links belong to. The language parameter specifies which edition to query from.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title in the source language edition. A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| editions | No | Edition codes to keep, e.g. ["fr", "de", "gsw"]. Each is matched case-insensitively against both edition_code and language_code, so either spelling of a mismatch edition finds it ("gsw" matches the edition whose edition_code is "als"). Omit to list every edition. A code with no article for this title is reported under missing rather than dropped, and is not a failure. | |
| language | No | Wikipedia language edition to query from (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| missing | No | Requested edition codes with no article for this title, echoed as they were passed. Present whenever editions was given — empty when every code matched — and absent otherwise. |
| languages | No | Available language editions excluding the source language. Narrowed to the requested codes when editions was given, and empty when none of them matched. |
| source_title | No | Resolved article title in the source language edition — the redirect target when the input was an alias. |
| source_language | No | The language edition that was queried. |
| total_languages | No | Total number of other language editions the article has. Always the unfiltered count, so it exceeds the length of languages whenever editions narrowed the list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses important behaviors: redirects are followed automatically, source_title reports the resolved article, missing edition codes are returned under a missing field, and total_languages still reports the full count. This gives the agent a clear picture of edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and return value, then adds use-case context and behavioral details. Every sentence contributes useful information without fluff or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, read-only annotations, and detailed parameter documentation in the schema, the description is complete for an agent to select and invoke the tool correctly. It covers redirect handling, missing codes, total count, and the language edition behavior, leaving no material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters at 100% coverage, so the baseline is 3. The description adds meaningful semantics around editions, such as case-insensitive matching, the missing field behavior, and the fact that total_languages reflects the full count, going beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "List the language editions available for a Wikipedia article," and enumerates the returned data (language codes, titles, URLs). This clearly distinguishes it from siblings like wikipedia_get_article and wikipedia_get_sections, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use it for cross-language research and for discovering the correct article title in a target language before fetching it. It explains when narrowing with editions is useful, but it does not explicitly state when not to use this tool or name the alternative sibling to prefer in other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_get_sectionsGet Wikipedia Article SectionsARead-onlyInspect
Fetch the table of contents for a Wikipedia article. Returns section titles, heading levels, section numbering (e.g. "2.1"), and section_index values. The first entry is the lead section, index 0, titled Introduction — the text above the first heading, which Wikipedia's own table of contents omits. Pass a section_index to wikipedia_get_article to retrieve just that section. Useful for enumerating article structure before doing a targeted section read. Redirect pages are followed automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title (e.g. "Python (programming language)"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| title | No | Article title as resolved by Wikipedia. |
| pageid | No | Wikipedia page ID. Absent for stub articles. |
| language | No | Language edition queried. |
| sections | No | Article sections in document order with index values for targeted reads, led by the index-0 lead entry. |
| total_sections | No | Number of entries returned, counting the index-0 lead section. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. The description adds substantive behavioral details: the exact fields returned (titles, levels, numbering, section_index), the inclusion of the lead section at index 0, and automatic redirect following. These go well beyond the annotations and inform the agent of edge-case behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: it opens with the main action and return types, then clarifies the lead-section nuance, then provides a usage pointer, and finally a note on redirects. Each sentence earns its place, though it is slightly dense with detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (indicated), the description covers all necessary operational context: what is returned, how the lead section is handled, how to retrieve a specific section, and redirect behavior. No critical gaps remain for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes both parameters (title and language) with 100% coverage, including examples and constraints. The description adds no additional parameter-specific semantics beyond referencing section_index, which is a return value rather than an input. Baseline of 3 is appropriate since the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Fetch' and a clear resource 'table of contents for a Wikipedia article'. It also names the sibling 'wikipedia_get_article' and explains how sections relate to it, making the tool's distinct role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the tool is useful for enumerating article structure before a targeted section read, and directly instructs passing a section_index to wikipedia_get_article to retrieve that section. This gives clear when-to-use guidance and a pointer to the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_get_summaryGet Wikipedia SummaryARead-onlyInspect
Fetch the short article summary that answers "what is X?". The extract is a truncated fragment from the start of the lead section — usually a sentence or two, and as little as a tenth of the lead — alongside the Wikidata QID (wikibase_item) for cross-referencing with wikidata-mcp-server, a short description, a thumbnail URL, the canonical article URL, the revision the extract was read from, and, for a geotagged article, latitude and longitude that pass straight to wikipedia_search_nearby to answer "what else is notable near this". For the lead section in full, call wikipedia_get_article with section_index 0. Redirect pages are followed automatically. When page_type is "disambiguation", the title matched a disambiguation page — call wikipedia_search_articles with a more specific query to find the intended article. Prefer this over wikipedia_get_article unless article depth is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Article title (URL-decoded), e.g. "Python (programming language)". A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Canonical desktop URL of the article (e.g. "https://en.wikipedia.org/wiki/Eiffel_Tower"), for citing the page rather than composing a URL from the title. |
| error | No | Present when the call failed. Absent on success. |
| title | No | Resolved article title (may differ from input for redirects). |
| pageid | No | Wikipedia page ID. Absent when the API omits it. |
| extract | No | Plain-text summary extract — a truncated fragment from the start of the lead section, not the whole lead. Call wikipedia_get_article with section_index 0 for the full lead. |
| language | No | Language edition queried. |
| latitude | No | WGS 84 latitude of the article subject in decimal degrees. Pass with longitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged. |
| longitude | No | WGS 84 longitude of the article subject in decimal degrees. Pass with latitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged. |
| page_type | No | Page type from the Wikipedia REST API. Common values: "standard" (regular article), "disambiguation" (disambiguation page), "no-extract" (article with no extract). When "disambiguation", call wikipedia_search_articles with a more specific query. |
| description | No | Short description of the article subject. |
| revision_id | No | ID of the revision the extract was read from. "https://<edition>.wikipedia.org/w/index.php?oldid=<revision_id>" is a permanent link to exactly that version. |
| last_modified | No | ISO 8601 timestamp of that revision, for dating the content. |
| thumbnail_url | No | URL of the article thumbnail image, if available. |
| wikibase_item | No | Wikidata QID (e.g. "Q28865"). Use to chain into wikidata-mcp-server without a separate lookup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the readOnlyHint/openWorldHint annotations: extract is a truncated fragment (as little as a tenth of the lead), redirects are followed automatically, and disambiguation page_type handling is explained. This gives the agent operational expectations not present in structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: primary purpose first, then output-content detail, then sibling routing. The flow is logical and free of filler; even the longer sentence about returned fields packs necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with a rich output schema, the description covers all an agent needs: what the extract is, redirect behavior, disambiguation handling, the full-lead alternative, and preference over siblings. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (title, language) are already fully described in the input schema. The description adds contextual usage (e.g., redirects, page_type) but no new parameter-level semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch'), resource ('short article summary'), and purpose ('what is X?'). Explicitly distinguishes this from wikipedia_get_article, wikipedia_search_articles, and wikipedia_search_nearby, so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use vs alternatives: 'For the lead section in full, call wikipedia_get_article with section_index 0', 'When page_type is disambiguation... call wikipedia_search_articles', and 'Prefer this over wikipedia_get_article unless article depth is needed'. Also notes lat/long feeds wikipedia_search_nearby. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_search_articlesSearch WikipediaARead-onlyInspect
Search Wikipedia articles by full-text query. Returns ranked results with plain-text titles, snippets (HTML stripped), page IDs, and word counts. Best when the exact article title is unknown or when multiple articles on a topic are needed. Pass a result title to wikipedia_get_summary, wikipedia_get_article, or wikipedia_get_sections for follow-up reads. Use offset to page beyond the first result page. Supports all Wikipedia language editions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return per page (default 10, max 50). Must be a positive integer. | |
| query | Yes | Search query (e.g. "Python programming language"). Must not be empty. | |
| offset | No | Result offset for pagination (default 0). Pass the nextOffset from a previous response to fetch the next page; limit still governs the per-page size. An offset past the total match count returns an empty result array, not an error. Wikipedia serves no result past 10,000, so an offset at or beyond that fails — narrow the query instead. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The result ceiling that cut this page — the search window. Present only alongside truncated. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results returned on this page. |
| notice | No | Guidance when no results matched, when the end of results was reached while paging, or when the page was cut at the search window. Absent on ordinary result pages. |
| offset | No | The result offset applied to this page (echo of the input). |
| results | No | Ranked search results. |
| language | No | Language edition queried. |
| truncated | No | True when this page was cut at Wikipedia's 10,000-result search window and totalCount matches remain that no offset can reach. Absent on every other page, including a genuine last page. |
| nextOffset | No | Offset to request the next page. Present only when more results remain — pass it back as offset to continue; absent at the end of results. |
| totalCount | No | Total matching results in Wikipedia. |
| effectiveQuery | No | The query sent to Wikipedia. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and openness. The description adds value by specifying the exact output fields ('plain-text titles, snippets (HTML stripped), page IDs, and word counts') and the follow-up tool integration. It does not mention rate limits or error behavior beyond what the schema covers, but given the annotations, this is sufficient for a read-only search operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the core purpose and output, then provides routing and pagination guidance. Every sentence earns its place—purpose, output, and usage context are all packed efficiently without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with four parameters, an output schema, and read-only annotations, the description covers all critical aspects: what it does, what results look like, when to use it, how to follow up, and how to paginate. The only omission (the 10,000-result cap) is already documented in the offset parameter's schema description, so the description need not repeat it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds minimal new parameter meaning—it mentions the offset usage but essentially repeats what the schema's offset description states. The baseline of 3 applies because the schema does the heavy lifting; the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair: 'Search Wikipedia articles by full-text query.' It clearly differentiates from siblings by explaining it is best when the exact article title is unknown or multiple articles are needed, which contrasts with the retrieval-oriented sibling tools (wikipedia_get_article, etc.). This leaves no ambiguity about the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names the ideal conditions ('Best when the exact article title is unknown or when multiple articles on a topic are needed') and provides follow-up routing ('Pass a result title to wikipedia_get_summary, wikipedia_get_article, or wikipedia_get_sections'). It also gives pagination guidance ('Use offset to page beyond the first result page') and notes language support. This gives the agent clear when-to-use and how-to-chain instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wikipedia_search_nearbySearch Wikipedia NearbyARead-onlyInspect
Find Wikipedia articles about places near a geographic coordinate. Returns articles sorted by distance from the query point, with titles, page IDs, coordinates, and distance in meters. Useful for "what is notable near X?" research workflows. Only articles with geographic coordinates in their Wikidata record are returned — not all articles about locations are geotagged.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 10, max 500 — the MediaWiki geosearch ceiling). Must be a positive integer. Geosearch has no pagination, so articles past this limit are only reachable by raising it or searching narrower radii. | |
| language | No | Wikipedia language edition code (default "en"). Examples: "fr", "de", "ja". | en |
| latitude | Yes | WGS 84 latitude in decimal degrees (range: −90 to 90). | |
| longitude | Yes | WGS 84 longitude in decimal degrees (range: −180 to 180). | |
| radius_meters | No | Search radius in meters (default 1000, min 10, max 10000 — the MediaWiki geosearch bounds). Must be an integer; a value above the maximum is clamped to it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results returned. |
| notice | No | Guidance when results were capped (raise limit or sweep narrower radii) or when no geotagged articles were found (increase radius). Absent when neither applies. |
| results | No | Geotagged articles sorted ascending by distance_meters. |
| language | No | Language edition queried. |
| truncated | No | True when more articles matched than the limit allowed. Established by probing one result past the limit, so a match count landing exactly on the limit reports false. |
| queryLatitude | No | Latitude used for the search. |
| queryLongitude | No | Longitude used for the search. |
| radiusMetersUsed | No | Radius in meters used for the search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=true, so the description's job is to add context beyond that. It discloses the geotag requirement (only articles with coordinates), which is a non-obvious behavior, and describes the sort order and return fields. This adds value without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose and return details, then a concise usage hint and caveat. Zero fluff; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich schema covering all parameters and an output schema present, the description covers the essential behavioral aspects: what it returns, sorting, and the geotag limitation. Annotations handle safety and open-world expectations. An agent has everything needed to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — every parameter (limit, language, latitude, longitude, radius_meters) has a detailed description with defaults, ranges, and constraints. The tool description adds no parameter-specific meaning beyond what the schema already provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and resource (Wikipedia articles) with a clear scope (near a geographic coordinate), and explicitly describes the output (titles, page IDs, coordinates, distance in meters). This clearly distinguishes it from text-based search tools like wikipedia_search_articles and article retrieval like wikipedia_get_article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear use case ('what is notable near X?' research workflows) and notes a key limitation (only articles with coordinates in Wikidata are returned). However, it does not explicitly name alternatives or state when not to use it, relying on the purpose to imply context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
wikipedia_get_languages4 fields changed- added
Input schema / properties / editionsAdded value: +{ + "description": "Edition codes to keep, e.g. [\"fr\", \"de\", \"gsw\"]. Each is matched case-insensitively against both edition_code and language_code, so either spelling of a mismatch edition finds it (\"gsw\" matches the edition whose edition_code is \"als\"). Omit to list every edition. A code with no article for this title is reported under missing rather than dropped, and is not a failure.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / languages / descriptionPrevious value: -"Available language editions excluding the source language."New value: +"Available language editions excluding the source language. Narrowed to the requested codes when editions was given, and empty when none of them matched." - added
Output schema / properties / missingAdded value: +{ + "description": "Requested edition codes with no article for this title, echoed as they were passed. Present whenever editions was given — empty when every code matched — and absent otherwise.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / total_languages / descriptionPrevious value: -"Total number of other language editions available."New value: +"Total number of other language editions the article has. Always the unfiltered count, so it exceeds the length of languages whenever editions narrowed the list."
- Changed
wikipedia_get_summary5 fields changed- added
Output schema / properties / last_modifiedAdded value: +{ + "description": "ISO 8601 timestamp of that revision, for dating the content.", + "type": "string" +} - added
Output schema / properties / latitudeAdded value: +{ + "description": "WGS 84 latitude of the article subject in decimal degrees. Pass with longitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged.", + "type": "number" +} - added
Output schema / properties / longitudeAdded value: +{ + "description": "WGS 84 longitude of the article subject in decimal degrees. Pass with latitude to wikipedia_search_nearby, whose inputs carry these names, to find other notable articles around the same point. Absent for an article that is not geotagged.", + "type": "number" +} - added
Output schema / properties / revision_idAdded value: +{ + "description": "ID of the revision the extract was read from. \"https://<edition>.wikipedia.org/w/index.php?oldid=<revision_id>\" is a permanent link to exactly that version.", + "type": "string" +} - added
Output schema / properties / urlAdded value: +{ + "description": "Canonical desktop URL of the article (e.g. \"https://en.wikipedia.org/wiki/Eiffel_Tower\"), for citing the page rather than composing a URL from the title.", + "type": "string" +}
5 tool updates
- Changed
wikipedia_get_article8 fields changed- changed
Input schema / properties / section_index / descriptionPrevious value: -"Section index from wikipedia_get_sections. Omit for the full article. Providing this returns the targeted section plus every subsection nested under it, as plain text."New value: +"Section index from wikipedia_get_sections. 0 reads the lead section (Introduction) — the text above the first heading. Omit for the full article. Providing this returns the targeted section plus every subsection nested under it, as plain text." - added
Input schema / properties / section_index / maximumAdded value: +9007199254740991 - added
Input schema / properties / section_index / minimumAdded value: +0 - changed
Input schema / properties / section_index / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / title / descriptionPrevious value: -"Article title (e.g. \"Python (programming language)\")."New value: +"Article title (e.g. \"Python (programming language)\"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_section`: The section_index is out of range for this article. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `invalid_section`: The section_index is out of range for this article. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "invalid_section", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "invalid_section", + "invalid_language" +] - changed
Output schema / properties / section_title / descriptionPrevious value: -"Section title when section_index was provided. Absent for full-article reads."New value: +"Section title when section_index was provided — \"Introduction\" for the lead, which has no heading of its own. Absent for full-article reads."
- Changed
wikipedia_get_languages3 fields changed- changed
Input schema / properties / title / descriptionPrevious value: -"Article title in the source language edition."New value: +"Article title in the source language edition. A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the title in the specified language. `no_other_languages`: Article exists but has no other language editions. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the title in the specified language. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `no_other_languages`: Article exists but has no other language editions. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "no_other_languages", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "no_other_languages", + "invalid_language" +]
- Changed
wikipedia_get_sections9 fields changed- changed
Input schema / properties / title / descriptionPrevious value: -"Article title (e.g. \"Python (programming language)\")."New value: +"Article title (e.g. \"Python (programming language)\"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `no_sections`: Article exists but has no sections (stub or very short article). `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `no_sections`: Article exists but has no sections (stub or very short article). `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "no_sections", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "no_sections", + "invalid_language" +] - changed
Output schema / properties / sections / descriptionPrevious value: -"Ordered list of article sections with index values for targeted reads."New value: +"Article sections in document order with index values for targeted reads, led by the index-0 lead entry." - changed
Output schema / properties / sections / items / properties / index / descriptionPrevious value: -"Section index — pass to wikipedia_get_article as section_index."New value: +"Section index — pass to wikipedia_get_article as section_index. 0 is the lead section." - changed
Output schema / properties / sections / items / properties / level / descriptionPrevious value: -"Heading depth: 2 = ==, 3 = ===, etc."New value: +"Heading depth: 2 = ==, 3 = ===, etc. The lead section reports 1." - changed
Output schema / properties / sections / items / properties / number / descriptionPrevious value: -"Section number (e.g. \"2.1\") for hierarchical navigation."New value: +"Section number (e.g. \"2.1\") for hierarchical navigation; \"0\" for the lead section." - changed
Output schema / properties / sections / items / properties / title / descriptionPrevious value: -"Section heading text."New value: +"Section heading text; \"Introduction\" for the lead, which has no heading." - changed
Output schema / properties / total_sections / descriptionPrevious value: -"Total number of sections in the article."New value: +"Number of entries returned, counting the index-0 lead section."
- Changed
wikipedia_get_summary4 fields changed- changed
Input schema / properties / title / descriptionPrevious value: -"Article title (URL-decoded), e.g. \"Python (programming language)\"."New value: +"Article title (URL-decoded), e.g. \"Python (programming language)\". A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `not_found`: No Wikipedia article exists for the given title. `invalid_title`: The title contains characters MediaWiki cannot name a page with. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "not_found", - "invalid_language" -]New value: +[ + "not_found", + "invalid_title", + "invalid_language" +] - changed
Output schema / properties / extract / descriptionPrevious value: -"Plain-text lead-section extract."New value: +"Plain-text summary extract — a truncated fragment from the start of the lead section, not the whole lead. Call wikipedia_get_article with section_index 0 for the full lead."
- Changed
wikipedia_search_articles8 fields changed- changed
Input schema / properties / limit / maximumPrevious value: -9007199254740991New value: +50 - changed
Input schema / properties / offset / descriptionPrevious value: -"Result offset for pagination (default 0). Pass the nextOffset from a previous response to fetch the next page; limit still governs the per-page size. An offset past the total match count returns an empty result array, not an error."New value: +"Result offset for pagination (default 0). Pass the nextOffset from a previous response to fetch the next page; limit still governs the per-page size. An offset past the total match count returns an empty result array, not an error. Wikipedia serves no result past 10,000, so an offset at or beyond that fails — narrow the query instead." - changed
Input schema / properties / query / descriptionPrevious value: -"Search query (e.g. \"Python programming language\")."New value: +"Search query (e.g. \"Python programming language\"). Must not be empty." - added
Output schema / properties / capAdded value: +{ + "description": "The result ceiling that cut this page — the search window. Present only alongside truncated.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `empty_query`: The query is an empty string, which Wikipedia reads as a missing parameter. `offset_too_large`: The offset is at or past the search window, which has no continuation. `invalid_language`: The language is not a valid BCP 47 code, or names a Wikipedia edition that does not exist. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "invalid_language" -]New value: +[ + "empty_query", + "offset_too_large", + "invalid_language" +] - changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when no results matched — e.g. try different keywords, or that the end of results was reached when paging. Absent on successful result pages."New value: +"Guidance when no results matched, when the end of results was reached while paging, or when the page was cut at the search window. Absent on ordinary result pages." - added
Output schema / properties / truncatedAdded value: +{ + "description": "True when this page was cut at Wikipedia's 10,000-result search window and totalCount matches remain that no offset can reach. Absent on every other page, including a genuine last page.", + "type": "boolean" +}
6 tool updates
- First observed
wikipedia_get_article - First observed
wikipedia_get_languages - First observed
wikipedia_get_sections - First observed
wikipedia_get_summary - First observed
wikipedia_search_articles - First observed
wikipedia_search_nearby
Related MCP Connectors
Wikipedia MCP — wraps Wikipedia REST API (free, no auth)
Live Wikipedia edit feed, page summaries, trending pages, and Wikidata search.
Wikipedia, Wikidata and Wiktionary as clean JSON, not HTML. 1.9M searchable. Free, no auth.
Connect to your MediaWiki using simple credentials and manage content without OAuth. Search, read,…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables searching and retrieving Wikipedia content across multiple languages, including article summaries, sections, coordinates, and related topics.-
- AlicenseNot gradedqualityFmaintenanceProvides comprehensive access to Wikipedia content including article search, full text retrieval, summaries, categories, links, images, language versions, and external references through 9 specialized tools.9 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides structured access to Wikipedia content including search, summaries, images, links, and more via MCP tools.6Apache 2.0
- FlicenseNot gradedqualityDmaintenanceProvides access to Wikipedia through 10 tools including search, article retrieval, summarization, and fact extraction, with multi-language support and robust error handling.-
Glama MCP Gateway
Add one secure layer between your agents and this server.