mcrentcast/docs/INSTALLATION.md
Ryan Malloy adce62fa95 Add comprehensive testing and documentation
- Fix MCP server main() to use app.run() synchronously (FastMCP 2.x)
- Add comprehensive test suite with 32+ test methods for all 13 tools
- Add detailed installation guide (docs/INSTALLATION.md)
- Add complete usage guide with examples (docs/USAGE.md)
- Update README with production installation command
- Add pytest configuration with beautiful HTML reports
- Test caching, rate limiting, and error handling
- Document the production command: claude mcp add mcrentcast -- uvx --from git+https://git.supported.systems/MCP/mcrentcast.git mcrentcast
2025-09-09 14:09:17 -06:00

487 lines
11 KiB
Markdown

# mcrentcast Installation Guide
This guide provides detailed installation instructions for the mcrentcast MCP server for different use cases and environments.
## Prerequisites
Before installing mcrentcast, ensure you have:
- **Python 3.13+** - Required for running the server
- **Claude Desktop** - For MCP integration
- **uv package manager** - For Python dependency management
- **Rentcast API key** (optional for testing with mock API)
### Installing Prerequisites
#### Install uv (Python package manager)
```bash
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Verify installation
uv --version
```
#### Get a Rentcast API Key
1. Sign up at [Rentcast](https://rentcast.io/)
2. Navigate to your API dashboard
3. Generate an API key
4. Note the key for later configuration
## Installation Methods
### Method 1: Production Installation (Recommended)
This method installs the latest stable version directly from the git repository.
#### Step 1: Install with Claude MCP
```bash
claude mcp add mcrentcast -- uvx --from git+https://git.supported.systems/MCP/mcrentcast.git mcrentcast
```
#### Step 2: Configure API Key
Choose one of these methods to set your API key:
**Option A: Environment Variable**
```bash
export RENTCAST_API_KEY=your_actual_api_key
```
**Option B: .env File (Recommended)**
```bash
# Create .env file in your preferred directory
echo "RENTCAST_API_KEY=your_actual_api_key" > ~/.mcrentcast.env
```
**Option C: Set via Claude**
After installation, you can also set the API key through Claude:
```
User: Set my Rentcast API key to: your_actual_api_key
Claude: I'll set your Rentcast API key for this session.
[Uses set_api_key tool]
```
#### Step 3: Verify Installation
Test the installation by asking Claude to search for properties:
```
User: Search for properties in Austin, Texas
Claude: I'll search for properties in Austin, Texas using the Rentcast API.
[If successful, you'll see property results]
```
### Method 2: Development Installation
For development, testing, or customization:
#### Step 1: Clone Repository
```bash
git clone https://git.supported.systems/MCP/mcrentcast.git
cd mcrentcast
```
#### Step 2: Run Installation Script
```bash
# Make script executable
chmod +x install.sh
# Run installation
./install.sh
```
The installation script will:
- Install Python dependencies with uv
- Create data directory
- Initialize database
- Create example .env file
#### Step 3: Configure Environment
```bash
# Copy example environment file
cp .env.example .env
# Edit with your API key
nano .env
```
Set these essential variables in `.env`:
```env
RENTCAST_API_KEY=your_actual_api_key
USE_MOCK_API=false
CACHE_TTL_HOURS=24
DAILY_API_LIMIT=100
MONTHLY_API_LIMIT=1000
```
#### Step 4: Add to Claude
```bash
# Add development version to Claude
claude mcp add mcrentcast -- uvx --from . mcrentcast
```
### Method 3: Testing with Mock API
To test without consuming API credits:
#### Step 1: Install (Production or Development)
Follow either Method 1 or 2 above.
#### Step 2: Configure for Mock API
```bash
# Add to Claude with mock API configuration
claude mcp add mcrentcast-test -- uvx --from git+https://git.supported.systems/MCP/mcrentcast.git mcrentcast \
-e USE_MOCK_API=true \
-e RENTCAST_API_KEY=test_key_basic
```
#### Available Test Keys
| Key | Daily Limit | Use Case |
|-----|-------------|----------|
| `test_key_basic` | 100 | Standard testing |
| `test_key_free_tier` | 50 | Free tier simulation |
| `test_key_pro` | 1,000 | High-volume testing |
| `test_key_enterprise` | 10,000 | Unlimited testing |
| `test_key_rate_limited` | 1 | Rate limit testing |
### Method 4: Docker Installation
For containerized deployment:
#### Step 1: Clone and Configure
```bash
git clone https://git.supported.systems/MCP/mcrentcast.git
cd mcrentcast
# Configure environment
cp .env.example .env
nano .env # Set your API key
```
#### Step 2: Start Services
```bash
# Development mode with hot-reload
make dev
# Production mode
make prod
# Mock API mode for testing
make test-mock
```
## Environment Configuration
### Essential Environment Variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `RENTCAST_API_KEY` | Yes* | - | Your Rentcast API key |
| `USE_MOCK_API` | No | `false` | Use mock API for testing |
| `CACHE_TTL_HOURS` | No | `24` | Cache expiration time |
| `DAILY_API_LIMIT` | No | `100` | Daily request limit |
| `MONTHLY_API_LIMIT` | No | `1000` | Monthly request limit |
| `REQUESTS_PER_MINUTE` | No | `3` | Rate limit per minute |
*Not required when using mock API (`USE_MOCK_API=true`)
### Advanced Configuration
```env
# Database settings
DATABASE_URL=sqlite:///./data/mcrentcast.db
# Logging
LOG_LEVEL=INFO
DEBUG=false
# Mock API settings (for testing)
USE_MOCK_API=false
MOCK_API_URL=http://localhost:8001/v1
# Cache settings
MAX_CACHE_SIZE_MB=100
CACHE_CLEANUP_INTERVAL_HOURS=6
# Rate limiting
EXPONENTIAL_BACKOFF_ENABLED=true
MAX_RETRY_ATTEMPTS=3
```
## Verification and Testing
### Verify Installation
```bash
# Check if server can start (development only)
cd /path/to/mcrentcast
uv run mcrentcast
# Test API connectivity
uv run python -c "
from src.mcrentcast.config import settings
print('API Key configured:', bool(settings.rentcast_api_key))
"
```
### Test with Claude
1. **Basic Test**
```
User: What are the current API limits for mcrentcast?
Claude: I'll check the current API limits.
[Shows daily/monthly limits and current usage]
```
2. **Property Search Test**
```
User: Find 3 properties in San Francisco, CA
Claude: I'll search for properties in San Francisco.
[Shows property listings with addresses, prices, details]
```
3. **Value Estimation Test**
```
User: What's the estimated value of 123 Main St, Austin, TX?
Claude: I'll get a value estimate for that property.
[Shows estimated price range and comparables]
```
### Test Cache and Performance
```
User: Search for properties in Austin, TX (this should be cached on subsequent calls)
User: Get cache statistics to see hit/miss rates
User: Get usage statistics for the last 30 days
```
## Troubleshooting Installation Issues
### Common Installation Problems
#### 1. Python Version Issues
```bash
# Check Python version
python3 --version
python3.13 --version
# If Python 3.13 not available, install it
# Ubuntu/Debian:
sudo apt update
sudo apt install python3.13
# macOS with Homebrew:
brew install python@3.13
```
#### 2. uv Installation Issues
```bash
# Reinstall uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Restart shell or reload PATH
source ~/.bashrc # or ~/.zshrc
```
#### 3. Permission Issues
```bash
# Fix directory permissions
chmod -R 755 /path/to/mcrentcast
# Create data directory with correct permissions
mkdir -p data
chmod 755 data
```
#### 4. Database Initialization Issues
```bash
# Remove existing database and recreate
rm -f data/mcrentcast.db
# Reinitialize
uv run python -c "
from src.mcrentcast.database import db_manager
db_manager.create_tables()
print('Database initialized successfully')
"
```
#### 5. Claude MCP Integration Issues
**Server Not Found:**
```bash
# Check if server is registered
claude mcp list
# Remove and re-add if needed
claude mcp remove mcrentcast
claude mcp add mcrentcast -- uvx --from git+https://git.supported.systems/MCP/mcrentcast.git mcrentcast
```
**API Key Not Working:**
```bash
# Test API key directly
curl -H "X-Api-Key: your_key" https://api.rentcast.io/v1/properties
# Use mock API for testing
claude mcp add mcrentcast-test -- uvx --from git+https://git.supported.systems/MCP/mcrentcast.git mcrentcast \
-e USE_MOCK_API=true \
-e RENTCAST_API_KEY=test_key_basic
```
### Debugging Steps
1. **Check Installation Status**
```bash
# Verify uv installation
uv --version
# Check Python version
uv run python --version
# Verify dependencies
uv run python -c "import mcrentcast; print('Import successful')"
```
2. **Test API Connectivity**
```bash
# Test with mock API
USE_MOCK_API=true uv run python scripts/test_mock_api.py
# Test with real API (requires valid key)
RENTCAST_API_KEY=your_key uv run python scripts/test_mock_api.py
```
3. **Check Logs**
```bash
# Enable debug logging
DEBUG=true LOG_LEVEL=DEBUG uv run mcrentcast
```
4. **Database Verification**
```bash
# Check database file exists and is writable
ls -la data/mcrentcast.db
# Test database connection
uv run python -c "
from src.mcrentcast.database import db_manager
import asyncio
async def test_db():
stats = await db_manager.get_cache_stats()
print('Database connection successful')
asyncio.run(test_db())
"
```
## Environment-Specific Installation Notes
### Windows
```powershell
# Install uv for Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# Use PowerShell for environment variables
$env:RENTCAST_API_KEY = "your_actual_api_key"
```
### macOS
```bash
# Install uv via Homebrew (alternative)
brew install uv
# Set environment variable permanently
echo 'export RENTCAST_API_KEY=your_actual_api_key' >> ~/.zshrc
source ~/.zshrc
```
### Linux
```bash
# Install Python 3.13 on older distributions
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.13 python3.13-venv
# Set environment variable permanently
echo 'export RENTCAST_API_KEY=your_actual_api_key' >> ~/.bashrc
source ~/.bashrc
```
## Upgrading
### Upgrade Production Installation
```bash
# Remove old version
claude mcp remove mcrentcast
# Install latest version
claude mcp add mcrentcast -- uvx --from git+https://git.supported.systems/MCP/mcrentcast.git mcrentcast
```
### Upgrade Development Installation
```bash
cd /path/to/mcrentcast
# Pull latest changes
git pull origin main
# Update dependencies
uv sync
# Reinitialize if needed
./install.sh
```
## Uninstallation
### Remove from Claude
```bash
# Remove MCP server
claude mcp remove mcrentcast
# Also remove test server if installed
claude mcp remove mcrentcast-test
```
### Clean Development Installation
```bash
# Remove cloned repository
rm -rf /path/to/mcrentcast
# Remove environment variables
# Edit ~/.bashrc or ~/.zshrc to remove RENTCAST_API_KEY export
```
## Getting Help
If you encounter issues during installation:
1. **Check the documentation**
- [README.md](../README.md) - Overview and quick start
- [USAGE.md](./USAGE.md) - Usage examples
- [Mock API Guide](./mock-api.md) - Testing without credits
2. **Enable debug logging**
```bash
DEBUG=true LOG_LEVEL=DEBUG uv run mcrentcast
```
3. **Test with mock API**
```bash
USE_MOCK_API=true uv run python scripts/test_mock_api.py
```
4. **Create an issue**
- Visit the [GitHub repository](https://git.supported.systems/MCP/mcrentcast)
- Include error messages, environment details, and steps to reproduce
5. **Check system requirements**
- Python 3.13+
- Sufficient disk space (100MB minimum)
- Internet connection for API calls
- Write permissions for data directory