search-documents
Search and retrieve Sharepoint documents using a query, enabling quick access to organizational content via the Microsoft Graph API for efficient document management.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of results to return (as a string) | |
| query | Yes | Search query to find documents |
Implementation Reference
- src/index.ts:99-118 (handler)The handler function for the "search-documents" tool. It lists all drive items from the SharePoint drive, filters those whose name includes the provided query, limits the results to the specified maxResults, and returns them as a JSON string in text content. Handles errors by returning an error message.try { const driveRef = createDriveRef(siteRef, driveId); const driveItems = await listDriveItems(driveRef); const results = driveItems.filter((item: any) => item.name.includes(query)).slice(0, parseInt(maxResults.toString(), 10)); return { content: [{ type: "text", text: JSON.stringify(results, null, 2) // Ensure this is a valid string }] }; } catch (error) { return { content: [{ type: "text", text: `Error searching documents: ${error}` }], isError: true }; } }
- src/index.ts:95-98 (schema)The input schema defined using Zod for the "search-documents" tool, specifying the required 'query' parameter and optional 'maxResults'.query: z.string().describe("Search query to find documents"), maxResults: z.string().optional().describe("Maximum number of results to return (as a string)") }, async ({ query, maxResults = 10 }) => {
- src/index.ts:93-119 (registration)The registration of the "search-documents" tool using McpServer.tool(), including the tool name, input schema, and inline handler function."search-documents", { query: z.string().describe("Search query to find documents"), maxResults: z.string().optional().describe("Maximum number of results to return (as a string)") }, async ({ query, maxResults = 10 }) => { try { const driveRef = createDriveRef(siteRef, driveId); const driveItems = await listDriveItems(driveRef); const results = driveItems.filter((item: any) => item.name.includes(query)).slice(0, parseInt(maxResults.toString(), 10)); return { content: [{ type: "text", text: JSON.stringify(results, null, 2) // Ensure this is a valid string }] }; } catch (error) { return { content: [{ type: "text", text: `Error searching documents: ${error}` }], isError: true }; } } );