MCP服务器中的Screener
该项目提供了 模型上下文协议(MCP) 允许像Claude这样的大型语言模型(LLM)与来自以下位置的数据交互的服务器 Screener.in 印度股市分析。
使用 FastMCP 在Screener.in上定义用于获取公司概述、财务比率和搜索公司的工具、资源和提示。
免责声明: 此服务器依赖于网络抓取Screener.in。
- 脆弱性: 如果Screener.in更改其网站结构,则网络抓取可能会中断。
- 速率限制/阻塞: 如果您过快地发出太多请求,Screener.in可能会阻止或限制您的IP。负责任地使用,如果遇到问题,可以考虑增加延迟。
- 服务条款: 始终审查并遵守Screener.in关于自动数据提取的服务条款。该项目用于教育和个人使用演示。
特性
MCP服务器提供以下功能:
- 工具:
- get_company_overview:使用公司股票代码(例如“RELIANCE”)获取公司概况。 - get_peer_comparision:获取公司的同行比较。 - search_companies:根据查询字符串在Screener.in中搜索公司。
- 资源(通过资源模板):
- screener://company/{company_symbol}/overview_data:提供公司的概览数据。 - screener://company/{company_symbol}/company_peer_comparision_resource:提供公司的同行比较作为资源。
- 提示:
- suggest_company_analysis:生成提示,让LLM使用可用资源分析公司。
先决条件
设置和安装
- 克隆存储库(如果您还没有):
git clone
cd screener_mcp- 创建虚拟环境并安装依赖项:
使用 uv:
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .这将以可编辑模式安装项目及其所有依赖项,如中所定义 pyproject.toml.
- (可选)创建
.env文件:
如果计划扩展此服务器以使用API密钥或其他敏感配置,请创建 .env 项目根目录中的文件:
# Example .env content (not currently used by this server)
# SOME_API_KEY="your_api_key_here"运行服务器
用于本地测试/直接调用
您可以直接运行服务器进行本地测试,或者如果另一个应用程序将管理其生命周期(例如,通过STDIO)。
- 使用定义的脚本入口点(安装后):
screener-server这将使用以下命令运行服务器 src/screener_mcp_server/server.py 及其 run_server_cli 函数,默认为STDIO传输。
- 使用
fastmcp run:
这对发展很有用,因为 fastmcp 处理模块路径。
fastmcp run src/screener_mcp_server/server.py:mcp(假设你 FastMCP 实例在 server.py 已命名 mcp).
- 直接使用Python:
python src/screener_mcp_server/server.py与Claude桌面应用程序集成
要将此服务器用作Claude Desktop应用程序中的工具,请执行以下操作:
- 导航到此项目的根目录 (
screener_mcp/)在你的终端。
- 跑吧
fastmcp install命令:
fastmcp install src/screener_mcp_server/server.py:mcp --name "Screener.in Tool" --with-editable .- src/screener_mcp_server/server.py:mcp:指向您的服务器文件和 FastMCP 例子 - --name "Screener.in Tool":Claude Desktop中的显示名称。 - --with-editable .:确保Claude Desktop使用您的本地项目代码并安装其依赖项。
- 重新启动克劳德桌面应用程序。
- 启用工具: 在Claude Desktop中,在工具/MCP服务器部分找到“Screener.In Tool”,并启用它进行聊天。
- 与克劳德互动: 现在,您可以让Claude使用该工具,例如:
- “使用Screener.in工具,让我了解一下RELIANCE。” - “在Screener.in上搜索‘塔塔汽车’。” - “使用Screener.in工具获取INFY的财务比率。”
发展
从Screener.in获取数据的核心逻辑位于 src/screener_mcp_server/screener_utils.py。此文件当前包含 占位符函数Web抓取逻辑是通过以下方式实现的 httpx 和 BeautifulSoup4 图书馆。
关键文件:
pyproject.toml:项目元数据和依赖关系。src/screener_mcp_server/server.py:定义FastMCP服务器、工具、资源和提示。src/screener_mcp_server/screener_utils.py:包含web抓取Screener.in的辅助函数。
实现Web抓取
实施时 screener_utils.py:
- 使用
httpx.AsyncClient用于向Screener.in发出HTTP请求。 - 检查Screener.in页面的HTML结构,以确定所需数据的正确CSS选择器或XPath表达式。
- 使用
BeautifulSoup4或类似的库来解析HTML并提取数据。 - 对网络问题、HTTP错误和网站结构变化实施稳健的错误处理。
- 如果您计划频繁获取数据,请考虑在请求之间添加延迟,以避免Screener.in的服务器过载。
未来增强功能(想法)
- 对抓取的数据实施缓存,以减少冗余请求。
- 添加更具体的工具/资源(例如,用于同行比较、图表、季度业绩)。
- 改进错误处理和报告。
- 添加可配置的抓取延迟。
贡献
欢迎投稿!请打开问题或提交拉取请求。
______________________________________________________________________
