Skip to main content
Glama
get-page-history.ts2.81 kB
import { z } from 'zod'; /* eslint-disable n/no-missing-import */ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js'; import type { CallToolResult, TextContent, ToolAnnotations } from '@modelcontextprotocol/sdk/types.js'; /* eslint-enable n/no-missing-import */ import { makeRestGetRequest } from '../common/utils.js'; import type { MwRestApiGetPageHistoryResponse, MwRestApiRevisionObject } from '../types/mwRestApi.js'; export function getPageHistoryTool( server: McpServer ): RegisteredTool { return server.tool( 'get-page-history', 'Returns information about the latest revisions to a wiki page, in segments of 20 revisions, starting with the latest revision. The response includes API routes for the next oldest, next newest, and latest revision segments.', { title: z.string().describe( 'Wiki page title' ), olderThan: z.number().int().positive().optional().describe( 'Revision ID of the oldest revision to return' ), newerThan: z.number().int().positive().optional().describe( 'Revision ID of the newest revision to return' ), filter: z.string().optional().describe( 'Filter that returns only revisions with certain tags. Only support one filter per request.' ) }, { title: 'Get page history', readOnlyHint: true, destructiveHint: false } as ToolAnnotations, async ( { title, olderThan, newerThan, filter } ) => handleGetPageHistoryTool( title, olderThan, newerThan, filter ) ); } async function handleGetPageHistoryTool( title: string, olderThan?: number, newerThan?: number, filter?: string ): Promise< CallToolResult > { const params: Record<string, string> = {}; if ( olderThan ) { params.olderThan = olderThan.toString(); } if ( newerThan ) { params.newerThan = newerThan.toString(); } if ( filter ) { params.filter = filter; } let data: MwRestApiGetPageHistoryResponse; try { data = await makeRestGetRequest<MwRestApiGetPageHistoryResponse>( `/v1/page/${ encodeURIComponent( title ) }/history`, params ); } catch ( error ) { return { content: [ { type: 'text', text: `Failed to retrieve page history: ${ ( error as Error ).message }` } as TextContent ], isError: true }; } if ( data.revisions.length === 0 ) { return { content: [ { type: 'text', text: 'No revisions found for page' } as TextContent ] }; } return { content: data.revisions.map( getPageHistoryToolResult ) }; } function getPageHistoryToolResult( result: MwRestApiRevisionObject ): TextContent { return { type: 'text', text: [ `Revision ID: ${ result.id }`, `Timestamp: ${ result.timestamp }`, `User: ${ result.user.name } (ID: ${ result.user.id })`, `Comment: ${ result.comment }`, `Size: ${ result.size }`, `Delta: ${ result.delta }` ].join( '\n' ) }; }

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