search-page-by-prefix
Find MediaWiki pages by title prefix to locate specific content or explore related articles efficiently.
Instructions
Performs a prefix search for page titles.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | Yes | Search prefix | |
| limit | No | Maximum number of results to return | |
| namespace | No | Namespace to search |
Implementation Reference
- src/tools/search-page-by-prefix.ts:29-65 (handler)Main handler function `handleSearchPageByPrefixTool` that performs the prefix search using `mwn.getPagesByPrefix`, handles errors, empty results, and formats output using helper.async function handleSearchPageByPrefixTool( prefix: string, limit?: number, namespace?: number ): Promise< CallToolResult > { let data: string[]; try { const mwn = await getMwn(); const options: ApiQueryAllPagesParams = {}; if ( limit ) { options.aplimit = limit; } if ( namespace ) { options.apnamespace = namespace; } data = await mwn.getPagesByPrefix( prefix, options ); } catch ( error ) { return { content: [ { type: 'text', text: `Failed to retrieve search data: ${ ( error as Error ).message }` } as TextContent ], isError: true }; } if ( data.length === 0 ) { return { content: [ { type: 'text', text: `No pages found with the prefix "${ prefix }"` } as TextContent ] }; } return { content: data.map( getSearchPageByPrefixToolResult ) }; }
- Zod input schema for tool parameters: `prefix` (string), `limit` (optional number 1-500), `namespace` (optional nonnegative integer).prefix: z.string().describe( 'Search prefix' ), limit: z.number().int().min( 1 ).max( 500 ).optional().describe( 'Maximum number of results to return' ), namespace: z.number().int().nonnegative().optional().describe( 'Namespace to search' )
- src/tools/search-page-by-prefix.ts:9-27 (registration)Tool registrar function `searchPageByPrefixTool` calling `server.tool('search-page-by-prefix', ...)` with description, schema, annotations, and handler reference.export function searchPageByPrefixTool( server: McpServer ): RegisteredTool { return server.tool( 'search-page-by-prefix', 'Performs a prefix search for page titles.', { prefix: z.string().describe( 'Search prefix' ), limit: z.number().int().min( 1 ).max( 500 ).optional().describe( 'Maximum number of results to return' ), namespace: z.number().int().nonnegative().optional().describe( 'Namespace to search' ) }, { title: 'Search page by prefix', readOnlyHint: true, destructiveHint: false } as ToolAnnotations, async ( { prefix, limit, namespace } ) => handleSearchPageByPrefixTool( prefix, limit, namespace ) ); }
- Helper `getSearchPageByPrefixToolResult` to format page title as `TextContent`.function getSearchPageByPrefixToolResult( title: string ): TextContent { return { type: 'text', text: title }; }
- src/tools/index.ts:20-39 (registration)Import of registrar and addition to `toolRegistrars` array for bulk registration via `registerAllTools`.import { searchPageByPrefixTool } from './search-page-by-prefix.js'; const toolRegistrars = [ getPageTool, getPageHistoryTool, searchPageTool, setWikiTool, addWikiTool, removeWikiTool, updatePageTool, getFileTool, createPageTool, uploadFileTool, uploadFileFromUrlTool, deletePageTool, getRevisionTool, undeletePageTool, getCategoryMembersTool, searchPageByPrefixTool ];