Skip to main content
Glama

get-page

Retrieve a wiki page object including metadata, license, revision details, and optional content formats like source or rendered HTML using the MediaWiki MCP server.

Instructions

Returns the standard page object for a wiki page, optionally including page source or rendered HTML, and including the license and information about the latest revision.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contentNoFormat of the page content to retrievenoContent
titleYesWiki page title

Implementation Reference

  • Main execution logic for the 'get-page' tool: parameter validation, API request to fetch wiki page data, response formatting via helper, and error handling.
    async function handleGetPageTool( title: string, content: ContentFormat, metadata: boolean ): Promise<CallToolResult> { if ( content === ContentFormat.none && !metadata ) { return { content: [ { type: 'text', text: 'When content is set to "none", metadata must be true' } ], isError: true }; } try { const data = await makeRestGetRequest<MwRestApiPageObject>( `/v1/page/${ encodeURIComponent( title ) }${ getSubEndpoint( content ) }` ); return { content: getPageToolResult( data, content, metadata ) }; } catch ( error ) { return { content: [ { type: 'text', text: `Failed to retrieve page data: ${ ( error as Error ).message }` } as TextContent ], isError: true }; } }
  • Registers the 'get-page' tool on the MCP server, specifying name, description, input schema with Zod, annotations, and references the handler function.
    export function getPageTool( server: McpServer ): RegisteredTool { return server.tool( 'get-page', 'Returns a wiki page. Use metadata=true to retrieve the revision ID required by update-page. Set content="none" to fetch only metadata without content.', { title: z.string().describe( 'Wiki page title' ), content: z.nativeEnum( ContentFormat ).optional().default( ContentFormat.source ).describe( 'Type of content to return' ), metadata: z.boolean().optional().default( false ).describe( 'Whether to include metadata (page ID, revision info, license) in the response' ) }, { title: 'Get page', readOnlyHint: true, destructiveHint: false } as ToolAnnotations, async ( { title, content, metadata } ) => handleGetPageTool( title, content, metadata ) ); }
  • Formats the response content from the API data, handling different content formats (source, html) and optionally including metadata.
    function getPageToolResult( result: MwRestApiPageObject, content: ContentFormat, metadata: boolean ): TextContent[] { if ( content === ContentFormat.source && !metadata ) { return [ { type: 'text', text: result.source ?? 'Not available' } ]; } if ( content === ContentFormat.html && !metadata ) { return [ { type: 'text', text: result.html ?? 'Not available' } ]; } const results: TextContent[] = [ getPageMetadataTextContent( result ) ]; if ( result.source !== undefined ) { results.push( { type: 'text', text: `Source:\n${ result.source }` } ); } if ( result.html !== undefined ) { results.push( { type: 'text', text: `HTML:\n${ result.html }` } ); } return results; }
  • Generates text content block with page metadata like ID, title, revision info, license, etc.
    function getPageMetadataTextContent( result: MwRestApiPageObject ): TextContent { return { type: 'text', text: [ `Page ID: ${ result.id }`, `Title: ${ result.title }`, `Latest revision ID: ${ result.latest.id }`, `Latest revision timestamp: ${ result.latest.timestamp }`, `Content model: ${ result.content_model }`, `License: ${ result.license.url } ${ result.license.title }`, `HTML URL: ${ result.html_url ?? 'Not available' }` ].join( '\n' ) }; }
  • src/server.ts:29-29 (registration)
    Calls registerAllTools which includes the getPageTool registrar, ultimately registering 'get-page' on the server.
    registerAllTools( server );

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ProfessionalWiki/MediaWiki-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server