Skip to main content
Glama

web_fetch

Retrieve and clean web page content for AI analysis and operational tasks, enabling secure access to online information within developer workflows.

Instructions

Получить содержимое веб-страницы

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesURL страницы

Implementation Reference

  • Core handler implementing web_fetch: fetches URL with axios, parses HTML using cheerio, extracts title, clean text, and links, with host validation.
    async fetchPage(url: string): Promise<WebPage> {
      try {
        console.log(`🌐 Получение страницы: ${url}`);
        
        // Проверяем разрешенные хосты
        this.validateUrl(url);
        
        // Получаем страницу
        const response = await axios.get(url, {
          headers: {
            'User-Agent': this.userAgent,
          },
          timeout: 10000, // 10 секунд таймаут
        });
        
        // Парсим HTML
        const $ = cheerio.load(response.data);
        
        // Извлекаем основную информацию
        const title = $('title').first().text().trim() || 'Без заголовка';
        
        // Убираем скрипты, стили и другие ненужные элементы
        $('script, style, noscript, iframe, img, svg').remove();
        
        // Получаем чистый текст
        const text = $('body').text()
          .replace(/\s+/g, ' ')
          .trim();
        
        // Получаем ссылки
        const links = $('a[href]')
          .map((_, el) => $(el).attr('href'))
          .get()
          .filter(href => href && href.startsWith('http'))
          .slice(0, 20); // Ограничиваем количество ссылок
        
        const page: WebPage = {
          url,
          title,
          content: response.data,
          text: text.substring(0, 5000), // Ограничиваем размер текста
          links,
        };
        
        console.log(`✅ Страница получена: ${title} (${text.length} символов, ${links.length} ссылок)`);
        
        return page;
      } catch (error) {
        console.error('Ошибка получения страницы:', error);
        throw new Error(`Ошибка получения страницы: ${error}`);
      }
    }
  • Output schema/interface for the web page data returned by the handler.
    export interface WebPage {
      url: string;
      title: string;
      content: string;
      text: string;
      links: string[];
    }
  • src/server.ts:118-131 (registration)
    Registration of web_fetch tool in MCP server's ListTools handler, including name, description, and input schema.
    {
      name: 'web_fetch',
      description: 'Получить содержимое веб-страницы',
      inputSchema: {
        type: 'object',
        properties: {
          url: {
            type: 'string',
            description: 'URL страницы',
          },
        },
        required: ['url'],
      },
    },
  • Dispatch handler in main MCP server CallToolRequestSchema that invokes WebService.fetchPage.
    case 'web_fetch':
      return {
        content: await this.webService.fetchPage(args.url as string)
      };
  • Registration of web_fetch tool in HTTP transport's /tools endpoint.
    {
      name: 'web_fetch',
      description: 'Получить содержимое веб-страницы',
      inputSchema: {
        type: 'object',
        properties: {
          url: { type: 'string', description: 'URL страницы' }
        },
        required: ['url']
      }
    },

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/Galiusbro/MCP'

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