Skip to main content
Glama
ESkuratov

MCP Info Gatherer

by ESkuratov

MCP Info Gatherer

MCP-сервер для сбора информации из разных источников: веб, Twitter/X, Telegram, GitHub, Hugging Face и arXiv. Реализует протокол MCP (Model Context Protocol).

Источники

Источник

Поиск

Тренды

API

Статус

Web (Tavily)

Требуется ключ

Работает

Twitter/X (API v2)

Требуется Bearer Token

Работает

Telegram (Telethon MTProto)

✅ User mode / ⚠️ Bot mode

API ID + Hash + Phone / Bot Token

Работает

GitHub (REST API)

✅ репозитории, код, issues

Без ключа (60 req/h)

Работает

Hugging Face (Hub API)

✅ модели, датасеты

Без ключа

Работает

arXiv (API)

✅ статьи

Без ключа

Работает

Related MCP server: qsearch

Установка

# Установка через uv
uv sync

# С тестовыми зависимостями
uv sync --group test

Настройка

Скопируйте .env.example в .env и укажите ключи:

cp .env.example .env
# WEB SEARCH — обязательный для search_web
TAVILY_API_KEY="tvly-..."

# TWITTER / X — опционально (требуется подписка X API)
X_BEARER_TOKEN="..."

# TELEGRAM — два режима:
# User mode (полноценный поиск по истории):
TELEGRAM_API_ID="12345"       # из my.telegram.org/apps
TELEGRAM_API_HASH="ваш_хэш"  # оттуда же
TELEGRAM_PHONE="+79001234567" # ваш номер телефона
# Bot mode (ограниченный — только последние сообщения):
TELEGRAM_BOT_TOKEN="токен_от_BotFather"

# GITHUB — опционально (для 5000 req/h вместо 60)
GITHUB_TOKEN="..."

# HUGGING FACE — опционально
HF_TOKEN="..."
  • Tavily API ключ — получить на tavily.com

  • X Bearer Token — получить в developer.x.com (требуется Basic/Pro подписка)

  • Telegram API ID и Hash — получить на my.telegram.org/apps (бесплатно)

  • Telegram Bot Token — получить у @BotFather

  • GitHub Token — создать в Settings → Developer settings → Personal access tokens

  • GitHub, Hugging Face, arXiv — работают без ключа

Запуск

# stdio (для интеграции с MCP-хостами — Claude Desktop, Cline, crewAI)
uv run mcp-info-gatherer

# SSE (для отладки и удалённого доступа)
uv run mcp-info-gatherer --transport sse --host 127.0.0.1 --port 8002

Развёртывание на VPS

Для удалённого доступа сервер запускается с SSE-транспортом.

Docker (рекомендуется)

В репозитории готовы Dockerfile, docker-compose.yml и конфиги в deploy/.

# 1. Склонировать репозиторий на VPS
git clone https://github.com/ESkuratov/mcp-info-gatherer.git /opt/mcp-info-gatherer
cd /opt/mcp-info-gatherer

# 2. Создать .env с ключами (см. .env.example)
cp .env.example .env
nano .env

# 3. Запустить
docker compose up -d --build

# Проверка
docker compose ps
curl -s http://127.0.0.1:8002/sse

Контейнер слушает 127.0.0.1:8002 — наружу отдаёт nginx (см. ниже). Telegram session (telegram_user_session.session) хранится в volume mcp_data и переживает перезапуски контейнера.

User mode Telegram на VPS: при первом запуске Telethon запросит код из Telegram. Проще авторизоваться локально (uv run mcp-info-gatherer), затем скопировать telegram_user_session.session в volume:

docker cp telegram_user_session.session mcp-info-gatherer:/data/

systemd (автозапуск при перезагрузке)

sudo cp deploy/mcp-info-gatherer.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now mcp-info-gatherer

Nginx + HTTPS

sudo cp deploy/nginx.conf /etc/nginx/sites-available/mcp-info-gatherer
# заменить mcp.example.com на свой домен
sudo ln -s /etc/nginx/sites-available/mcp-info-gatherer /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Сертификат Let's Encrypt:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d mcp.example.com

systemd-сервис (без Docker)

/etc/systemd/system/mcp-info-gatherer.service:

[Unit]
Description=MCP Info Gatherer
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/mcp-info-gatherer
EnvironmentFile=/opt/mcp-info-gatherer/.env
ExecStart=/opt/mcp-info-gatherer/.venv/bin/uv run mcp-info-gatherer --transport sse --host 0.0.0.0 --port 8002
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mcp-info-gatherer

Reverse proxy (рекомендуется)

Через Nginx с HTTPS и базовой аутентификацией:

server {
    listen 443 ssl;
    server_name mcp.example.com;

    ssl_certificate /etc/letsencrypt/live/mcp.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mcp.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8002;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400;
    }
}

Подключение из Claude Desktop

На локальной машине в claude_desktop_config.json:

"mcp-info-gatherer": {
  "url": "https://mcp.example.com"
}

Инструменты MCP

Web

search_web

Поиск информации в интернете через Tavily API.

Параметры:

  • query (str): Поисковый запрос

  • max_results (int, optional): Максимум результатов (1-20, по умолчанию 10)

Ответ:

{
  "results": [
    {
      "title": "AI Trends 2026",
      "url": "https://example.com/ai-trends",
      "content": "Краткое описание...",
      "source": "web",
      "score": 0.95
    }
  ],
  "total": 5,
  "source": "web",
  "error": null
}

Twitter / X

search_twitter

Поиск постов в Twitter/X. Требуется X_BEARER_TOKEN.

Параметры:

  • query (str): Поисковый запрос (например, "AI news lang:en")

  • max_results (int, optional): 1-100, по умолчанию 10

Telegram

search_telegram

Поиск сообщений по всем доступным Telegram каналам.

Два режима:

Режим

Возможности

Требуется

User mode

Полнотекстовый поиск по истории всех диалогов

API_ID + API_HASH + PHONE

Bot mode

Только последние сообщения из каналов, где бот админ

BOT_TOKEN

User mode использует Telethon (MTProto) — даёт полноценный поиск, как в официальном клиенте. При первом запуске потребуется ввести код подтверждения из Telegram.

Параметры:

  • query (str): Поисковый запрос

  • max_results (int, optional): 1-100, по умолчанию 10

search_telegram_channel

Поиск сообщений в конкретном Telegram канале.

Параметры:

  • channel (str): @username, chat_id или invite link

  • query (str): Поисковый запрос

  • max_results (int, optional): 1-100, по умолчанию 10

get_telegram_channel_info

Получить информацию о Telegram канале (название, описание, подписчики).

Параметры:

  • channel (str): @username, chat_id или invite link

GitHub

search_github

Поиск репозиториев на GitHub. Поддерживает qualifiers: language:python, stars:>100, topic:ai, org:openai, etc.

Параметры:

  • query (str): Поисковый запрос

  • max_results (int, optional): 1-100, по умолчанию 10

search_github_code

Поиск кода на GitHub.

Пример: "openai client lang:python"

search_github_issues

Поиск issues и PR на GitHub.

Пример: "bug label:bug state:open"

Hugging Face

search_huggingface

Поиск AI-моделей на Hugging Face Hub.

Параметры:

  • query (str): Поисковый запрос (например, "text-to-image")

  • max_results (int, optional): 1-100, по умолчанию 10

search_huggingface_datasets

Поиск датасетов на Hugging Face Hub.

Пример: "russian text"

arXiv

search_arxiv

Поиск научных статей на arXiv.

Параметры:

  • query (str): Поисковый запрос или категория ("cat:cs.AI", "cat:cs.LG")

  • max_results (int, optional): 1-100, по умолчанию 10

Получить тренды по теме из указанного источника.

Параметры:

  • topic (str): Тема для поиска трендов

  • max_results (int, optional): 1-10, по умолчанию 5

  • source (str, optional): web | twitter | github | huggingface | arxiv

Ответ:

[
  {
    "title": "AI в проектном менеджменте",
    "description": "Описание тренда...",
    "url": "https://example.com",
    "source": "web",
    "mentions": null
  }
]

Тестирование

# Запуск всех тестов
uv run pytest tests/ -v

# Только unit-тесты
uv run pytest tests/test_server.py -v

Что тестируется

  • Модели — Pydantic-схемы (SearchResult, SearchResponse, TrendItem)

  • Провайдеры — Web, Twitter, Telegram, GitHub, Hugging Face, arXiv

  • Реестр провайдеров — синглтон, неизвестные источники

  • MCP сервер — регистрация всех 10 инструментов

Структура проекта

mcp-info-gatherer/
├── src/mcp_info_gatherer/
│   ├── server.py          # MCP сервер (10 инструментов)
│   ├── models.py          # Pydantic-схемы
│   └── providers/
│       ├── base.py        # Базовый класс InfoProvider
│       ├── web_search.py  # Tavily API
│       ├── twitter.py     # X API v2
│       ├── telegram.py    # Telegram Bot API / Telethon
│       ├── github.py      # GitHub REST API v3
│       ├── huggingface.py # Hugging Face Hub API
│       └── arxiv.py       # arXiv API
├── tests/
│   └── test_server.py     # 27 тестов
├── deploy/
│   ├── nginx.conf          # reverse proxy с HTTPS
│   └── mcp-info-gatherer.service  # systemd unit для Docker
├── Dockerfile              # multi-stage сборка через uv
├── docker-compose.yml      # деплой на VPS
├── .dockerignore
├── .env.example
└── pyproject.toml

Интеграция с crewAI

В ai-gc-pipeline нужно будет создать bridge tool (tools/mcp_info_gatherer_tool.py), который будет запускать MCP сервер как subprocess и общаться с ним через JSON-RPC по stdio.

Агенты, которые будут использовать:

  • ux-researchersearch_web, search_twitter, search_github (исследование аудитории и аналогов)

  • content-strategistsearch_web, search_huggingface, get_trends (контент-план)

  • copywritersearch_arxiv, search_github (фактчекинг для технических статей)

  • analystsearch_telegram, search_github_issues (мониторинг каналов и обсуждений)

Разработка

# Установка с dev-зависимостями
uv sync --group test

# Запуск тестов
uv run pytest

# Проверка типов
uv run mypy src/

Available Tools

12 tools
get_telegram_channel_infoA

Получить информацию о Telegram канале.

Использует Telethon (MTProto). Требуется TELEGRAM_API_ID и TELEGRAM_API_HASH.

Args: channel: @username, chat_id или invite link

Returns: dict: {title, username, about, participants_count, link, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the use of Telethon (MTProto) and required credentials, and states the return format (dict with fields). However, it does not mention error handling, rate limits, or side effects. Given no annotations, the description provides moderate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a line for purpose, then technology, then Args/Returns sections. Every sentence adds value without redundancy. It is appropriate in length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (single parameter, no output schema), the description fully covers what the agent needs: input formats, output structure, and implementation detail. It is complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines 'channel' as a string. The description adds significant meaning: it accepts @username, chat_id, or invite link. This compensates for the 0% schema description coverage and is very helpful for an agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Получить информацию о Telegram канале' (Get info about a Telegram channel), and specifies the method (Telethon/MTProto). It distinguishes itself from sibling tools like 'search_telegram_channel' by focusing on information retrieval for a specific channel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prerequisites (TELEGRAM_API_ID and TELEGRAM_API_HASH) but does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for getting details of a known channel but lacks when-not-to-use information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_arxivA

Поиск научных статей на arXiv.

Использует arXiv API. Бесплатно, без ключа. Подходит для: исследование темы, поиск релевантных работ, мониторинг новых публикаций.

Args: query: Поисковый запрос (например, "large language models" или категория "cat:cs.AI") max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses free, no-key API access; documents query format with examples; specifies return structure. No annotations present, so description carries full burden and does well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two-line purpose, then usage context, then args. No redundant sentences. Front-loaded with purpose. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers inputs and outputs adequately for a simple search tool. Lacks details on error handling or rate limits, but these are minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates: query is explained with examples (including category syntax), max_results stated range 1-100. Adds significant value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches scientific articles on arXiv, a specific resource. It distinguishes from sibling search tools by naming the arXiv API, but does not explicitly compare to siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases: research topic exploration, relevant work search, new publication monitoring. However, no guidance on when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_githubA

Поиск репозиториев на GitHub.

Использует GitHub REST API v3. Без токена — 60 req/h, с GITHUB_TOKEN — 5000 req/h. Подходит для: поиск open-source решений, анализ аналогов, мониторинг трендовых проектов.

Args: query: Поисковый запрос (поддерживает qualifiers: language:python, stars:>100, topic:ai, etc.) max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date, score}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses rate limits with and without token (60 vs 5000 req/h) and mentions using GitHub REST API v3. No annotations were provided, so the description carries the full burden of behavioral disclosure and does so effectively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with purpose, then rate limits, usage, and parameter details. Every sentence adds value, though the args section could be tighter. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of sibling tools and no output schema, the description adequately explains the tool's scope (repos), auth requirements, and return structure (SearchResponse fields). Sufficient for an agent to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, so description compensates by explaining query supports qualifiers (language:python, stars:>100, topic:ai) and max_results range 1-100. Adds meaning beyond bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with 'Поиск репозиториев на GitHub' (Search repositories on GitHub), a specific verb+resource pairing. It distinguishes from sibling tools like search_github_code and search_github_issues, which target code or issues instead of repos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists suitable use cases: 'поиск open-source решений, анализ аналогов, мониторинг трендовых проектов' (open-source solutions, alternatives analysis, trend monitoring). Does not state exclusions or when not to use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_github_codeA

Поиск кода на GitHub.

Использует GitHub Code Search API. Подходит для: поиск примеров кода, библиотек, утилит.

Args: query: Поисковый запрос (например, "openai client lang:python") max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only mentions using the 'GitHub Code Search API', but does not disclose rate limits, authentication needs, error behavior, or limitations on result content. The Return section describes structure but lacks operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-line purpose, API source, use cases, and a clear Args/Returns block. Every element contributes without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description includes a Return structure defining fields. However, it lacks details on pagination, total count, error handling, and how it differs from the sibling search_github tool, which could be relevant for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description compensates by adding value: it provides an example for query ('openai client lang:python') and specifies a range for max_results (1-100). This adds meaningful context beyond the schema property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Поиск кода на GitHub' (Search code on GitHub), identifying the specific verb and resource. It distinguishes the tool from siblings like search_github (repos) and search_github_issues by focusing on code, and provides example use cases (code examples, libraries, utilities).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes suitability for searching code examples, libraries, and utilities, giving contextual guidance. However, it does not provide negative guidance (when not to use) or explicitly compare to siblings, though the resource differentiation is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_github_issuesA

Поиск issues и PR на GitHub.

Использует GitHub Issues API. Подходит для: мониторинг багов, обсуждений, фич-реквестов.

Args: query: Поисковый запрос (например, "bug label:bug state:open") max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date, score}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It states it uses GitHub Issues API but lacks details on authentication, rate limits, read-only nature, or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with sections for purpose, API, suitability, args, and returns, but contains slightly redundant phrasing (e.g., repeating 'Search for issues and PRs').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Returns a specific SearchResponse structure with fields, partially covering the absence of output schema. However, missing details on error handling or rate limits for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are clearly explained with examples (query search syntax) and constraints (max_results 1-100), fully compensating for the lack of schema descriptions (0% coverage).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches GitHub issues and PRs, and differentiates from sibling tools like search_github (general) and search_github_code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions suitability for monitoring bugs, discussions, and feature requests, implying use for issue/PR related queries, but does not explicitly state when not to use or provide alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_huggingfaceA

Поиск моделей на Hugging Face.

Использует HF Hub API. Бесплатно, без ключа. Подходит для: поиск AI-моделей, мониторинг новых релизов, анализ трендов в AI.

Args: query: Поисковый запрос (например, "text-to-image") max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses use of HF Hub API, free and no key required, and describes return structure with error field. Lacks details on rate limits or pagination, but adequate for a search tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is compact with clear sections (purpose, usage, args, returns), but uses some unnecessary repetition (e.g., 'Поиск моделей на Hugging Face' could be more concise).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, description covers purpose, API source, use cases, parameters, and return format adequately. Could mention pagination, but overall complete for a simple search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, description compensates by explaining query as search query and max_results as maximum results (1-100), but lacks deeper details like query format or default value (though schema shows default 10).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Поиск моделей на Hugging Face' (search models on Hugging Face), uses specific verb+resource, and distinguishes from sibling tools like search_huggingface_datasets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions suitability for searching AI models, monitoring releases, analyzing trends, but does not explicitly state when not to use or alternative tools among many siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_huggingface_datasetsA

Поиск датасетов на Hugging Face.

Использует HF Hub API. Бесплатно, без ключа. Подходит для: поиск датасетов для обучения, анализа данных.

Args: query: Поисковый запрос (например, "russian text") max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description reveals it is free, requires no key, and uses the HF Hub API. It also describes the return structure, providing transparency about behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description has a clear structure with purpose, usage, args, and returns sections. It is front-loaded. Minor redundancy from mixed Russian/English wording, but still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema), the description sufficiently covers purpose, parameters, and return format. Schema coverage is low but description compensates well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds context to both parameters: query example ('russian text') and max_results range (1-100). This goes beyond the schema's minimal titles (Query, Max Results).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for datasets on Hugging Face using the HF Hub API. It distinguishes itself from sibling tools like search_web or search_twitter by specifying the resource type (datasets).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a usage suggestion ('Подходит для: поиск датасетов для обучения, анализа данных') but lacks explicit when-not-to-use or alternative tool guidance. This is adequate but not exemplary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_telegramA

Поиск сообщений по всем доступным Telegram каналам.

Использует Telethon (MTProto) для поиска по истории каналов. Требуется TELEGRAM_BOT_TOKEN, TELEGRAM_API_ID и TELEGRAM_API_HASH. Подходит для: мониторинг каналов, поиск обсуждений, сбор информации по теме.

Args: query: Поисковый запрос max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions using Telethon and required tokens, which adds behavioral context. But without annotations, it lacks details on safety, destructiveness, or rate limits. Moderate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is adequately structured with sections but is somewhat verbose. Could be more concise by removing redundant docstring formatting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool across channels, the description includes return format and prerequisites but misses error handling specifics or pagination details. Sufficient but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage via structured descriptions, the docstring in the description explains query and max_results with purpose and range, adding value beyond the schema's type/title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Search messages across all available Telegram channels' with a specific verb (search) and resource (Telegram channels), and the tool name distinguishes it from siblings like search_telegram_channel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage contexts are given: 'monitoring channels, searching discussions, gathering topic information.' However, no explicit exclusion or comparison to sibling tools is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_telegram_channelA

Поиск сообщений в конкретном Telegram канале.

Использует Telethon (MTProto) для поиска по истории указанного канала. Требуется TELEGRAM_BOT_TOKEN, TELEGRAM_API_ID и TELEGRAM_API_HASH. Бот должен быть добавлен в канал.

Args: channel: @username канала (например, @durov), chat_id (например, -1001234567890), или invite link query: Поисковый запрос max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
channelYes
max_resultsNo

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given the absence of annotations, the description carries the burden of behavioral disclosure. It mentions the use of Telethon (MTProto) and required tokens, but does not cover potential limitations (e.g., rate limits, pagination behavior, or error handling beyond the response structure). The description adds some context but is not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with separate sections for purpose, requirements, arguments, and return value. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no output schema, and no annotations, the description is fairly complete. It covers prerequisites, parameter formats, and return fields. Minor gaps exist (e.g., no mention of error conditions or rate limits), but overall it provides sufficient context for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description fully compensates. It explains that 'channel' can be a @username, chat_id, or invite link; 'query' is the search query; and 'max_results' has a default of 10 and range 1-100. This adds meaningful guidance beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches messages in a specific Telegram channel, using a specific verb ('Поиск сообщений') and identifies the resource ('конкретном Telegram канале'). This distinguishes it from siblings like 'search_telegram' (which likely searches across channels) and 'get_telegram_channel_info' (which retrieves metadata).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists prerequisites: tokens (TELEGRAM_BOT_TOKEN, TELEGRAM_API_ID, TELEGRAM_API_HASH) and that the bot must be added to the channel. It also specifies argument formats (e.g., channel as @username, chat_id, or invite link). However, it does not explicitly contrast with sibling tools or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_twitterA

Поиск постов в Twitter/X.

Использует X API v2 (требуется Bearer Token). Подходит для: мониторинг обсуждений, поиск мнений, отслеживание трендов в реальном времени.

Args: query: Поисковый запрос (например, "AI news lang:en") max_results: Максимум результатов (1-100)

Returns: SearchResponse: {results: [{title, url, content, source, author, date, score}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the API version (v2), authentication requirement (Bearer Token), and return structure. It does not mention rate limits or destructive potential, but the tool is read-only, so this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for purpose, usage, args, and returns. It is somewhat verbose with blank lines but remains front-loaded and efficient. Could be slightly tighter but still good.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the return format. It mentions error field. It does not cover pagination or detailed error handling, but for a search tool this is sufficient. Sibling tools are diverse, so the platform specificity helps completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must add meaning. It provides examples for query (e.g., 'AI news lang:en') and explicitly states the range for max_results (1-100), going beyond just the type and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches posts on Twitter/X, which is a specific verb-resource combination. It distinguishes itself from sibling search tools (e.g., search_web, search_github) by naming the platform and use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists explicit use cases: monitoring discussions, opinion search, real-time trend tracking. However, it does not mention when not to use this tool or provide alternatives, though the use cases are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_webA

Поиск информации в интернете.

Использует Tavily API для поиска по вебу. Подходит для: фактчекинг, исследование рынка, поиск статей, сбор информации о продуктах и конкурентах.

Args: query: Поисковый запрос (например, "тренды AI 2026") max_results: Максимум результатов (1-20)

Returns: SearchResponse: {results: [{title, url, content, source, author, date, score}], total, source, error}

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions using Tavily API and describes the return format, but does not explicitly state it is read-only or address rate limits/auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly concise with a structured list of args and returns. Could be slightly tighter by not listing use cases separately, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters and no output schema, the description adequately covers input examples and return structure. Missing explicit error handling or edge cases, but sufficient for a general search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds example for query (e.g., 'AI trends 2026') and range for max_results (1-20), providing meaningful context beyond the schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs web search and lists specific use cases. However, it does not explicitly distinguish from sibling tools like search_twitter or search_github, though the name implies general web search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists suitable use cases (fact-checking, market research, etc.) but does not provide when-not-to-use or mention that platform-specific searches should use respective sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv0.1.0
    • First observedget_telegram_channel_info
    • First observedget_trends
    • First observedsearch_arxiv
    • First observedsearch_github
    • First observedsearch_github_code
    • First observedsearch_github_issues
    • First observedsearch_huggingface
    • First observedsearch_huggingface_datasets
    • First observedsearch_telegram
    • First observedsearch_telegram_channel
    • First observedsearch_twitter
    • First observedsearch_web

TDQS

A3.9/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target distinct sources (web, Twitter, GitHub, etc.), but search_telegram and search_telegram_channel have overlapping purposes that could confuse an agent. Otherwise, the tool set is well-separated.

Naming Consistency4/5

The majority follow a consistent 'search_<source>' pattern, but 'get_telegram_channel_info' and 'get_trends' use a different verb prefix. The inconsistency is minor but noticeable.

Tool Count5/5

With 12 tools covering multiple search sources (web, social media, code repositories, academic papers), the count is well-scoped for an information gathering server. Each tool has a clear role.

Completeness4/5

The server covers a wide range of search sources including web, Twitter, Hugging Face, Telegram, GitHub, and arXiv. Missing sources like YouTube or news are not critical but represent a minor gap.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform web searches with full content retrieval and multi-engine provenance, including trust scoring and local corpus persistence, via MCP integration.
    3
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    A controllable multi-source search MCP server for AI agents. Enables searching multiple sources like Reddit, X, YouTube, and more, with control over sources, time window, and optional synthesis.
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to perform unified web research through a single MCP server, including search, page fetching, recursive crawling, document parsing, YouTube transcript extraction, and deep multi-query research.
    2
    -

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/ESkuratov/mcp-info-gatherer'

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