MCP Info Gatherer
The MCP Info Gatherer server provides a unified interface to search and retrieve information from multiple online sources and identify trends. It offers the following tools:
Web Search (
search_web): Search the internet using Tavily API.Twitter/X Search (
search_twitter): Search posts and discussions (requires Bearer Token).Telegram Search (
search_telegram): Search messages across all channels, with user mode (API credentials) or bot mode (Bot Token).Telegram Channel Search (
search_telegram_channel): Search within a specific channel by username, chat ID, or invite link.Telegram Channel Info (
get_telegram_channel_info): Get channel title, description, subscriber count.GitHub Repository Search (
search_github): Search repos with qualifiers like language, stars, topics (optional token).GitHub Code Search (
search_github_code): Search code snippets.GitHub Issues/PR Search (
search_github_issues): Search issues and pull requests.Hugging Face Model Search (
search_huggingface): Search models (free, no key).Hugging Face Dataset Search (
search_huggingface_datasets): Search datasets (free).arXiv Paper Search (
search_arxiv): Search papers by query or category (free).Trend Analysis (
get_trends): Get trends on a topic from web, Twitter, GitHub, HuggingFace, or arXiv.
All results are returned as structured JSON. The server supports stdio and SSE transport, and can be deployed via systemd with reverse proxy.
Search scientific articles on arXiv by query or category (e.g., cat:cs.AI).
Search repositories, code, and issues on GitHub. Supports qualifiers like language, stars, org, etc.
Search AI models and datasets on Hugging Face Hub.
Search messages across Telegram channels and groups, and get channel info. Supports both user mode (full history) and bot mode (limited).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Info GathererSearch web and Twitter for latest AI news"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-gathererNginx + 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.comsystemd-сервис (без 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.targetsudo systemctl daemon-reload
sudo systemctl enable --now mcp-info-gathererReverse 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 | Полнотекстовый поиск по истории всех диалогов |
|
Bot mode | Только последние сообщения из каналов, где бот админ |
|
User mode использует Telethon (MTProto) — даёт полноценный поиск, как в официальном клиенте. При первом запуске потребуется ввести код подтверждения из Telegram.
Параметры:
query(str): Поисковый запросmax_results(int, optional): 1-100, по умолчанию 10
search_telegram_channel
Поиск сообщений в конкретном Telegram канале.
Параметры:
channel(str):@username,chat_idили invite linkquery(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
Trends
get_trends
Получить тренды по теме из указанного источника.
Параметры:
topic(str): Тема для поиска трендовmax_results(int, optional): 1-10, по умолчанию 5source(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-researcher —
search_web,search_twitter,search_github(исследование аудитории и аналогов)content-strategist —
search_web,search_huggingface,get_trends(контент-план)copywriter —
search_arxiv,search_github(фактчекинг для технических статей)analyst —
search_telegram,search_github_issues(мониторинг каналов и обсуждений)
Разработка
# Установка с dev-зависимостями
uv sync --group test
# Запуск тестов
uv run pytest
# Проверка типов
uv run mypy src/Available Tools
12 toolsget_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}
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes |
TDQS
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.
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.
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.
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.
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.
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.
get_trendsB
Получить тренды по теме.
Анализирует текущие тренды в указанной теме. Подходит для: контент-план, исследование аудитории, поиск актуальных тем для публикаций.
Args: topic: Тема для поиска трендов (например, "project management") max_results: Максимум трендов (1-10) source: Источник (web | twitter | github | huggingface | arxiv)
Returns: list[TrendItem]: [{title, description, url, source, mentions}]
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| source | No | web | |
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions the tool analyzes trends and returns a list, but lacks details on whether it's read-only, rate limits, authentication needs, or any side effects. The return format is partially described but behavioral specifics are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a brief purpose, usage bullet points, and clear Args/Returns sections. It is concise without unnecessary repetition, though the usage list could be integrated more succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no annotations, and no output schema, the description covers essential aspects (Args, Returns, usage). However, it omits error handling, authentication requirements, and more detailed behavioral traits, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must supplement. It includes an Args block explaining each parameter: topic with an example, max_results range, and source options. This adds meaningful context beyond the schema's defaults and titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves trends by topic and distinguishes from sibling search tools by focusing on trending topics rather than general search results. It explicitly lists use cases like content planning and audience research.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage cases ('content plan, audience research, finding current topics') but does not explicitly state when to avoid this tool or suggest alternatives. The sibling tools are search functions, implying differentiation, but no direct comparison.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| channel | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
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.
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.
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.
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.
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.
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.
12 tool updates
v0.1.0- First observed
get_telegram_channel_info - First observed
get_trends - First observed
search_arxiv - First observed
search_github - First observed
search_github_code - First observed
search_github_issues - First observed
search_huggingface - First observed
search_huggingface_datasets - First observed
search_telegram - First observed
search_telegram_channel - First observed
search_twitter - First observed
search_web
TDQS
Scored across 12 tools
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.
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.
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.
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
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
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Scrape, crawl and search the web for AI agents via MCP.
Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.
Search the agentic web. 4,100+ sites, 11 tools incl. check_url + verify_mcp for probe-before-use.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to perform multi-engine web search, fetch web pages, and extract clean Markdown content via MCP, with no API keys required.36MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to perform web searches with full content retrieval and multi-engine provenance, including trust scoring and local corpus persistence, via MCP integration.32Apache 2.0
- AlicenseNot gradedqualityBmaintenanceA 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.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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