Skip to main content
Glama

MCP Trader Server

by wshobson
MIT License
161
  • Apple
# MCP Trader Server [![smithery badge](https://smithery.ai/badge/mcp-trader)](https://smithery.ai/server/mcp-trader) A simplified Model Context Protocol (MCP) server for stock and cryptocurrency analysis. This version is optimized for learning with minimal configuration and clear code structure. ## Features ### Technical Analysis Tools The server provides the following tools for market analysis: - **analyze-stock**: Performs technical analysis on a given stock symbol - Required argument: `symbol` (string, e.g. "NVDA") - Returns comprehensive technical analysis including: - Moving average trends (20, 50, 200 SMA) - Momentum indicators (RSI, MACD) - Volatility metrics (ATR, ADRP) - Volume analysis - **analyze-crypto**: Performs technical analysis on cryptocurrency assets - Required argument: `symbol` (string, e.g. "BTC", "ETH", "BTCUSDT" for Binance) - Optional arguments: - `provider` (string, default: "tiingo", options: "tiingo", "binance") - `lookback_days` (integer, default: 365) - `quote_currency` (string, default: "usd" for Tiingo, "USDT" for Binance) - Returns comprehensive technical analysis including all stock indicators plus crypto-specific metrics - **relative-strength**: Calculates a stock's relative strength compared to a benchmark - Required argument: `symbol` (string, e.g. "AAPL") - Optional argument: `benchmark` (string, default: "SPY") - Returns relative strength metrics across multiple timeframes (21, 63, 126, 252 days) - **volume-profile**: Analyzes volume distribution by price - Required argument: `symbol` (string, e.g. "MSFT") - Optional argument: `lookback_days` (integer, default: 60) - Returns volume profile analysis including Point of Control (POC) and Value Area - **detect-patterns**: Identifies chart patterns in price data - Required argument: `symbol` (string, e.g. "AMZN") - Returns detected chart patterns with confidence levels and price targets - **position-size**: Calculates optimal position size based on risk parameters - Required arguments: - `symbol` (string, e.g. "TSLA") - `stop_price` (number) - `risk_amount` (number) - `account_size` (number) - Optional argument: `price` (number, default: current price) - Returns recommended position size and R-multiple profit targets - **suggest-stops**: Suggests stop loss levels based on technical analysis - Required argument: `symbol` (string, e.g. "META") - Returns multiple stop loss suggestions based on ATR, percentages, and technical levels ### FastMCP Resources (NEW) The server now supports FastMCP resources for direct market data access: #### Stock Resources - `stock://{symbol}` - Get current stock price and statistics - `stock://{symbol}/history` - Get historical price data #### Crypto Resources - `crypto://{symbol}` - Get current crypto price (supports Tiingo & Binance) - `crypto://{symbol}/history` - Get historical crypto data #### Cache Resources - `market://cache/clear` - Clear the data cache - `market://cache/status` - View cache statistics ### Data Sources - **Stocks**: [Tiingo API](https://api.tiingo.com/) for historical daily OHLCV data - **Crypto**: - Tiingo API for major pairs (BTC, ETH, etc. paired with USD) - Binance API for extended pairs and USDT quotes ## Setup ### Prerequisites - Python 3.11+ - [uv](https://github.com/astral-sh/uv) package manager - [Tiingo API Key](https://api.tiingo.com/) - Optional: [ta-lib](https://ta-lib.org/install/) for enhanced performance (see [INSTALL.md](INSTALL.md)) ### Environment Variables Create a `.env` file in your project root: ```bash # MCP Trader # Copy this file to .env for API access # Tiingo API Key (free tier works great) # Get yours at: https://www.tiingo.com/ TIINGO_API_KEY=your_tiingo_api_key_here # Optional: For higher rate limits BINANCE_API_KEY=your_binance_api_key_here BINANCE_API_SECRET=your_binance_api_secret_here ``` ### Installation ```bash # Clone the repository git clone https://github.com/wshobson/mcp-trader.git cd mcp-trader # Create virtual environment and install dependencies uv venv --python 3.11 source .venv/bin/activate # On Windows: .venv\Scripts\activate uv sync # Copy the example environment file cp .env.example .env # Edit .env and add your Tiingo API key ``` ## Configuration ### Claude Desktop App The configuration file location varies by platform: - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` #### Standard MCP Configuration ```json { "mcpServers": { "stock-analyzer": { "command": "uv", "args": [ "--directory", "/absolute/path/to/mcp-trader", "run", "mcp-trader" ], "env": { "TIINGO_API_KEY": "your_api_key_here" } } } } ``` #### FastMCP Configuration (with Resources) To enable FastMCP resources alongside the standard tools: ```json { "mcpServers": { "stock-analyzer": { "command": "uv", "args": [ "--directory", "/absolute/path/to/mcp-trader", "run", "python", "-m", "mcp_trader.fastmcp_server" ], "env": { "TIINGO_API_KEY": "your_api_key_here" } } } } ``` ### Running Tests The project includes a comprehensive test suite with 80% code coverage: ```bash # Run all tests pytest # Run with coverage report pytest --cov=src/mcp_trader --cov-report=term-missing # Run specific test file pytest src/mcp_trader/tests/test_indicators.py # Run with verbose output pytest -v ``` ## Running the Server ### Standard Mode Runs the MCP server with all tools: ```bash uv run mcp-trader ``` ### Development Mode For development and debugging: ```bash # Run with Python directly uv run python -m mcp_trader.server # Run with MCP Inspector for debugging npx @modelcontextprotocol/inspector uv --directory . run mcp-trader ``` ### Docker Deployment ```bash # Build the Docker image docker build -t mcp-trader . # Run the container docker run -e TIINGO_API_KEY=your_api_key_here -p 8000:8000 mcp-trader # Run in HTTP server mode docker run -e TIINGO_API_KEY=your_api_key_here -p 8000:8000 mcp-trader uv run mcp-trader --http ``` ## Example Usage In Claude Desktop, simply ask: ``` Analyze the technical setup for NVDA ``` The server will return a comprehensive technical analysis including trend status, momentum indicators, and key metrics. ![NVDA Technical Analysis](./technical-mcp.png) For crypto analysis: ``` Analyze BTC using Binance data ``` ## Project Structure ``` mcp-trader/ ├── src/mcp_trader/ │ ├── __init__.py # Package initialization │ ├── server.py # Main MCP server (simplified) │ ├── config.py # Simple configuration dataclass │ ├── models.py # Pydantic models for type safety │ ├── data.py # Market data providers │ ├── indicators.py # Technical analysis calculations │ └── tests/ # Comprehensive test suite ├── .env.example # Example environment configuration ├── pyproject.toml # Project dependencies └── README.md # This file ``` ## Troubleshooting ### Common Issues 1. **"TIINGO_API_KEY not set" error** - Copy `.env.example` to `.env` - Add your Tiingo API key to the `.env` file 2. **Test failures** - Ensure all dependencies are installed: `uv sync` - Run tests with verbose output: `pytest -v` 3. **Import errors** - Make sure you're in the virtual environment: `source .venv/bin/activate` - Reinstall dependencies: `uv sync --force-reinstall` ## Dependencies Core dependencies: - aiohttp >=3.11.11 - fastmcp >=0.4.2 - numpy >=1.26.4,<2.0 - pandas >=2.2.3 - pandas-ta >=0.3.14b0 - python-dotenv >=1.0.1 - setuptools >=75.8.0 Optional: - ta-lib >=0.6.0 (for enhanced performance) See [pyproject.toml](pyproject.toml) for the complete list. ## Learning Resources ### Understanding the Code 1. **Start with `server.py`**: The main entry point showing how MCP tools are defined 2. **Study `models.py`**: Learn about type-safe request/response handling with Pydantic 3. **Explore `indicators.py`**: See how technical analysis calculations are implemented 4. **Review tests**: The test suite demonstrates proper usage of each component ### Key Concepts - **MCP Tools**: Functions exposed to AI assistants via the Model Context Protocol - **Technical Indicators**: Mathematical calculations on price/volume data - **Type Safety**: Using Pydantic models for validation and documentation - **Async Programming**: All tools use async/await for concurrent operations ## Contributing Contributions that improve clarity and learning are especially welcome: 1. Fork the repository 2. Create a feature branch 3. Write clear, well-tested code 4. Ensure tests pass with good coverage 5. Submit a pull request ## Contributors - [@wshobson](https://github.com/wshobson) - [@zd87pl](https://github.com/zd87pl) - [@calclavia](https://github.com/calclavia) ## Future Plans - **Portfolio Analysis**: Tools for analyzing and optimizing portfolios - **Backtesting**: Test trading strategies on historical data - **Sentiment Analysis**: Integration with news and social media data - **Options Analysis**: Tools for options strategies and pricing - **Real-time Data**: Support for real-time market feeds - **Custom Strategies**: Framework for custom trading strategies - **Alerts**: Price and technical indicator notifications ## Further Reading Learn more about this project: - [Building a Stock Analysis Server with MCP, Part 1](https://sethhobson.com/2025/01/building-a-stock-analysis-server-with-mcp-part-1/) - Initial setup and core features - [Building a Stock Analysis Server with MCP, Part 2](https://sethhobson.com/2025/03/building-a-stock-analysis-server-with-mcp-part-2/) - Advanced analysis tools ## License This project is licensed under the MIT License - see the LICENSE file for details.

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/wshobson/mcp-trader'

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