Merge feature/sse-mcp-cursor-compat into main - Added CLI MCP server, tests, and Cursor config generator
This commit is contained in:
112
README.md
112
README.md
@@ -37,45 +37,109 @@ This project provides a MCP (Model Context Protocol) integration for Basecamp 3,
|
||||
```bash
|
||||
python oauth_app.py
|
||||
```
|
||||
- Visit http://localhost:8000 in your browser
|
||||
- Click "Log in with Basecamp" and complete the OAuth flow
|
||||
- Keep the OAuth app running in the background
|
||||
Visit http://localhost:8000 and complete the OAuth flow.
|
||||
|
||||
4. **Generate Cursor configuration:**
|
||||
4. **Generate and install Cursor configuration:**
|
||||
```bash
|
||||
python generate_cursor_config.py
|
||||
```
|
||||
This will automatically create the Cursor MCP configuration file in the correct location.
|
||||
|
||||
This script will:
|
||||
- Generate the correct MCP configuration with full paths
|
||||
- Automatically detect your virtual environment
|
||||
- Include the BASECAMP_ACCOUNT_ID environment variable
|
||||
- Update your Cursor configuration file automatically
|
||||
|
||||
5. **Restart Cursor** to load the new MCP configuration.
|
||||
5. **Restart Cursor completely** (quit and reopen, not just reload)
|
||||
|
||||
6. **Test the integration** by using the Basecamp MCP tools in Cursor!
|
||||
6. **Verify in Cursor:**
|
||||
- Go to Cursor Settings → MCP
|
||||
- You should see "basecamp" with a **green checkmark**
|
||||
- Available tools: "get_projects", "search_basecamp", "get_project", etc.
|
||||
|
||||
### Test Your Setup
|
||||
|
||||
```bash
|
||||
# Quick test the MCP server
|
||||
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | python mcp_server_cli.py
|
||||
|
||||
# Run automated tests
|
||||
python -m pytest tests/ -v
|
||||
```
|
||||
|
||||
## Available MCP Tools
|
||||
|
||||
Once configured, you can use these tools in Cursor:
|
||||
|
||||
- **Get Projects**: List all your Basecamp projects
|
||||
- **Get Project**: Get details for a specific project
|
||||
- **Get Todo Lists**: Get todo lists for a project
|
||||
- **Get Todos**: Get todos from a todo list
|
||||
- **Search Basecamp**: Search across projects, todos, and messages
|
||||
- **Get Comments**: Get comments for any Basecamp item
|
||||
- **Get Campfire Lines**: Get recent messages from project chat rooms
|
||||
- `get_projects` - Get all Basecamp projects
|
||||
- `get_project` - Get details for a specific project
|
||||
- `get_todolists` - Get todo lists for a project
|
||||
- `get_todos` - Get todos from a todo list
|
||||
- `search_basecamp` - Search across projects, todos, and messages
|
||||
- `get_comments` - Get comments for a Basecamp item
|
||||
|
||||
### Example Cursor Usage
|
||||
|
||||
Ask Cursor things like:
|
||||
- "Show me all my Basecamp projects"
|
||||
- "What todos are in project X?"
|
||||
- "Search for messages containing 'deadline'"
|
||||
- "Get details for the Technology project"
|
||||
|
||||
## Architecture
|
||||
|
||||
The project consists of:
|
||||
|
||||
1. **OAuth App** (`oauth_app.py`) - Handles OAuth 2.0 flow with Basecamp
|
||||
2. **MCP Server** (`mcp_server_cli.py`) - Implements MCP protocol for Cursor
|
||||
3. **Token Storage** (`token_storage.py`) - Securely stores OAuth tokens
|
||||
4. **Basecamp Client** (`basecamp_client.py`) - Basecamp API client library
|
||||
5. **Search Utilities** (`search_utils.py`) - Search across Basecamp resources
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Authentication Issues
|
||||
- Make sure the OAuth app is running: `python oauth_app.py`
|
||||
- Visit http://localhost:8000 and re-authenticate if needed
|
||||
- Check that your `.env` file has the correct credentials
|
||||
### Common Issues
|
||||
|
||||
### Cursor Connection Issues
|
||||
- Restart Cursor after running `generate_cursor_config.py`
|
||||
- Check that the generated configuration includes your `BASECAMP_ACCOUNT_ID`
|
||||
- Make sure your virtual environment is activated when running the OAuth app
|
||||
- **Yellow indicator (not green):** Check that paths in Cursor config are correct
|
||||
- **"No tools available":** Make sure you completed OAuth authentication first
|
||||
- **"Tool not found" errors:** Restart Cursor completely and check `mcp_cli_server.log`
|
||||
- **Missing BASECAMP_ACCOUNT_ID:** The config generator automatically includes this from your `.env` file
|
||||
|
||||
### Configuration Issues
|
||||
|
||||
If automatic configuration doesn't work, manually edit your Cursor MCP configuration:
|
||||
|
||||
**On macOS/Linux:** `~/.cursor/mcp.json`
|
||||
**On Windows:** `%APPDATA%\Cursor\mcp.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"basecamp": {
|
||||
"command": "/full/path/to/your/project/venv/bin/python",
|
||||
"args": ["/full/path/to/your/project/mcp_server_cli.py"],
|
||||
"cwd": "/full/path/to/your/project",
|
||||
"env": {
|
||||
"PYTHONPATH": "/full/path/to/your/project",
|
||||
"VIRTUAL_ENV": "/full/path/to/your/project/venv",
|
||||
"BASECAMP_ACCOUNT_ID": "your_account_id"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Key Requirements
|
||||
|
||||
Based on [Cursor community forums](https://forum.cursor.com/t/mcp-servers-no-tools-found/49094), the following are essential:
|
||||
|
||||
1. **Full executable paths** (not just "python")
|
||||
2. **Proper environment variables** (PYTHONPATH, VIRTUAL_ENV, BASECAMP_ACCOUNT_ID)
|
||||
3. **Correct working directory** (cwd)
|
||||
4. **MCP protocol compliance** (our server handles this correctly)
|
||||
|
||||
## Finding Your Account ID
|
||||
|
||||
### Finding Your Account ID
|
||||
If you don't know your Basecamp account ID:
|
||||
1. Log into Basecamp in your browser
|
||||
2. Look at the URL - it will be like `https://3.basecamp.com/4389629/projects`
|
||||
@@ -89,4 +153,4 @@ If you don't know your Basecamp account ID:
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License.
|
||||
This project is licensed under the MIT License.
|
||||
|
||||
Reference in New Issue
Block a user