获取股票/加密货币相关新闻
stock_newsRetrieve recent news articles for a stock ticker or cryptocurrency symbol.
Instructions
根据股票代码或加密货币符号获取近期相关新闻
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | 股票代码/加密货币符号 | |
| limit | No | 返回数量(int) |
Implementation Reference
- mcp_aktools/__init__.py:130-145 (handler)The stock_news tool handler: decorated with @mcp.tool, fetches news for a given stock/crypto symbol. Calls stock_news_em helper, deduplicates by '新闻内容', and returns a newline-joined string (up to limit items).
@mcp.tool( title="获取股票/加密货币相关新闻", description="根据股票代码或加密货币符号获取近期相关新闻", ) def stock_news( symbol: str = Field(description="股票代码/加密货币符号"), limit: int = Field(15, description="返回数量(int)", strict=False), ): news = list(dict.fromkeys([ v["新闻内容"] for v in ak_cache(stock_news_em, symbol=symbol, ttl=3600).to_dict(orient="records") if isinstance(v, dict) ])) if news: return "\n".join(news[0:limit]) return f"Not Found for {symbol}" - mcp_aktools/__init__.py:130-133 (registration)Registration of the stock_news tool via @mcp.tool decorator with title='获取股票/加密货币相关新闻' and description.
@mcp.tool( title="获取股票/加密货币相关新闻", description="根据股票代码或加密货币符号获取近期相关新闻", ) - mcp_aktools/__init__.py:147-170 (helper)The stock_news_em helper function: scrapes East Money (eastmoney.com) search API for news articles related to the given symbol, parses JSON response, sorts by date descending, and extracts '新闻内容' from the content field.
def stock_news_em(symbol, limit=20): cbk = "jQuery351013927587392975826_1763361926020" resp = requests.get( "http://search-api-web.eastmoney.com/search/jsonp", headers={ "User-Agent": USER_AGENT, "Referer": f"https://so.eastmoney.com/news/s?keyword={symbol}", }, params={ "cb": cbk, "param": '{"uid":"",' f'"keyword":"{symbol}",' '"type":["cmsArticleWebOld"],"client":"web","clientType":"web","clientVersion":"curr",' '"param":{"cmsArticleWebOld":{"searchScope":"default","sort":"default","pageIndex":1,"pageSize":10,' '"preTag":"<em>","postTag":"</em>"}}}', }, ) text = resp.text.replace(cbk, "").strip().strip("()") data = json.loads(text) or {} dfs = pd.DataFrame(data.get("result", {}).get("cmsArticleWebOld") or []) dfs.sort_values("date", ascending=False, inplace=True) dfs = dfs.head(limit) dfs["新闻内容"] = dfs["content"].str.replace(r"</?em>", "", regex=True) return dfs - mcp_aktools/__init__.py:134-137 (schema)Input schema for stock_news: symbol (string) and limit (int, default 15) parameters using pydantic Field.
def stock_news( symbol: str = Field(description="股票代码/加密货币符号"), limit: int = Field(15, description="返回数量(int)", strict=False), ):