Skip to main content
Glama
aws-powertools

Powertools MCP Search Server

fetch_doc_page

Retrieve detailed AWS Lambda Powertools documentation in markdown format by fetching a specific page URL obtained from search_docs. Use to access in-depth explanations of features or functions.

Instructions

Fetches the content of a Powertools documentation page and returns it as markdown. This allows you to read the full documentation for a specific feature or function. You MUST use the url returned form the search_docs tool since this will be the page to load.The URL must be from the docs.powertools.aws.dev domain. Use this after finding relevant pages with search_docs to get detailed information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes

Implementation Reference

  • The main handler function for the 'fetch_doc_page' tool. It takes a URL, fetches the documentation page content using `fetchWithCache`, logs the operation, handles errors, and returns a `CallToolResult`.
    const tool = async (props: ToolProps): Promise<CallToolResult> => {
      const { url } = props;
      logger.appendKeys({ tool: toolName });
      logger.appendKeys({ url: url.toString() });
    
      try {
        return buildResponse({
          content: await fetchWithCache({ url, contentType: 'text/markdown' }),
        });
      } catch (error) {
        return buildResponse({
          content: `${(error as Error).message}`,
          isError: true,
        });
        /* v8 ignore start */
      } finally {
        /* v8 ignore stop */
        logger.removeKeys(['tool', 'url']);
      }
    };
  • Zod schema for input validation and transformation of the URL parameter, ensuring it matches allowed domains, runtimes, and versions, and appending '/index.md'.
    const schema = {
      url: z
        .string()
        .url()
        .refine((url) => {
          const parsedUrl = new URL(url);
          if (parsedUrl.hostname !== ALLOWED_DOMAIN) {
            return false;
          }
          const pathParts = parsedUrl.pathname.split('/').filter(Boolean);
          const runtime = pathParts[1];
          if (!runtimes.includes(runtime as (typeof runtimes)[number])) {
            return false;
          }
          if (
            runtime === 'typescript' ||
            runtime === 'python' ||
            runtime === 'java'
          ) {
            const version = pathParts[2];
            const isValidSemver = /^\d+\.\d+\.\d+$/.test(version);
            const isLatest = version === 'latest';
            if (isValidSemver === false && isLatest === false) {
              return false;
            }
          }
    
          return true;
        })
        .transform((url) => {
          const parsedUrl = new URL(url);
          parsedUrl.pathname = parsedUrl.pathname.replace(/\/$/, '');
          parsedUrl.pathname = `${parsedUrl.pathname}/index.md`;
          return parsedUrl;
        }),
    };
  • src/server.ts:30-35 (registration)
    Registration of the 'fetch_doc_page' tool with the MCP server using `server.tool()`, providing name, description, input schema, and handler.
    server.tool(
      fetchDocPageName,
      fetchDocPageDescription,
      fetchDocPageInputSchema,
      fetchDocPage
    );
  • Constants defining the tool name 'fetch_doc_page' and its description.
    const name = 'fetch_doc_page' as const;
    const description =
      'Fetches the content of a Powertools documentation page and returns it as markdown.' +
      'Use this after finding relevant pages with search_docs to get detailed information.';
    
    export { name, description };

Tool Definition Quality

Score is being calculated. Check back soon.

Install 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/aws-powertools/powertools-mcp'

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