Skip to main content
Glama

search_news_info

Search news articles using Brave News API to find relevant information based on specific keywords, returning titles, sources, dates, and descriptions.

Instructions

使用Brave新闻API搜索新闻

参数: query (str): 新闻搜索关键词 返回: str: 新闻搜索结果,包含标题、来源、日期和描述

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes

Implementation Reference

  • The handler function for the "search_news_info" MCP tool. Registered with @mcp.tool() decorator. Defines input schema via function signature and docstring (query: str -> str). Delegates execution to the _do_news_search helper.
    def search_news_info(query: str) -> str: """使用Brave新闻API搜索新闻 参数: query (str): 新闻搜索关键词 返回: str: 新闻搜索结果,包含标题、来源、日期和描述 """ return _do_news_search(query)
  • Core helper implementing the news search logic: detects language with _detect_language, calls Brave News API, processes results into formatted list with title, source, date, URL, description.
    def _do_news_search(query: str, country: str = "all", search_lang: str = None) -> str: """Internal function to handle news search using Brave News API""" try: query = query.encode('utf-8').decode('utf-8') # 如果未指定语言,自动检测 if search_lang is None: search_lang = _detect_language(query) logger.debug(f"Detected language: {search_lang} for query: {query}") url = "https://api.search.brave.com/res/v1/news/search" headers = { "Accept": "application/json", "Accept-Encoding": "gzip", "X-Subscription-Token": API_KEY } params = { "q": query, "count": 10, "country": country, "search_lang": search_lang, "spellcheck": 1 } logger.debug(f"Searching news for query: {query}") response = requests.get(url, headers=headers, params=params) response.raise_for_status() data = response.json() # 处理新闻搜索结果 results = [] if 'results' in data: for news in data['results']: title = news.get('title', 'No title').encode('utf-8').decode('utf-8') url = news.get('url', 'No URL') description = news.get('description', 'No description').encode('utf-8').decode('utf-8') date = news.get('published_time', 'Unknown date') source = news.get('source', {}).get('name', 'Unknown source') news_item = [ f"- {title}", f" Source: {source}", f" Date: {date}", f" URL: {url}", f" Description: {description}\n" ] results.append("\n".join(news_item)) if not results: return "No news found for your query." return "News Results:\n\n" + "\n".join(results) except requests.exceptions.RequestException as e: logger.error(f"News API request error: {str(e)}") return f"Error searching news: {str(e)}" except Exception as e: logger.error(f"News search error: {str(e)}") logger.exception("Detailed error trace:") return f"Error searching news: {str(e)}" @mcp.tool()
  • Supporting helper for language detection used in news search to set search_lang parameter automatically.
    def _detect_language(text: str) -> str: """检测文本语言并返回对应的语言代码""" # 定义语言检测规则 LANGUAGE_PATTERNS = { # 中文 (简体和繁体) 'zh-hans': ('\u4e00', '\u9fff'), # 简体中文 'zh-hant': ('\u4e00', '\u9fff'), # 繁体中文 # 日文 'jp': ('\u3040', '\u309f', '\u30a0', '\u30ff'), # 平假名和片假名 # 韩文 'ko': ('\uac00', '\ud7af'), # 谚文 # 俄文 'ru': ('\u0400', '\u04ff'), # 西里尔字母 # 阿拉伯文 'ar': ('\u0600', '\u06ff'), # 希伯来文 'he': ('\u0590', '\u05ff'), # 泰文 'th': ('\u0e00', '\u0e7f'), # 越南文 (使用扩展拉丁字母) 'vi': ('àáạảãâầấậẩẫăằắặẳẵèéẹẻẽêềếệểễìíịỉĩòóọỏõôồốộổỗơờớợởỡùúụủũưừứựửữỳýỵỷỹđ'), # 印地文 'hi': ('\u0900', '\u097f'), # 泰米尔文 'ta': ('\u0b80', '\u0bff'), # 特卢固文 'te': ('\u0c00', '\u0c7f'), } def contains_chars_in_range(text, *ranges): """检查文本是否包含指定Unicode范围内的字符""" if len(ranges) % 2 == 0: # 范围对 for i in range(0, len(ranges), 2): start, end = ranges[i:i+2] if any(start <= char <= end for char in text): return True else: # 字符列表 return any(char in ranges[0] for char in text) return False # 检测常见的非拉丁文字系统 for lang, pattern in LANGUAGE_PATTERNS.items(): if contains_chars_in_range(text, *pattern): # 对中文进行简繁体识别(这里使用简单规则,实际应用可能需要更复杂的逻辑) if lang in ['zh-hans', 'zh-hant']: # 这里可以添加更复杂的简繁体识别逻辑 return 'zh-hans' # 默认返回简体中文 return lang # 检测拉丁字母语言(简单示例) # 注意:这是一个非常简化的实现,实际应用可能需要更复杂的语言检测 LATIN_PATTERNS = { 'es': ['ñ', 'á', 'é', 'í', 'ó', 'ú', '¿', '¡'], 'fr': ['é', 'è', 'ê', 'à', 'ç', 'ù', 'û', 'ï'], 'de': ['ä', 'ö', 'ü', 'ß'], 'pt-pt': ['ã', 'õ', 'á', 'é', 'í', 'ó', 'ú', 'â', 'ê', 'ô'], 'it': ['à', 'è', 'é', 'ì', 'ò', 'ó', 'ù'], } for lang, patterns in LATIN_PATTERNS.items(): if any(pattern in text.lower() for pattern in patterns): return lang # 默认返回英语 return "en"

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/mcp2everything/mcp2brave'

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