{"_id":"@baryonlabs/popup-seoul-mcp","name":"@baryonlabs/popup-seoul-mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@baryonlabs/popup-seoul-mcp","version":"1.0.0","description":"MCP tools for PopupHub Seoul - search and retrieve popup store information","main":"dist/server.js","type":"module","bin":{"popup-seoul-mcp":"dist/server.js"},"engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/ichanho/popup-seoul-mcp.git"},"homepage":"https://github.com/ichanho/popup-seoul-mcp#readme","bugs":{"url":"https://github.com/ichanho/popup-seoul-mcp/issues"},"scripts":{"dev":"nodemon --exec tsx src/server.ts","build":"tsc","start":"node dist/server.js","test":"jest","test:unit":"jest --testPathPattern=tests/unit","test:integration":"jest --testPathPattern=tests/integration","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","format":"prettier --write 'src/**/*.{ts,tsx,js,jsx,json}'","typecheck":"tsc --noEmit","db:generate":"prisma generate","db:push":"prisma db push","db:migrate":"prisma migrate dev","db:seed":"tsx src/database/seed.ts","mcp:start":"node dist/server.js","mcp:dev":"tsx src/server.ts","mcp:build-start":"npm run build && npm run mcp:start","test:tools":"node test-tools.js","tools:search":"node -e \"import('./dist/tools/search_popups.js').then(m => m.searchPopupsTool.execute(JSON.parse(process.argv[1]))).then(console.log).catch(console.error)\"","tools:details":"node -e \"import('./dist/tools/get_popup_details.js').then(m => m.getPopupDetailsTool.execute(JSON.parse(process.argv[1]))).then(console.log).catch(console.error)\""},"keywords":["mcp","popup","seoul","modelcontextprotocol"],"author":{"name":"ichanho"},"license":"ISC","dependencies":{"@modelcontextprotocol/sdk":"^1.17.3","@prisma/client":"^6.14.0","dotenv":"^17.2.1","winston":"^3.17.0","zod":"^3.25.76"},"devDependencies":{"@types/jest":"^30.0.0","@types/node":"^24.3.0","@typescript-eslint/eslint-plugin":"^8.40.0","@typescript-eslint/parser":"^8.40.0","eslint":"^9.33.0","jest":"^29.7.0","jest-mock-extended":"^4.0.0","nodemon":"^3.1.10","prettier":"^3.6.2","prisma":"^6.14.0","ts-jest":"^29.4.1","tsx":"^4.20.4","typescript":"^5.9.2"},"_id":"@baryonlabs/popup-seoul-mcp@1.0.0","gitHead":"4dc05d0d893b03577520cb71509f0c476db465a2","types":"./dist/server.d.ts","_nodeVersion":"23.10.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-XZvlZJzJNLHycXVASrjpVkfFYohk/mUq7esdKgjJQgmFX9tj84JbFvCm7hrHDJEBX/Z1EGhUqFI96P4n9zjY8g==","shasum":"fcb8e527953f0d56b35899bf79437418dbc8241b","tarball":"https://registry.npmjs.org/@baryonlabs/popup-seoul-mcp/-/popup-seoul-mcp-1.0.0.tgz","fileCount":72,"unpackedSize":355148,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIESs8vu6tCMJ4HWjPDTsKPcUrWeJQvb3Ql7aZrwOslrHAiBgK7bMCi6gwjEeaeaP5JCyrCA0icIyrl7YJt+uBSePKQ=="}]},"_npmUser":{"name":"chan3785","email":"chanho3785@gmail.com"},"directories":{},"maintainers":[{"name":"chan3785","email":"chanho3785@gmail.com"},{"name":"martinhong","email":"hongbuzz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/popup-seoul-mcp_1.0.0_1756260395247_0.7261675403559185"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-27T02:06:35.123Z","1.0.0":"2025-08-27T02:06:35.457Z","modified":"2025-08-27T02:06:35.782Z"},"maintainers":[{"name":"chan3785","email":"chanho3785@gmail.com"},{"name":"martinhong","email":"hongbuzz@gmail.com"}],"description":"MCP tools for PopupHub Seoul - search and retrieve popup store information","homepage":"https://github.com/ichanho/popup-seoul-mcp#readme","keywords":["mcp","popup","seoul","modelcontextprotocol"],"repository":{"type":"git","url":"git+https://github.com/ichanho/popup-seoul-mcp.git"},"author":{"name":"ichanho"},"bugs":{"url":"https://github.com/ichanho/popup-seoul-mcp/issues"},"license":"ISC","readme":"# popup-seoul-mcp\n\nMCP (Model Context Protocol) server for PopupHub Seoul - provides intelligent tools for searching and retrieving popup store information in Seoul.\n\n## Installation\n\n```bash\nnpm install -g popup-seoul-mcp\n```\n\n## Quick Start with Claude Desktop\n\n1. **Install the package globally:**\n   ```bash\n   npm install -g popup-seoul-mcp\n   ```\n\n2. **Add to your Claude Desktop configuration:**\n   \n   Edit your Claude Desktop config file:\n   - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n   - **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n   \n   Add the MCP server configuration:\n   ```json\n   {\n     \"mcpServers\": {\n       \"popup-seoul-mcp\": {\n         \"command\": \"popup-seoul-mcp\",\n         \"env\": {\n           \"DATABASE_URL\": \"your-postgresql-connection-string\"\n         }\n       }\n     }\n   }\n   ```\n\n3. **Restart Claude Desktop** to load the new MCP server.\n\n## Configuration\n\n### Required Environment Variables\n\n| Variable | Description | Required |\n|----------|-------------|----------|\n| `DATABASE_URL` | PostgreSQL connection string | Yes |\n\n### Optional Environment Variables\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `LOG_LEVEL` | Logging level (debug, info, warn, error) | `info` |\n| `CACHE_SEARCH_TTL` | Search cache TTL in seconds | `300` |\n| `CACHE_DETAILS_TTL` | Details cache TTL in seconds | `600` |\n| `MAX_SEARCH_RESULTS` | Maximum search results returned | `100` |\n| `DEFAULT_SEARCH_LIMIT` | Default search limit | `20` |\n\n### Example Configuration\n\n```json\n{\n  \"mcpServers\": {\n    \"popup-seoul-mcp\": {\n      \"command\": \"popup-seoul-mcp\",\n      \"env\": {\n        \"DATABASE_URL\": \"postgresql://user:password@localhost:5432/popup_seoul_db\",\n        \"LOG_LEVEL\": \"info\",\n        \"CACHE_SEARCH_TTL\": \"300\",\n        \"CACHE_DETAILS_TTL\": \"600\"\n      }\n    }\n  }\n}\n```\n\n## Available Tools\n\n### 🔍 search_popups\n\nSearch for popup stores with comprehensive filtering options.\n\n**Parameters:**\n- `location` (string, optional): Area name (e.g., \"성수\", \"강남\", \"홍대\")\n- `date_range` (object, optional): \n  - `start_date` (string): ISO date format\n  - `end_date` (string): ISO date format\n- `category` (array, optional): Array of category strings\n- `status` (string, optional): \"active\" | \"upcoming\" | \"ended\" | \"all\" (default: \"all\")\n- `keyword` (string, optional): Search term for title/description\n- `sort_by` (string, optional): \"popularity\" | \"start_date\" | \"end_date\" | \"created_at\" (default: \"popularity\")\n- `sort_order` (string, optional): \"asc\" | \"desc\" (default: \"desc\")\n- `limit` (number, optional): Maximum results, 1-100 (default: 20)\n- `offset` (number, optional): Pagination offset (default: 0)\n\n**Example Usage in Claude:**\n> \"Search for active fashion popup stores in Seongsu area for the next month\"\n\n### 📋 get_popup_details\n\nGet detailed information about a specific popup store.\n\n**Parameters:**\n- `id` (string, required): Unique popup identifier\n- `include_related` (boolean, optional): Include related popup recommendations (default: false)\n- `include_stats` (boolean, optional): Include view/favorite statistics (default: true)\n\n**Example Usage in Claude:**\n> \"Get detailed information about popup store ID 'popup_12345' with related recommendations\"\n\n## Database Requirements\n\nThis MCP server requires a PostgreSQL database with the PopupHub Seoul schema. The required tables include:\n\n- `Popup` - Main popup store information\n- `PopupImage` - Gallery images for popups  \n- `PopupStatistics` - View counts, favorites, shares\n- `SearchQuery` - Analytics for search queries\n\nFor database setup instructions, see the [development repository](https://github.com/ichanho/popup-seoul-mcp).\n\n## Performance Features\n\n- **Smart Caching**: Automatic caching with configurable TTLs\n- **Database Optimization**: Efficient queries with proper indexing\n- **Input Validation**: Comprehensive parameter validation\n- **Error Handling**: Graceful error handling with meaningful messages\n\n## Troubleshooting\n\n### Common Issues\n\n1. **\"Tool not found\" error**\n   - Ensure Claude Desktop is restarted after configuration\n   - Verify the MCP server is properly configured in `claude_desktop_config.json`\n\n2. **Database connection errors**\n   - Check `DATABASE_URL` environment variable\n   - Ensure PostgreSQL database is running and accessible\n   - Verify database schema is properly set up\n\n3. **Permission errors**\n   - Ensure the package is installed globally with proper permissions\n   - Try running `npm install -g popup-seoul-mcp` with sudo if needed\n\n### Debugging\n\nEnable debug logging by setting `LOG_LEVEL=debug` in your configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"popup-seoul-mcp\": {\n      \"command\": \"popup-seoul-mcp\",\n      \"env\": {\n        \"DATABASE_URL\": \"your-connection-string\",\n        \"LOG_LEVEL\": \"debug\"\n      }\n    }\n  }\n}\n```\n\n## Development\n\nFor development setup, database configuration, and contributing guidelines, see the [development repository](https://github.com/ichanho/popup-seoul-mcp).\n\n## License\n\nISC\n\n## Support\n\n- 📁 [GitHub Repository](https://github.com/ichanho/popup-seoul-mcp)\n- 🐛 [Report Issues](https://github.com/ichanho/popup-seoul-mcp/issues)\n- 📖 [MCP Documentation](https://modelcontextprotocol.io/)","readmeFilename":"README.md","_rev":"1-664943b0aaf1d87b2d7c9e5719a60477"}