Skip to main content
Glama

wikipedia-mcp-server

Server Details

Search Wikipedia, read summaries and full text, target sections, find nearby pages, list languages.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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

A4.6/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
wikipedia_get_articleGet Wikipedia ArticleA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesArticle title (e.g. "Python (programming language)"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name.
languageNoWikipedia language edition code (default "en"). Examples: "fr", "de", "ja".en
section_indexNoSection 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

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
titleNoResolved article title.
pageidNoWikipedia page ID. Absent on API parse responses that omit it.
contentNoPlain-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.
languageNoLanguage edition queried.
truncatedNoTrue 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_typeNoContent type: "full_article" or "section".
section_titleNoSection title when section_index was provided — "Introduction" for the lead, which has no heading of its own. Absent for full-article reads.
original_lengthNoCharacter length of the full article text before outlining. Present only when truncated is true.
sections_suggestedNoTrue 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

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 LanguagesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesArticle title in the source language edition. A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name.
editionsNoEdition 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.
languageNoWikipedia language edition to query from (default "en"). Examples: "fr", "de", "ja".en

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
missingNoRequested 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.
languagesNoAvailable language editions excluding the source language. Narrowed to the requested codes when editions was given, and empty when none of them matched.
source_titleNoResolved article title in the source language edition — the redirect target when the input was an alias.
source_languageNoThe language edition that was queried.
total_languagesNoTotal 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

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 SectionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesArticle title (e.g. "Python (programming language)"). A trailing #fragment is accepted and ignored; the characters < > [ ] { } and | cannot appear in a Wikipedia page name.
languageNoWikipedia language edition code (default "en"). Examples: "fr", "de", "ja".en

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
titleNoArticle title as resolved by Wikipedia.
pageidNoWikipedia page ID. Absent for stub articles.
languageNoLanguage edition queried.
sectionsNoArticle sections in document order with index values for targeted reads, led by the index-0 lead entry.
total_sectionsNoNumber of entries returned, counting the index-0 lead section.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 SummaryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesArticle 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.
languageNoWikipedia language edition code (default "en"). Examples: "fr", "de", "ja".en

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNoCanonical 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.
errorNoPresent when the call failed. Absent on success.
titleNoResolved article title (may differ from input for redirects).
pageidNoWikipedia page ID. Absent when the API omits it.
extractNoPlain-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.
languageNoLanguage edition queried.
latitudeNoWGS 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.
longitudeNoWGS 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_typeNoPage 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.
descriptionNoShort description of the article subject.
revision_idNoID 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_modifiedNoISO 8601 timestamp of that revision, for dating the content.
thumbnail_urlNoURL of the article thumbnail image, if available.
wikibase_itemNoWikidata QID (e.g. "Q28865"). Use to chain into wikidata-mcp-server without a separate lookup.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 WikipediaA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return per page (default 10, max 50). Must be a positive integer.
queryYesSearch query (e.g. "Python programming language"). Must not be empty.
offsetNoResult 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.
languageNoWikipedia language edition code (default "en"). Examples: "fr", "de", "ja".en

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe result ceiling that cut this page — the search window. Present only alongside truncated.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of results returned on this page.
noticeNoGuidance 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.
offsetNoThe result offset applied to this page (echo of the input).
resultsNoRanked search results.
languageNoLanguage edition queried.
truncatedNoTrue 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.
nextOffsetNoOffset to request the next page. Present only when more results remain — pass it back as offset to continue; absent at the end of results.
totalCountNoTotal matching results in Wikipedia.
effectiveQueryNoThe query sent to Wikipedia.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 NearbyA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum 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.
languageNoWikipedia language edition code (default "en"). Examples: "fr", "de", "ja".en
latitudeYesWGS 84 latitude in decimal degrees (range: −90 to 90).
longitudeYesWGS 84 longitude in decimal degrees (range: −180 to 180).
radius_metersNoSearch 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

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of results returned.
noticeNoGuidance when results were capped (raise limit or sweep narrower radii) or when no geotagged articles were found (increase radius). Absent when neither applies.
resultsNoGeotagged articles sorted ascending by distance_meters.
languageNoLanguage edition queried.
truncatedNoTrue 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.
queryLatitudeNoLatitude used for the search.
queryLongitudeNoLongitude used for the search.
radiusMetersUsedNoRadius in meters used for the search.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updates
    • Changedwikipedia_get_languages4 fields changed
      • addedInput schema / properties / editions
        Added 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"
        +}
      • changedOutput schema / properties / languages / description
        Previous 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."
      • addedOutput schema / properties / missing
        Added 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"
        +}
      • changedOutput schema / properties / total_languages / description
        Previous 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."
    • Changedwikipedia_get_summary5 fields changed
      • addedOutput schema / properties / last_modified
        Added value: +{
        +  "description": "ISO 8601 timestamp of that revision, for dating the content.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / latitude
        Added 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"
        +}
      • addedOutput schema / properties / longitude
        Added 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"
        +}
      • addedOutput schema / properties / revision_id
        Added 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"
        +}
      • addedOutput schema / properties / url
        Added 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"
        +}
  2. 5 tool updates
    • Changedwikipedia_get_article8 fields changed
      • changedInput schema / properties / section_index / description
        Previous 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."
      • addedInput schema / properties / section_index / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / section_index / minimum
        Added value: +0
      • changedInput schema / properties / section_index / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / title / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "not_found",
        -  "invalid_section",
        -  "invalid_language"
        -]New value: +[
        +  "not_found",
        +  "invalid_title",
        +  "invalid_section",
        +  "invalid_language"
        +]
      • changedOutput schema / properties / section_title / description
        Previous 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."
    • Changedwikipedia_get_languages3 fields changed
      • changedInput schema / properties / title / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "not_found",
        -  "no_other_languages",
        -  "invalid_language"
        -]New value: +[
        +  "not_found",
        +  "invalid_title",
        +  "no_other_languages",
        +  "invalid_language"
        +]
    • Changedwikipedia_get_sections9 fields changed
      • changedInput schema / properties / title / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "not_found",
        -  "no_sections",
        -  "invalid_language"
        -]New value: +[
        +  "not_found",
        +  "invalid_title",
        +  "no_sections",
        +  "invalid_language"
        +]
      • changedOutput schema / properties / sections / description
        Previous 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."
      • changedOutput schema / properties / sections / items / properties / index / description
        Previous 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."
      • changedOutput schema / properties / sections / items / properties / level / description
        Previous value: -"Heading depth: 2 = ==, 3 = ===, etc."New value: +"Heading depth: 2 = ==, 3 = ===, etc. The lead section reports 1."
      • changedOutput schema / properties / sections / items / properties / number / description
        Previous 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."
      • changedOutput schema / properties / sections / items / properties / title / description
        Previous value: -"Section heading text."New value: +"Section heading text; \"Introduction\" for the lead, which has no heading."
      • changedOutput schema / properties / total_sections / description
        Previous value: -"Total number of sections in the article."New value: +"Number of entries returned, counting the index-0 lead section."
    • Changedwikipedia_get_summary4 fields changed
      • changedInput schema / properties / title / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "not_found",
        -  "invalid_language"
        -]New value: +[
        +  "not_found",
        +  "invalid_title",
        +  "invalid_language"
        +]
      • changedOutput schema / properties / extract / description
        Previous 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."
    • Changedwikipedia_search_articles8 fields changed
      • changedInput schema / properties / limit / maximum
        Previous value: -9007199254740991New value: +50
      • changedInput schema / properties / offset / description
        Previous 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."
      • changedInput schema / properties / query / description
        Previous value: -"Search query (e.g. \"Python programming language\")."New value: +"Search query (e.g. \"Python programming language\"). Must not be empty."
      • addedOutput schema / properties / cap
        Added value: +{
        +  "description": "The result ceiling that cut this page — the search window. Present only alongside truncated.",
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous 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."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_language"
        -]New value: +[
        +  "empty_query",
        +  "offset_too_large",
        +  "invalid_language"
        +]
      • changedOutput schema / properties / notice / description
        Previous 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."
      • addedOutput schema / properties / truncated
        Added 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"
        +}
  3. 6 tool updates
    • First observedwikipedia_get_article
    • First observedwikipedia_get_languages
    • First observedwikipedia_get_sections
    • First observedwikipedia_get_summary
    • First observedwikipedia_search_articles
    • First observedwikipedia_search_nearby

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides 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 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides access to Wikipedia through 10 tools including search, article retrieval, summarization, and fact extraction, with multi-language support and robust error handling.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.