Releases: ben-vargas/obsidian-vectorize-mcp
v0.1.5: OAuth TTL Extension & ES Module Fixes
🚀 Key Improvements
🔐 Extended OAuth Token Lifetime
- Problem Solved: Claude Code (CLI) users were experiencing frequent re-authentication prompts (daily)
- Solution: Extended default OAuth access token TTL from 1 hour to 30 days
- Configurable: Set
OAUTH_ACCESS_TOKEN_TTLin wrangler.toml for custom durations (e.g., 90 days) - Note: Web clients (claude.ai, ChatGPT) are unaffected as they handle token refresh automatically
📦 ES Module Compatibility
- Fixed TypeScript script compatibility issues (#4)
- All scripts now properly support ES modules
- Resolved import path and module resolution errors
🛠️ Configuration
To customize OAuth token lifetime, add to your wrangler.toml:
[vars]
OAUTH_ACCESS_TOKEN_TTL = "7776000" # 90 days in seconds📚 Documentation Updates
- Enhanced troubleshooting guide with OAuth TTL configuration
- Added note for Claude Code users in README
- Improved configuration examples
🔧 Changes
- Extended default
accessTokenTTLto 30 days - Made TTL configurable via environment variable
- Fixed ES module imports in all TypeScript scripts
- Updated package version to 0.1.5
💡 Upgrade Instructions
- Pull latest changes:
git pull - (Optional) Add
OAUTH_ACCESS_TOKEN_TTLto your wrangler.toml - Deploy:
obvec deploy - Re-authenticate once to get the new longer-lived token
Full Changelog: v0.1.4...v0.1.5
v0.1.4 - ES Module Compatibility Fix
🐛 Bug Fixes
ES Module Compatibility
- Fixed ES module compatibility issues in all TypeScript scripts
- Replaced CommonJS patterns (
__dirname,require.main) with ES module equivalents - All scripts now use
import.meta.urlandfileURLToPathfor proper module resolution
Script Improvements
- Added dotenv loading to
cleanup-orphaned.tsandreset-index.tsscripts - All CLI scripts now properly load environment variables from
.envfile - Consistent ES module patterns across all TypeScript files
📚 Documentation
Module System Documentation
- Added
MODULE_SYSTEM.mdexplaining the hybrid module configuration - Documented why the project uses both CommonJS (for CLI) and ES modules (for Workers/scripts)
- Added clarifying comments to
tsconfig.json
🧪 Testing
- All scripts tested and confirmed working:
- ✅
obvec index- Vault indexing - ✅
obvec search- Note searching - ✅
obvec stats- Statistics display - ✅
obvec cleanup- Orphaned note cleanup - ✅
obvec reset- Index reset
- ✅
🔧 Technical Details
- Package Version: 0.1.4
- Node Compatibility: Requires Node.js with ES module support
- TypeScript: Uses ESNext module compilation for Cloudflare Workers
- CLI: Maintains CommonJS compatibility for global npm installation
📦 Installation
```bash
npm install -g [email protected]
```
Full Changelog: v0.1.3...v0.1.4
v0.1.3 - ChatGPT Connector Integration
🎉 New Features
ChatGPT Connector Support
- Native ChatGPT Integration: Added dedicated endpoints for ChatGPT Connectors (
/chatgpt/mcp) - OpenAI-Compatible Tools: Implements exact
searchandfetchtool specifications required by ChatGPT - Configurable Score Threshold: Control search sensitivity with
CHATGPT_MIN_SCOREenvironment variable - Optional QDF Support: Time-based result boosting with
CHATGPT_USE_QDFfor freshness-aware searches
📚 Documentation
- Added comprehensive ChatGPT Integration Guide with:
- Step-by-step setup instructions
- Architecture overview
- Configuration options
- Troubleshooting guide
- QDF (Query Deserves Freshness) explanation
🔧 Improvements
- Enhanced error handling and validation across all endpoints
- Better separation of concerns with dedicated ChatGPT Durable Object
- Improved type safety with proper TypeScript definitions
- Added debug logging for troubleshooting search issues
🔒 Security
- Maintained OAuth 2.1 authentication for all endpoints
- Rate limiting applied to ChatGPT endpoints
- Input validation and sanitization for all parameters
📦 Installation
Follow the upgrade guide for existing installations or see the README for new installations.
Quick Start for ChatGPT
-
Deploy with the new configuration:
```bash
npm run deploy
``` -
Add to ChatGPT:
- Go to ChatGPT Settings → Connectors
- Add your server URL: `https://your-worker.workers.dev/chatgpt/mcp\`
- Enter your MCP_PASSWORD when prompted
-
Start searching:
- "Search my Obsidian notes for meeting notes from last week"
- "Find my documentation on API design patterns"
🙏 Contributors
Thanks to all contributors who helped make this release possible!
Full Changelog: v0.1.2...v0.1.3
v0.1.2: Critical Indexing Fixes
🚨 Critical Fixes
This release fixes critical issues that prevented proper indexing of Obsidian vaults.
What's Fixed
- Rate Limiting: Increased from 10 to 100 requests per 15 minutes
- Path Validation: Now accepts files with spaces and special characters
Impact
- Files with spaces, ampersands, parentheses, and other special characters now index correctly
- Large vaults (100+ notes) can now be indexed in a single session without hitting rate limits
- No more "Invalid path" errors for common filename patterns
Changes
- 🔧 Fixed overly restrictive path sanitization that rejected files with spaces or special characters
- 📈 Increased API rate limits to allow indexing 1000+ notes in one session
- ✅ Only truly dangerous characters are now blocked (null bytes, control chars, path traversal)
Upgrading
If you experienced indexing issues:
- Update to v0.1.2
- Run
obvec indexto re-index your vault - All your notes should now index successfully
Full Changelog: v0.1.1...v0.1.2
v0.1.1 - Security Update
🔒 Security Update
This release addresses critical security vulnerabilities and improves overall system robustness.
🛡️ Security Fixes
- XSS Protection: Added HTML escaping for all user inputs in OAuth pages
- CSRF Protection: Implemented one-time tokens for authorization forms
- Path Traversal Prevention: Comprehensive path validation to prevent directory traversal attacks
- Timing Attack Protection: Constant-time comparison for Bearer token authentication
🚀 Performance & Functionality Improvements
- Large Vault Support: R2 pagination now handles vaults with >1000 files correctly
- Memory Optimization: Process embeddings in batches to prevent memory exhaustion
- Error Handling: Robust validation of AI embedding responses
- Input Validation: All search parameters now properly validated (limits 1-50)
- Rate Limiting: All API endpoints now protected (10 requests per 15 minutes)
🔧 Other Improvements
- Dynamic vector dimensions from environment variables
- Improved stats endpoint documentation
- Better TypeScript type safety throughout
📦 Installation
npm install -g [email protected]🙏 Credits
Thanks to code review feedback that identified these important security issues.
Full Changelog: v0.1.0...v0.1.1
v0.1.0 - Initial Release
🚀 Initial Release of Obsidian Vectorize MCP
Transform your Obsidian vault into a searchable, AI-accessible knowledge base using serverless Cloudflare Workers and the Model Context Protocol (MCP).
✨ Features
- Semantic Search: AI-powered search through your Obsidian notes
- MCP Integration: Works with Claude Desktop and other MCP clients
- Serverless: Runs on Cloudflare Workers with global edge deployment
- Smart Indexing: Automatic re-indexing with timestamp-based change detection
- OAuth Authentication: Secure access with OAuth 2.1 + PKCE
- CLI Tools: Complete command-line interface for management
🛠️ What's Included
- MCP server implementation with 4 semantic search tools
- Cloudflare Workers deployment with Vectorize, R2, and KV storage
- Complete CLI for indexing, searching, and managing your vault
- OAuth 2.1 authentication with secure token management
- Smart re-indexing based on file modification timestamps
- Comprehensive documentation and setup guides
📦 Installation
npm install -g obvec🔗 Links
Perfect for researchers, developers, and knowledge workers who want AI-powered access to their personal notes and documentation.