fix: resolve read-only file system issues for Nix packaging

- Add config_paths.py for XDG-compliant path resolution
- Update all servers to use user-writable locations (logs, tokens, .env)
- Make .env file optional - server works with environment variables only
- Default paths: ~/.local/share for data, ~/.local/state for logs
- Update Nix wrapper with XDG defaults and helpful postInstall message
- Update README.md with environment variable configuration documentation

Fixes OSError when running in Nix store (read-only filesystem)
This commit is contained in:
m3tm3re
2026-01-21 20:42:05 +01:00
parent a81ea23782
commit 503e97e520
6 changed files with 1424 additions and 1211 deletions

View File

@@ -2,9 +2,48 @@
This project provides a **FastMCP-powered** integration for Basecamp 3, allowing Cursor to interact with Basecamp directly through the MCP protocol.
**Migration Complete:** Successfully migrated to official Anthropic FastMCP framework with **100% feature parity** (all 46 tools)
**Migration Complete:** Successfully migrated to official Anthropic FastMCP framework with **100% feature parity** (all 46 tools)
🚀 **Ready for Production:** Full protocol compliance with MCP 2025-06-18
## Configuration
The Basecamp MCP server is configured entirely via environment variables. No `.env` file is required.
### Required Environment Variables
All required configuration is passed via environment variables:
- `BASECAMP_CLIENT_ID` - OAuth client ID from 37signals
- `BASECAMP_CLIENT_SECRET` - OAuth client secret from 37signals
- `BASECAMP_ACCOUNT_ID` - Your Basecamp account ID
- `BASECAMP_REDIRECT_URI` - OAuth callback URL (usually `http://localhost:8000/auth/callback`)
- `USER_AGENT` - User agent string for API requests
### Data Locations
The server stores data in XDG-compliant locations:
| File Type | Default Location | Environment Variable Override |
|-----------|------------------|-------------------------------|
| OAuth Tokens | `~/.local/share/basecamp-mcp/oauth_tokens.json` | `BASECAMP_TOKEN_FILE` |
| Server Logs | `~/.local/state/basecamp-mcp/` | `BASECAMP_LOG_DIR` |
### Optional .env File (Development Only)
For local development, you can optionally create a `.env` file to avoid setting environment variables each time:
```bash
# Default location: ~/.config/basecamp-mcp/.env
# Or override with: BASECAMP_ENV_FILE=/custom/path/.env
BASECAMP_CLIENT_ID=your_client_id_here
BASECAMP_CLIENT_SECRET=your_client_secret_here
BASECAMP_ACCOUNT_ID=your_account_id_here
BASECAMP_REDIRECT_URI=http://localhost:8000/auth/callback
USER_AGENT="Your App Name (your@email.com)"
```
**Note:** The server works perfectly without a `.env` file - it's only a convenience for development.
## Quick Setup
This server works with both **Cursor** and **Claude Desktop**. Choose your preferred client: