get_sections
Retrieve the list of sections for a Wikipedia article by providing its title.
Instructions
Get the sections of a Wikipedia article.
Returns a dictionary with the article title and list of sections.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| sections | Yes |
Implementation Reference
- wikipedia_mcp/server.py:332-341 (handler)The 'get_sections' tool handler function registered via @register_tool decorator. It takes a 'title' string parameter, calls wikipedia_client.get_sections(title), and returns the result.
@register_tool("get_sections", model_output_schema(SectionsResponse)) def get_sections(title: str): """ Get the sections of a Wikipedia article. Returns a dictionary with the article title and list of sections. """ logger.info("Tool: Getting sections for: %s", title) sections = wikipedia_client.get_sections(title) return {"title": title, "sections": sections} - The WikipediaClient.get_sections() method that fetches the Wikipedia page and extracts its sections using _extract_sections().
def get_sections(self, title: str) -> List[Dict[str, Any]]: """ Get the sections of a Wikipedia article. Args: title: The title of the Wikipedia article. Returns: A list of sections. """ try: page = self.wiki.page(title) if not page.exists(): return [] return self._extract_sections(page.sections) except Exception as e: logger.error(f"Error getting Wikipedia sections: {e}") return [] - The _extract_sections() helper method that recursively extracts section data (title, level, text, subsections) from Wikipedia section objects.
def _extract_sections(self, sections, level=0) -> List[Dict[str, Any]]: """ Extract sections recursively. Args: sections: The sections to extract. level: The current section level. Returns: A list of sections. """ result = [] for section in sections: section_data = { "title": section.title, "level": level, "text": section.text, "sections": self._extract_sections(section.sections, level + 1), } result.append(section_data) return result - wikipedia_mcp/schemas.py:84-87 (schema)The SectionsResponse model class defining the output schema (title: str, sections: list[dict]) for the get_sections tool.
class SectionsResponse(MCPBaseModel): title: str sections: list[dict[str, Any]] - wikipedia_mcp/server.py:160-175 (registration)The register_tool() decorator that registers the function with FastMCP server under both the original name and 'wikipedia_' prefix, using the output schema.
def register_tool(name: str, output_schema: dict[str, Any]): def decorator(func): server.tool( func, name=name, annotations=_READ_ONLY_TOOL_ANNOTATIONS, output_schema=output_schema, ) server.tool( func, name=f"wikipedia_{name}", annotations=_READ_ONLY_TOOL_ANNOTATIONS, output_schema=output_schema, ) return func