Skip to main content
Glama

search-notion

Search and retrieve specific content from Notion workspaces to enhance productivity and streamline information access for users and LLMs.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes

Implementation Reference

  • Handler function for 'search-notion' tool: performs Notion search with the given query, sorts by last edited time descending, extracts and formats page titles, IDs, URLs, types, and last edited times, returns formatted JSON or error message.
    async ({ query }) => { try { const results = await notion.search({ query, sort: { direction: "descending", timestamp: "last_edited_time" }, }); // Format the results nicely const formattedResults = results.results.map((item: any) => { // Safely extract title based on the item type let title = "Untitled"; if (item.object === "page" && item.properties) { // Try to find title in various typical properties const titleProp = item.properties.title || item.properties.Name; if (titleProp?.title?.[0]?.plain_text) { title = titleProp.title[0].plain_text; } } return { id: item.id, title, url: item.url || "", type: item.object, last_edited: item.last_edited_time }; }); return { content: [{ type: "text", text: JSON.stringify(formattedResults, null, 2) }] }; } catch (error: any) { return { content: [{ type: "text", text: `Error searching Notion: ${error.message}` }], isError: true }; } }
  • src/index.ts:42-92 (registration)
    Registration of the 'search-notion' MCP tool using server.tool(), specifying input schema { query: z.string() } and the handler function.
    server.tool( "search-notion", { query: z.string() }, async ({ query }) => { try { const results = await notion.search({ query, sort: { direction: "descending", timestamp: "last_edited_time" }, }); // Format the results nicely const formattedResults = results.results.map((item: any) => { // Safely extract title based on the item type let title = "Untitled"; if (item.object === "page" && item.properties) { // Try to find title in various typical properties const titleProp = item.properties.title || item.properties.Name; if (titleProp?.title?.[0]?.plain_text) { title = titleProp.title[0].plain_text; } } return { id: item.id, title, url: item.url || "", type: item.object, last_edited: item.last_edited_time }; }); return { content: [{ type: "text", text: JSON.stringify(formattedResults, null, 2) }] }; } catch (error: any) { return { content: [{ type: "text", text: `Error searching Notion: ${error.message}` }], isError: true }; } } );
  • Input schema for 'search-notion' tool: requires a string 'query' validated by Zod.
    "search-notion", { query: z.string() },

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/SAhmadUmass/notion-mcp-server'

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