{"id":30045638,"url":"https://github.com/msmygit/linklibrary-mcp","last_synced_at":"2026-01-20T17:34:40.954Z","repository":{"id":307570033,"uuid":"1029994911","full_name":"msmygit/linklibrary-mcp","owner":"msmygit","description":"An MCP server implementation for https://LinkLibrary.ai","archived":false,"fork":false,"pushed_at":"2025-08-01T00:22:53.000Z","size":113,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-01T00:46:32.996Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/msmygit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-31T23:21:40.000Z","updated_at":"2025-08-01T00:22:32.000Z","dependencies_parsed_at":"2025-08-01T00:46:36.706Z","dependency_job_id":"16625eb4-c38f-4fc1-9f3f-29413bf44eb6","html_url":"https://github.com/msmygit/linklibrary-mcp","commit_stats":null,"previous_names":["msmygit/linklibrary-mcp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/msmygit/linklibrary-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msmygit%2Flinklibrary-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msmygit%2Flinklibrary-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msmygit%2Flinklibrary-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msmygit%2Flinklibrary-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msmygit","download_url":"https://codeload.github.com/msmygit/linklibrary-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msmygit%2Flinklibrary-mcp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269220677,"owners_count":24380624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-07T02:00:09.698Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-07T07:54:12.332Z","updated_at":"2026-01-20T17:34:40.936Z","avatar_url":"https://github.com/msmygit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @msmygit/linklibrary-mcp\n![NPM Downloads](https://img.shields.io/npm/d18m/%40msmygit%2Flinklibrary-mcp?style=plastic\u0026logoColor=green\u0026color=green\u0026link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40msmygit%2Flinklibrary-mcp)\n![GitHub contributors](https://img.shields.io/github/contributors/msmygit/linklibrary-mcp)\n![Static Badge](https://img.shields.io/badge/Contributors-Welcome-green?style=plastic\u0026logoColor=green)\n![NPM Last Update](https://img.shields.io/npm/last-update/%40msmygit%2Flinklibrary-mcp)\n![NPM License](https://img.shields.io/npm/l/%40msmygit%2Flinklibrary-mcp)\n![NPM Version](https://img.shields.io/npm/v/%40msmygit%2Flinklibrary-mcp)\n\nA high-performance, production-ready Model Context Protocol (MCP) server that provides AI assistants with programmatic access to [LinkLibrary.ai](https://linklibrary.ai) bookmark management capabilities.\n\n## 🚀 Features\n\n### ✨ Core Features\n- **🔐 Secure Authentication** - JWT-based authentication with automatic token refresh\n- **📚 Bookmark Management** - Create, retrieve, and organize bookmarks with rich metadata\n- **📁 Collections \u0026 Tags** - Manage bookmark organization with collections and tags\n- **🔍 Advanced Search** - Powerful search with multiple filters and operators\n- **📊 Analytics** - Get insights about your bookmark usage and patterns\n- **🤖 AI Integration** - Works seamlessly with Claude Desktop, VSCode, and other MCP clients\n\n### 🏗️ Architecture Features\n- **⚡ High Performance** - In-memory caching with LRU eviction and TTL\n- **🛡️ Rate Limiting** - Configurable rate limiting with sliding window\n- **📈 Metrics Driven** - Comprehensive performance monitoring and logging\n- **🔄 Retry Logic** - Automatic retry with exponential backoff\n- **🔒 Error Handling** - Robust error handling with proper error types\n- **🧪 Test Coverage** - Comprehensive test suite with mocking\n\n## 🛠️ Installation\n\n### For End Users\n\nThe package is published on npm and can be used directly with MCP clients:\n\n```json\n{\n  \"mcpServers\": {\n    \"linklibrary-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@msmygit/linklibrary-mcp@latest\"],\n      \"env\": {\n        \"LL_USERNAME\": \"your_email@example.com\",\n        \"LL_PASSWORD\": \"your_password\"\n      }\n    }\n  }\n}\n```\n\n### For Developers\n\n```bash\nnpm install @msmygit/linklibrary-mcp\n```\n\n## 🔧 Configuration\n\n### Environment Variables\n\n| Variable | Description | Default | Required |\n|----------|-------------|---------|----------|\n| `LL_USERNAME` | LinkLibrary.ai email address | - | Yes* |\n| `LL_PASSWORD` | LinkLibrary.ai password | - | Yes* |\n| `LL_TOKEN` | LinkLibrary.ai API token | - | Yes* |\n| `LINKLIBRARY_API_URL` | API base URL | `https://api.linklibrary.ai/api/v1` | No |\n| `API_TIMEOUT_MS` | API request timeout | `30000` | No |\n| `API_MAX_RETRIES` | Maximum retry attempts | `3` | No |\n| `CACHE_TTL_SECONDS` | Cache TTL in seconds | `300` | No |\n| `CACHE_MAX_SIZE` | Maximum cache entries | `1000` | No |\n| `RATE_LIMIT_REQUESTS` | Rate limit requests per window | `100` | No |\n| `RATE_LIMIT_WINDOW_MS` | Rate limit window in ms | `60000` | No |\n| `LOG_LEVEL` | Logging level | `info` | No |\n| `ENABLE_METRICS` | Enable performance metrics | `false` | No |\n\n*Either `LL_USERNAME`/`LL_PASSWORD` or `LL_TOKEN` is required.\n\n### MCP Client Configuration\n\n#### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS/Linux) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"linklibrary-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@msmygit/linklibrary-mcp@latest\"],\n      \"env\": {\n        \"LL_USERNAME\": \"your_email@example.com\",\n        \"LL_PASSWORD\": \"your_password\",\n        \"ENABLE_METRICS\": \"true\"\n      }\n    }\n  }\n}\n```\n\n#### VSCode\n\nAdd to your VSCode settings:\n\n```json\n{\n  \"mcp.servers\": {\n    \"linklibrary-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@msmygit/linklibrary-mcp@latest\"],\n      \"env\": {\n        \"LL_USERNAME\": \"your_email@example.com\",\n        \"LL_PASSWORD\": \"your_password\"\n      }\n    }\n  }\n}\n```\n\n## 🛠️ Available Tools\n\n### Authentication\n- `authenticate` - Authenticate with LinkLibrary credentials\n\n### Bookmark Management\n- `get_links` - Retrieve bookmarks with filtering and pagination\n- `create_link` - Create new bookmarks with metadata\n\n### Organization\n- `get_collections` - Retrieve user collections\n- `get_tags` - Retrieve user tags\n\n### Search \u0026 Analytics\n- `search_advanced` - Advanced search with multiple filters\n- `get_user_stats` - Get user statistics and insights\n\n## 💡 Usage Examples\n\nOnce connected to your MCP client, you can ask:\n\n- \"Show me my recent bookmarks\"\n- \"Create a bookmark for this article about AI\"\n- \"Search for machine learning resources in my Development collection\"\n- \"Show me my bookmark statistics for this month\"\n- \"What are my most used tags?\"\n\n## 🏗️ Architecture\n\n### Core Components\n\n```\nlinklibrary-mcp/\n├── src/\n│   ├── types.ts              # TypeScript type definitions\n│   ├── config.ts             # Configuration management\n│   ├── server.ts             # Main MCP server implementation\n│   ├── services/\n│   │   ├── api-client.ts     # HTTP client with retry logic\n│   │   └── auth-service.ts   # Authentication management\n│   └── utils/\n│       ├── logger.ts         # Structured logging with metrics\n│       ├── cache.ts          # In-memory LRU cache\n│       └── rate-limiter.ts   # Rate limiting implementation\n├── scripts/\n│   └── build.js              # Build script\n├── tests/\n│   └── server.test.ts        # Comprehensive test suite\n└── package.json              # npm package configuration\n```\n\n### Performance Features\n\n#### 🚀 Caching\n- **In-memory LRU cache** with configurable TTL\n- **Automatic cache invalidation** on data changes\n- **Cache hit rate monitoring** and statistics\n\n#### ⚡ Rate Limiting\n- **Sliding window rate limiting** for API protection\n- **Configurable limits** per operation type\n- **Rate limit monitoring** and reporting\n\n#### 📊 Metrics \u0026 Monitoring\n- **Performance metrics** collection and reporting\n- **Request/response timing** with percentiles\n- **Error rate tracking** and alerting\n- **Cache performance** monitoring\n\n#### 🔄 Retry Logic\n- **Exponential backoff** for transient failures\n- **Configurable retry attempts** and delays\n- **Smart retry conditions** (5xx errors, timeouts)\n\n## 🧪 Development\n\n### Prerequisites\n\n- Node.js 18+\n- npm or yarn\n\n### Setup\n\n```bash\ngit clone \u003crepository-url\u003e\ncd linklibrary-mcp\nnpm install\n```\n\n### Development Commands\n\n```bash\n# Build the package\nnpm run build\n\n# Run in development mode\nnpm run dev\n\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm test -- --coverage\n\n# Lint code\nnpm run lint\n\n# Format code\nnpm run format\n```\n\n### Testing\n\nThe project includes comprehensive tests:\n\n- **Unit tests** for all services and utilities\n- **Integration tests** for API interactions\n- **Mock testing** for external dependencies\n- **Performance tests** for caching and rate limiting\n\n```bash\n# Run all tests\nnpm test\n\n# Run specific test suites\nnpm test -- --testNamePattern=\"Authentication\"\nnpm test -- --testNamePattern=\"Cache\"\n```\n\n### Building for Production\n\n```bash\n# Build the package\nnpm run build\n\n# Test the built package\nnpm start\n\n# Publish to npm\nnpm publish\n```\n\n## 📊 Performance\n\n### Benchmarks\n\n- **Response Time**: \u003c 100ms for cached requests\n- **Throughput**: 1000+ requests per minute\n- **Memory Usage**: \u003c 50MB for typical usage\n- **Cache Hit Rate**: \u003e 80% for read operations\n\n### Monitoring\n\nEnable metrics collection by setting `ENABLE_METRICS=true`:\n\n```bash\nexport ENABLE_METRICS=true\nnpx @msmygit/linklibrary-mcp\n```\n\nMetrics include:\n- Request count and response times\n- Cache hit/miss rates\n- Rate limit usage\n- Error rates and types\n\n## 🔒 Security\n\n### Security Features\n\n- **No local storage** - credentials not stored locally\n- **Environment variables** - secure credential management\n- **API authentication** - uses LinkLibrary.ai's secure API\n- **Rate limiting** - protection against abuse\n- **Input validation** - comprehensive parameter validation\n- **Error sanitization** - no sensitive data in error messages\n\n### Best Practices\n\n- Use environment variables for credentials\n- Enable metrics only in development\n- Monitor rate limit usage\n- Regularly update dependencies\n- Use HTTPS for all API communications\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n#### Authentication Errors\n```bash\n# Check environment variables\necho $LL_USERNAME\necho $LL_PASSWORD\n\n# Verify API connectivity\ncurl -I https://linklibrary.ai/api/health\n```\n\n#### Performance Issues\n```bash\n# Check cache statistics\n# Enable debug logging\nexport LOG_LEVEL=debug\n\n# Monitor rate limits\n# Check rate limit configuration\n```\n\n#### Connection Issues\n```bash\n# Test API connectivity\ncurl https://linklibrary.ai/api/health\n\n# Check network configuration\nping linklibrary.ai\n```\n\n### Debug Mode\n\nEnable debug logging for troubleshooting:\n\n```bash\nexport LOG_LEVEL=debug\nexport ENABLE_METRICS=true\nnpx @msmygit/linklibrary-mcp\n```\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n### Development Guidelines\n\n- Follow TypeScript best practices\n- Add tests for new features\n- Update documentation as needed\n- Follow the existing code style\n- Ensure all tests pass before submitting\n\n## 📞 Support\n\n- **Documentation**: [LinkLibrary.ai](https://linklibrary.ai)\n- **Issues**: [GitHub Issues](https://github.com/msmygit/linklibrary-mcp/issues)\n- **Email**: linklibrary.ai@gmail.com\n\n## 🔗 Links\n\n- [LinkLibrary.ai](https://linklibrary.ai) - Main service\n- [MCP Documentation](https://modelcontextprotocol.io/) - Protocol specification\n- [npm Package](https://www.npmjs.com/package/@msmygit/linklibrary-mcp) - Package page\n- [GitHub Repository](https://github.com/msmygit/linklibrary-mcp) - Source code\n\n---\n\n**Built with ❤️ for the AI community** ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsmygit%2Flinklibrary-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsmygit%2Flinklibrary-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsmygit%2Flinklibrary-mcp/lists"}