updated docs on dependencies
This commit is contained in:
@@ -9,7 +9,11 @@ This is a **Basecamp 3 MCP (Model Context Protocol) Server** that allows AI assi
|
|||||||
## Development Commands
|
## Development Commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Setup (one-time)
|
# Setup (one-time) - requires Python 3.10+
|
||||||
|
# Option 1: Using uv (recommended - auto-downloads Python 3.12)
|
||||||
|
uv venv --python 3.12 venv && source venv/bin/activate && uv pip install -r requirements.txt && uv pip install mcp
|
||||||
|
|
||||||
|
# Option 2: Using pip (if Python 3.10+ already installed)
|
||||||
python setup.py # Creates venv, installs deps, tests server
|
python setup.py # Creates venv, installs deps, tests server
|
||||||
|
|
||||||
# OAuth Authentication
|
# OAuth Authentication
|
||||||
|
|||||||
43
README.md
43
README.md
@@ -11,22 +11,34 @@ This server works with both **Cursor** and **Claude Desktop**. Choose your prefe
|
|||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- **Python 3.8+** (required for MCP SDK)
|
- **Python 3.10+** (required for MCP SDK) — or use `uv` which auto-downloads the correct version
|
||||||
- A Basecamp 3 account
|
- A Basecamp 3 account
|
||||||
- A Basecamp OAuth application (create one at https://launchpad.37signals.com/integrations)
|
- A Basecamp OAuth application (create one at <https://launchpad.37signals.com/integrations>)
|
||||||
|
|
||||||
## For Cursor Users
|
## For Cursor Users
|
||||||
|
|
||||||
### One-Command Setup
|
### One-Command Setup
|
||||||
|
|
||||||
1. **Clone and run setup script:**
|
1. **Clone and set up with uv (recommended):**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <repository-url>
|
git clone <repository-url>
|
||||||
cd basecamp-mcp
|
cd basecamp-mcp
|
||||||
|
|
||||||
|
# Using uv (recommended - auto-downloads Python 3.12)
|
||||||
|
uv venv --python 3.12 venv
|
||||||
|
source venv/bin/activate # or venv\Scripts\activate on Windows
|
||||||
|
uv pip install -r requirements.txt
|
||||||
|
uv pip install mcp
|
||||||
|
```
|
||||||
|
|
||||||
|
**Alternative: Using pip** (requires Python 3.10+ already installed):
|
||||||
|
|
||||||
|
```bash
|
||||||
python setup.py
|
python setup.py
|
||||||
```
|
```
|
||||||
|
|
||||||
The setup script automatically:
|
The setup automatically:
|
||||||
- ✅ Creates virtual environment
|
- ✅ Creates virtual environment
|
||||||
- ✅ Installs all dependencies (FastMCP SDK, etc.)
|
- ✅ Installs all dependencies (FastMCP SDK, etc.)
|
||||||
- ✅ Creates `.env` template file
|
- ✅ Creates `.env` template file
|
||||||
@@ -34,6 +46,7 @@ This server works with both **Cursor** and **Claude Desktop**. Choose your prefe
|
|||||||
|
|
||||||
2. **Configure OAuth credentials:**
|
2. **Configure OAuth credentials:**
|
||||||
Edit the generated `.env` file:
|
Edit the generated `.env` file:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
BASECAMP_CLIENT_ID=your_client_id_here
|
BASECAMP_CLIENT_ID=your_client_id_here
|
||||||
BASECAMP_CLIENT_SECRET=your_client_secret_here
|
BASECAMP_CLIENT_SECRET=your_client_secret_here
|
||||||
@@ -42,12 +55,15 @@ This server works with both **Cursor** and **Claude Desktop**. Choose your prefe
|
|||||||
```
|
```
|
||||||
|
|
||||||
3. **Authenticate with Basecamp:**
|
3. **Authenticate with Basecamp:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python oauth_app.py
|
python oauth_app.py
|
||||||
```
|
```
|
||||||
Visit http://localhost:8000 and complete the OAuth flow.
|
|
||||||
|
Visit <http://localhost:8000> and complete the OAuth flow.
|
||||||
|
|
||||||
4. **Generate Cursor configuration:**
|
4. **Generate Cursor configuration:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python generate_cursor_config.py
|
python generate_cursor_config.py
|
||||||
```
|
```
|
||||||
@@ -78,6 +94,7 @@ Based on the [official MCP quickstart guide](https://modelcontextprotocol.io/qui
|
|||||||
### Setup Steps
|
### Setup Steps
|
||||||
|
|
||||||
1. **Complete the basic setup** (steps 1-3 from Cursor setup above):
|
1. **Complete the basic setup** (steps 1-3 from Cursor setup above):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone <repository-url>
|
git clone <repository-url>
|
||||||
cd basecamp-mcp
|
cd basecamp-mcp
|
||||||
@@ -87,6 +104,7 @@ Based on the [official MCP quickstart guide](https://modelcontextprotocol.io/qui
|
|||||||
```
|
```
|
||||||
|
|
||||||
2. **Generate Claude Desktop configuration:**
|
2. **Generate Claude Desktop configuration:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python generate_claude_desktop_config.py
|
python generate_claude_desktop_config.py
|
||||||
```
|
```
|
||||||
@@ -101,11 +119,13 @@ Based on the [official MCP quickstart guide](https://modelcontextprotocol.io/qui
|
|||||||
### Claude Desktop Configuration
|
### Claude Desktop Configuration
|
||||||
|
|
||||||
The configuration is automatically created at:
|
The configuration is automatically created at:
|
||||||
|
|
||||||
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
||||||
- **Windows**: `~/AppData/Roaming/Claude/claude_desktop_config.json`
|
- **Windows**: `~/AppData/Roaming/Claude/claude_desktop_config.json`
|
||||||
- **Linux**: `~/.config/claude-desktop/claude_desktop_config.json`
|
- **Linux**: `~/.config/claude-desktop/claude_desktop_config.json`
|
||||||
|
|
||||||
Example configuration generated:
|
Example configuration generated:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -125,6 +145,7 @@ Example configuration generated:
|
|||||||
### Usage in Claude Desktop
|
### Usage in Claude Desktop
|
||||||
|
|
||||||
Ask Claude things like:
|
Ask Claude things like:
|
||||||
|
|
||||||
- "What are my current Basecamp projects?"
|
- "What are my current Basecamp projects?"
|
||||||
- "Show me the latest campfire messages from the Technology project"
|
- "Show me the latest campfire messages from the Technology project"
|
||||||
- "Create a new card in the Development column with title 'Fix login bug'"
|
- "Create a new card in the Development column with title 'Fix login bug'"
|
||||||
@@ -134,6 +155,7 @@ Ask Claude things like:
|
|||||||
### Troubleshooting Claude Desktop
|
### Troubleshooting Claude Desktop
|
||||||
|
|
||||||
**Check Claude Desktop logs** (following [official debugging guide](https://modelcontextprotocol.io/quickstart/server#troubleshooting)):
|
**Check Claude Desktop logs** (following [official debugging guide](https://modelcontextprotocol.io/quickstart/server#troubleshooting)):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# macOS/Linux - Monitor logs in real-time
|
# macOS/Linux - Monitor logs in real-time
|
||||||
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
|
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
|
||||||
@@ -143,6 +165,7 @@ ls ~/Library/Logs/Claude/mcp-server-basecamp.log
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Common issues:**
|
**Common issues:**
|
||||||
|
|
||||||
- **Tools not appearing**: Verify configuration file syntax and restart Claude Desktop
|
- **Tools not appearing**: Verify configuration file syntax and restart Claude Desktop
|
||||||
- **Connection failures**: Check that Python path and script path are absolute paths
|
- **Connection failures**: Check that Python path and script path are absolute paths
|
||||||
- **Authentication errors**: Ensure OAuth flow completed successfully (`oauth_tokens.json` exists)
|
- **Authentication errors**: Ensure OAuth flow completed successfully (`oauth_tokens.json` exists)
|
||||||
@@ -203,6 +226,7 @@ Once configured, you can use these tools in Cursor:
|
|||||||
### Example Cursor Usage
|
### Example Cursor Usage
|
||||||
|
|
||||||
Ask Cursor things like:
|
Ask Cursor things like:
|
||||||
|
|
||||||
- "Show me all my Basecamp projects"
|
- "Show me all my Basecamp projects"
|
||||||
- "What todos are in project X?"
|
- "What todos are in project X?"
|
||||||
- "Search for messages containing 'deadline'"
|
- "Search for messages containing 'deadline'"
|
||||||
@@ -242,6 +266,7 @@ The project uses the **official Anthropic FastMCP framework** for maximum reliab
|
|||||||
### Quick Fixes
|
### Quick Fixes
|
||||||
|
|
||||||
**Problem: Server won't start**
|
**Problem: Server won't start**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Test if FastMCP server works:
|
# Test if FastMCP server works:
|
||||||
./venv/bin/python -c "import mcp; print('✅ MCP available')"
|
./venv/bin/python -c "import mcp; print('✅ MCP available')"
|
||||||
@@ -249,12 +274,15 @@ The project uses the **official Anthropic FastMCP framework** for maximum reliab
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Problem: Wrong Python version**
|
**Problem: Wrong Python version**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python --version # Must be 3.8+
|
python --version # Must be 3.10+
|
||||||
# If too old, install newer Python and re-run setup
|
# If too old, use uv which auto-downloads the correct Python:
|
||||||
|
uv venv --python 3.12 venv && source venv/bin/activate && uv pip install -r requirements.txt && uv pip install mcp
|
||||||
```
|
```
|
||||||
|
|
||||||
**Problem: Authentication fails**
|
**Problem: Authentication fails**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Check OAuth flow:
|
# Check OAuth flow:
|
||||||
python oauth_app.py
|
python oauth_app.py
|
||||||
@@ -286,6 +314,7 @@ python oauth_app.py
|
|||||||
## Finding Your Account ID
|
## Finding Your Account ID
|
||||||
|
|
||||||
If you don't know your Basecamp account ID:
|
If you don't know your Basecamp account ID:
|
||||||
|
|
||||||
1. Log into Basecamp in your browser
|
1. Log into Basecamp in your browser
|
||||||
2. Look at the URL - it will be like `https://3.basecamp.com/4389629/projects`
|
2. Look at the URL - it will be like `https://3.basecamp.com/4389629/projects`
|
||||||
3. The number (4389629 in this example) is your account ID
|
3. The number (4389629 in this example) is your account ID
|
||||||
|
|||||||
10
setup.py
10
setup.py
@@ -24,10 +24,14 @@ def run_command(cmd, cwd=None):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def check_python_version():
|
def check_python_version():
|
||||||
"""Check if Python version is 3.8+"""
|
"""Check if Python version is 3.10+"""
|
||||||
if sys.version_info < (3, 8):
|
if sys.version_info < (3, 10):
|
||||||
print("❌ Python 3.8 or higher is required (for MCP SDK compatibility)")
|
print("❌ Python 3.10 or higher is required (for MCP SDK compatibility)")
|
||||||
print(f"Current version: {sys.version}")
|
print(f"Current version: {sys.version}")
|
||||||
|
print("\n💡 Tip: Use 'uv' to auto-download the correct Python version:")
|
||||||
|
print(" uv venv --python 3.12 venv")
|
||||||
|
print(" source venv/bin/activate")
|
||||||
|
print(" uv pip install -r requirements.txt && uv pip install mcp")
|
||||||
return False
|
return False
|
||||||
print(f"✅ Python version: {sys.version.split()[0]}")
|
print(f"✅ Python version: {sys.version.split()[0]}")
|
||||||
return True
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user