stock_news
Retrieve recent news articles for specific stocks or cryptocurrencies using their ticker symbols to stay informed about market developments and company updates.
Instructions
根据股票代码或加密货币符号获取近期相关新闻
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 返回数量(int) | |
| symbol | Yes | 股票代码/加密货币符号 |
Implementation Reference
- mcp_aktools/__init__.py:130-133 (registration)Registers the 'stock_news' tool with MCP using @mcp.tool decorator, providing title and description.@mcp.tool( title="获取股票/加密货币相关新闻", description="根据股票代码或加密货币符号获取近期相关新闻", )
- mcp_aktools/__init__.py:134-145 (handler)Handler function that executes the 'stock_news' tool logic: caches and processes news from stock_news_em helper, returns formatted news list or 'Not Found'.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:147-170 (helper)Supporting helper function that queries EastMoney API for news related to the symbol and processes the DataFrame.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