
Visa Checker
STDIOMCP server for real-time visa appointment availability checking with smart caching
MCP server for real-time visa appointment availability checking with smart caching
A specialized MCP (Model Context Protocol) server for checking visa appointment availability in real-time
# Navigate to your project cd visa-checker-mcp # Install dependencies (20-30x faster than npm!) bun install # Run stdio transport server bun run dev:stdio # Run HTTP server with SSE support bun run dev:http
fetch-visa-appointments
- Get comprehensive appointment data with filteringget-open-appointments
- Get only centers with available appointmentssearch-visa-centers
- Advanced search with multiple filter optionsvisa://appointments
- Complete live visa appointment data (JSON)visa://appointments/{country_code}/{mission_code}
- Filtered data by country codesvisa-checker-mcp/
├── src/
│ ├── index.ts # Main MCP server with visa tools and resources
│ ├── services/
│ │ ├── visa.ts # Visa API client and data processing
│ │ └── visa.test.ts # Unit tests for visa service
│ ├── config/
│ │ └── server.ts # Server configuration
│ └── utils/
│ └── logger.ts # Transport-aware logging
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
└── README.md # This file
The server provides powerful visa appointment checking capabilities through the visasbot.com API:
fetch-visa-appointments
- Get comprehensive visa appointment data
// Get all appointments await tool.call('fetch-visa-appointments', {}) // Filter by country (Turkey to Netherlands) await tool.call('fetch-visa-appointments', { country_code: 'tur', mission_code: 'nld' }) // Filter by status await tool.call('fetch-visa-appointments', { status: 'open' })
get-open-appointments
- Get only centers with available appointments
// Get all open appointments await tool.call('get-open-appointments', {}) // Filter open appointments by country await tool.call('get-open-appointments', { country_code: 'tur' })
search-visa-centers
- Advanced search with multiple filters
await tool.call('search-visa-centers', { country_code: 'tur', mission_code: 'nld', visa_type: 'tourism', status: 'open' })
visa://appointments
- Complete live visa appointment data (JSON)visa://appointments/{country_code}/{mission_code}
- Filtered data by country codes# Run stdio transport server (for process communication) bun run dev:stdio # Run HTTP server with SSE support (for web-based communication) bun run dev:http # Type checking bun run typecheck # Linting and formatting bun run lint bun run format
To test your MCP server, you can:
Example Claude Desktop configuration:
{ "mcpServers": { "visa-checker-mcp": { "command": "/path/to/bun", "args": ["/absolute/path/to/visa-checker-mcp/src/index.ts"] } } }
Getting the correct paths:
# Get your bun path which bun # Example output: /Users/username/.bun/bin/bun # Get your project path echo "$(pwd)/src/index.ts" # Example output: /Users/username/Dev/visa-checker-mcp/src/index.ts
Complete working example:
{ "mcpServers": { "visa-checker-mcp": { "command": "/Users/username/.bun/bin/bun", "args": ["/Users/username/Dev/visa-checker-mcp/src/index.ts"] } } }
Perfect for local development and CLI tools:
Ideal for web applications and remote services:
# Install dependencies bun install # Lint and format bun run lint bun run format # Build server bun run build # Clean build artifacts bun run clean
Metric | npm/Express | Bun/Hono | Improvement |
---|---|---|---|
Install Speed | ~15s | ~2s | 7.5x faster |
Framework Size | ~200kB | ~14kB | 93% smaller |
Runtime Overhead | High | Minimal | Native TypeScript |
Cold Start | ~500ms | ~50ms | 10x faster |
git checkout -b feature/amazing-feature
)git commit -m 'Add amazing feature'
)git push origin feature/amazing-feature
)This project is licensed under the MIT License - see the LICENSE file for details.
MCP Server JSON Parsing Errors
If you see: Unexpected token '🔧', "🔧 Registe"... is not valid JSON
This occurs when using console.log() with stdio transport. The template uses transport-aware logging that automatically uses stderr for stdio transport to avoid interfering with JSON-RPC messages on stdout.
Claude Desktop Configuration Issues
which bun
to get the correct commandType Checking Errors
Run bun run typecheck
to check for TypeScript issues.
Server Connection Issues
bun run dev:stdio
Path Issues
# Test if bun command works /path/to/bun --version # Test if your server starts /path/to/bun /path/to/your/project/src/index.ts