这是一个用于与MongoDB股票数据交互以提供投资组合建议和市场洞察的Model Context Protocol (MCP)服务器,专门针对印度股市(NSE/BSE)。
此MCP服务器集成以下内容:
stock_data),用于直接访问股票数据它使Claude能够通过Claude桌面应用程序直接访问您的印度股票投资组合持有情况,分析股票表现,并提供个性化建议,同时构建一个持久的知识图谱以提高上下文感知能力。
克隆此仓库:
git clone <repository-url>
cd stock-mcp-server
安装依赖项:
pip install -r requirements.txt
从示例创建一个.env文件:
cp .env.example .env
编辑.env文件以配置您的设置:
# MongoDB配置
MONGODB_URI=mongodb://localhost:27017
MONGODB_DB_NAME=stock_data
# Alpha Vantage API
ALPHA_VANTAGE_API_KEY=your_api_key_here
# 印度股市设置
ALPHA_VANTAGE_DEFAULT_EXCHANGE=NSE # NSE或BSE
python server.py
Claude桌面应用使用配置文件连接到MCP服务器。您需要创建或编辑此文件以包含您的股票分析服务器。
创建或编辑配置文件的位置:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json添加股票分析MCP服务器配置:
{
"mcpServers": {
"stock-analysis-mcp": {
"command": "/path/to/your/python",
"args": [
"/path/to/stock_mcp_server/server.py"
],
"cwd": "/path/to/stock_mcp_server",
"env": {
"ALPHA_VANTAGE_API_KEY": "your_api_key_here",
"MONGODB_URI": "mongodb://localhost:27017",
"MONGODB_DB_NAME": "stock_data",
"MONGODB_HOLDINGS_COLLECTION": "holdings",
"MONGODB_FINANCIALS_COLLECTION": "detailed_financials",
"MONGODB_KNOWLEDGE_GRAPH_COLLECTION": "stock_knowledge_graph",
"ALPHA_VANTAGE_BASE_URL": "https://www.alphavantage.co/query",
"ALPHA_VANTAGE_RATE_LIMIT_MINUTE": "5",
"ALPHA_VANTAGE_RATE_LIMIT_DAY": "500",
"ALPHA_VANTAGE_DEFAULT_EXCHANGE": "NSE",
"MCP_SERVER_NAME": "stock-analysis-mcp",
"MCP_SERVER_VERSION": "0.1.0",
"LOG_LEVEL": "INFO",
"CACHE_ENABLED": "True",
"CACHE_TTL": "3600"
}
}
}
}
重要提示:
/usr/bin/python3或C:\Python39\python.exe)stock-analysis-mcp必须使用连字符,而不是下划线MCP_SERVER_NAME必须与服务器键匹配启动或重新启动Claude桌面应用
验证服务器连接:
一旦配置完成,您可以向Claude提问:
如果尽管服务器成功启动,但工具在Claude中仍未显示:
检查日志:
tail -f ~/Library/Logs/Claude/mcp-server-stock-analysis-mcp.log
验证服务器命名:
claude_desktop_config.json中的服务器键使用连字符(stock-analysis-mcp)MCP_SERVER_NAME与此名称匹配在更改后开始新的对话
启用开发者模式:在Claude的设置中启用
检查路径:确保配置中的所有路径都是绝对且正确的
完整的Python路径:使用Python可执行文件的完整路径(例如,运行which python以找到它)
检查Claude应用日志:
tail -f ~/Library/Logs/Claude/app.log
get_portfolio_summary获取投资组合概要portfolio_analysis逐个分析每个部分对于大型投资组合(20+只股票),服务器实现了分段方法:
获取投资组合概要:
get_portfolio_summary查看投资组合概览按分段分析:
portfolio_analysis和segment参数控制分段大小:
segment_size参数调整(1-5只股票每段)请求详细程度:
include_details=false进行快速概览(默认)include_details=true进行全面指标和见解响应大小管理:
服务器包括多项优化措施,确保Claude能够高效处理股票数据:
自适应响应大小:
财务数据压缩:
参数限制:
智能分段:
响应大小管理:
智能内部处理:
这些优化措施确保Claude能够高效处理您的股票数据,而不被过多信息压垮或遇到超时问题。
此仓库包括一个全面的测试套件,用于验证MCP服务器的功能。
test_mcp_server.py:一个全面的测试脚本,验证MCP服务器的所有端点和工具。test_client.py:一个简单的客户端,用于测试MCP服务器端点。test_server_startup.sh:测试服务器启动过程的脚本验证服务器能否正常启动:
./test_server_startup.sh
运行全面测试脚本:
python test_mcp_server.py
这将测试服务器的所有方面,包括:
如果您想跳过实际调用Alpha Vantage API的测试(以避免达到速率限制):
python test_mcp_server.py --skip-alpha-vantage
脚本将在控制台和test_mcp_server.log文件中输出详细的日志。最后,您将看到测试结果摘要:
=== 测试结果摘要 ===
database_connection: ✅ 通过
portfolio_holdings: ✅ 通过
knowledge_graph: ✅ 通过
symbol_formatting: ✅ 通过
alpha_vantage_api: ✅ 通过
trending_stocks: ✅ 通过
tools_handler: ✅ 通过
总体:7/7测试通过
如果测试失败,请检查以下内容:
数据库连接:确保MongoDB在配置的URI(默认:mongodb://localhost:27017)上运行,并且存在stock_data数据库。
Alpha Vantage API:检查.env文件中的API密钥是否设置并且没有超出速率限制。
数据可用性:某些测试需要MongoDB集合中的现有数据(例如,投资组合持有)。确保您的数据库具有必要的数据。
网络问题:Alpha Vantage测试需要互联网连接。
0:所有测试通过1:一个或多个测试失败这允许您将测试集成到持续集成管道中,该管道检查非零退出码。
当处理印度股市时,请记住:
NSE:SYMBOL(例如,NSE:RELIANCE)BSE:CODE(例如,BSE:500325)项目遵循模块化架构,以提高可维护性和关注点分离:
├── server.py # 主入口点
├── src/ # 源代码
│ ├── __init__.py # 包初始化
│ ├── config.py # 配置模块
│ ├── handlers/ # MCP处理器实现
│ │ ├── __init__.py
│ │ ├── resources.py # 资源处理器
│ │ ├── tools.py # 工具处理器,用于印度股票分析
│ │ └── prompts.py # 提示处理器
│ └── utils/ # 工具模块
│ ├── __init__.py
│ ├── database.py # MongoDB操作
│ └── alpha_vantage.py # Alpha Vantage API操作,针对印度市场
├── test_mcp_server.py # 全面测试脚本
├── test_client.py # 简单测试客户端
├── requirements.txt # 依赖项
└── .env.example # 示例环境配置
服务器提供了以下MCP工具,按类别组织:
limit:返回的最大持有数量(默认:10,最大:50)summary:返回简化的股票数据(默认:true)limit:最大分析股票数量(默认:10,最大:15)include_details:包括全面指标(默认:false)segment:要分析的股票段(默认:1)segment_size:每段股票数量(默认:5,最大:5)获取股票推荐:根据财务指标获取添加印度股票的推荐
criteria:要获取的推荐类型(例如,“增长”,“价值”,“分红”)(默认:“增长”)limit:返回的最大推荐数量(默认:5,最大:8)获取移除推荐:确定应从投资组合中移除的印度股票
limit:最大分析股票数量(默认:5,最大:10)limit:返回的最大推荐数量(默认:5,最大:8)获取技术分析:获取印度股票的技术分析指标(SMA,RSI)
symbol:要分析的股票代码(例如,“NSE:RELIANCE”)获取优化技术分析:智能技术分析以避免速率限制
symbol:要分析的股票代码(例如,“NSE:RELIANCE”)indicators:要分析的指标的逗号分隔列表(例如,“SMA,