Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
MCP server for Zafari CRS API - safari property management and booking operations Zafari MCP Server with OAuth 2.1 A **production-ready**, security-hardened Model Context Protocol (MCP) server for the Zafari CRS API with OAuth 2.1 authentication, enabling secure remote access from Claude Desktop and other MCP clients for managing safari property operations. ๐ Security Features โ **Password Hashing** - bcrypt with 10 salt rounds โ **Token Storage** - Redis OR in-memory (configurable) โ **Rate Limi Published capability contract available. No trust telemetry is available yet. Last updated 2/24/2026.
Freshness
Last checked 2/22/2026
Best For
Contract is available with explicit auth and schema references.
Not Ideal For
zafari-mcp-server is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.
Evidence Sources Checked
editorial-content, capability-contract, runtime-metrics, public facts pack
MCP server for Zafari CRS API - safari property management and booking operations Zafari MCP Server with OAuth 2.1 A **production-ready**, security-hardened Model Context Protocol (MCP) server for the Zafari CRS API with OAuth 2.1 authentication, enabling secure remote access from Claude Desktop and other MCP clients for managing safari property operations. ๐ Security Features โ **Password Hashing** - bcrypt with 10 salt rounds โ **Token Storage** - Redis OR in-memory (configurable) โ **Rate Limi
Public facts
6
Change events
1
Artifacts
0
Freshness
Feb 22, 2026
Published capability contract available. No trust telemetry is available yet. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 22, 2026
Vendor
Anthonylimo90
Artifacts
0
Benchmarks
0
Last release
1.0.0
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Published capability contract available. No trust telemetry is available yet. Last updated 2/24/2026.
Setup snapshot
git clone https://github.com/anthonylimo90/zafari-mcp-server.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Anthonylimo90
Protocol compatibility
MCP
Auth modes
mcp, api_key, oauth
Machine-readable schemas
OpenAPI or schema references published
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
bash
# Clone and install npm install # Generate JWT secret openssl rand -base64 64 # Configure environment cp .env.example .env
env
# Required ZAFARI_API_KEY=your-zafari-api-key JWT_SECRET=<paste-generated-secret-here> # Must be 32+ characters ADMIN_PASSWORD=MySecurePassword123! # Minimum 12 characters DEMO_PASSWORD=AnotherSecurePass456! # Minimum 12 characters # Server Configuration TRANSPORT=http PORT=3000 # Optional: Token Storage (use redis for production) STORAGE_BACKEND=memory # or 'redis' # REDIS_URL=redis://localhost:6379 # Optional: Security ALLOWED_ORIGINS=https://claude.ai ALLOWED_CLIENT_IDS=claude-desktop,mcp-inspector
bash
npm run build npm start
bash
TRANSPORT=http npm start
bash
TRANSPORT=stdio npm start
text
zafari-mcp-server/ โโโ src/ โ โโโ index.ts # Main server with OAuth & middleware โ โโโ types.ts # TypeScript definitions โ โโโ constants.ts # Configuration โ โโโ schemas/ โ โ โโโ index.ts # Zod validation schemas โ โโโ services/ โ โ โโโ api-client.ts # Zafari API client โ โ โโโ formatters.ts # Response formatting โ โ โโโ oauth.ts # OAuth utilities (bcrypt, JWT) โ โ โโโ logger.ts # Winston logging (NEW) โ โ โโโ storage.ts # Token storage abstraction (NEW) โ โโโ routes/ โ โ โโโ oauth.ts # OAuth endpoints โ โโโ middleware/ โ โ โโโ auth.ts # Authentication middleware โ โโโ tools/ โ โโโ properties.ts # Property tools โ โโโ rooms.ts # Room tools โ โโโ extras.ts # Extra service tools โ โโโ bookings.ts # Booking tools โ โโโ webhooks.ts # Webhook tools โโโ dist/ # Compiled output โโโ .env.example # Environment template โโโ test-security.sh # Security verification script (NEW) โโโ README.md # This file
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
MCP server for Zafari CRS API - safari property management and booking operations Zafari MCP Server with OAuth 2.1 A **production-ready**, security-hardened Model Context Protocol (MCP) server for the Zafari CRS API with OAuth 2.1 authentication, enabling secure remote access from Claude Desktop and other MCP clients for managing safari property operations. ๐ Security Features โ **Password Hashing** - bcrypt with 10 salt rounds โ **Token Storage** - Redis OR in-memory (configurable) โ **Rate Limi
A production-ready, security-hardened Model Context Protocol (MCP) server for the Zafari CRS API with OAuth 2.1 authentication, enabling secure remote access from Claude Desktop and other MCP clients for managing safari property operations.
โ
Password Hashing - bcrypt with 10 salt rounds
โ
Token Storage - Redis OR in-memory (configurable)
โ
Rate Limiting - Auth: 5/15min, API: 100/req/min
โ
CORS Protection - Configurable allowed origins
โ
Security Headers - Helmet (CSP, HSTS, X-Frame-Options)
โ
Structured Logging - Winston with security event tracking
โ
Client Validation - OAuth client ID whitelist
โ
JWT Enforcement - 32+ character secret required
โ
Replay Protection - Authorization code tracking
Status: โ Production-ready with proper configuration (0 npm vulnerabilities)
# Clone and install
npm install
# Generate JWT secret
openssl rand -base64 64
# Configure environment
cp .env.example .env
Edit .env and set required values:
# Required
ZAFARI_API_KEY=your-zafari-api-key
JWT_SECRET=<paste-generated-secret-here> # Must be 32+ characters
ADMIN_PASSWORD=MySecurePassword123! # Minimum 12 characters
DEMO_PASSWORD=AnotherSecurePass456! # Minimum 12 characters
# Server Configuration
TRANSPORT=http
PORT=3000
# Optional: Token Storage (use redis for production)
STORAGE_BACKEND=memory # or 'redis'
# REDIS_URL=redis://localhost:6379
# Optional: Security
ALLOWED_ORIGINS=https://claude.ai
ALLOWED_CLIENT_IDS=claude-desktop,mcp-inspector
Build and start:
npm run build
npm start
http://localhost:3000/mcp๐ Detailed Setup Guide: See CLAUDE_DESKTOP_SETUP.md
| Variable | Description | Example |
|----------|-------------|---------|
| ZAFARI_API_KEY | Your Zafari CRS API key | za_live_... |
| JWT_SECRET | JWT signing secret (32+ chars) | Generate: openssl rand -base64 64 |
| ADMIN_PASSWORD | Admin user password (12+ chars) | MySecurePass123! |
| DEMO_PASSWORD | Demo user password (12+ chars) | AnotherPass456! |
| Variable | Default | Description |
|----------|---------|-------------|
| TRANSPORT | stdio | Use http for OAuth, stdio for legacy |
| HOST | localhost | Server host |
| PORT | 3000 | Server port |
| STORAGE_BACKEND | memory | Token storage: memory or redis |
| REDIS_URL | - | Redis connection string (required if using Redis) |
| ALLOWED_ORIGINS | https://claude.ai | CORS allowed origins (comma-separated) |
| ALLOWED_CLIENT_IDS | claude-desktop,mcp-inspector | Whitelisted OAuth clients |
| LOG_LEVEL | info | Logging level (error/warn/info/debug) |
| NODE_ENV | development | Environment (production/development) |
| OAUTH_ISSUER | zafari-mcp-server | JWT issuer claim |
| OAUTH_AUDIENCE | zafari-mcp-api | JWT audience claim |
HTTP Mode (Recommended for Claude Desktop):
TRANSPORT=http npm start
Stdio Mode (Legacy):
TRANSPORT=stdio npm start
/oauth/authorize, /oauth/token): 5 attempts per 15 minutes/mcp): 100 requests per minuteALLOWED_ORIGINS environment variablehttps://claude.ai (no wildcards)Implemented via Helmet.js:
Structured logging with Winston:
error.log, combined.log (5MB rotation)zafari_list_properties - Fetch all safari properties/lodgeszafari_list_rooms - Get room types for a propertyzafari_get_room_availability - Check daily availabilityzafari_get_room_rates - Retrieve pricingzafari_update_room_availability - Set availability levelszafari_update_room_rates - Update pricingzafari_list_bookings - List bookings with filterszafari_get_booking - Get booking detailszafari_create_booking - Create new bookingzafari_update_booking_status - Update statuszafari_list_extra_services - List add-ons (park fees, activities)zafari_get_extra_service_availability - Check availabilityzafari_update_extra_service_availability - Update capacityzafari_get_webhook_config - Get webhook settingszafari_update_webhook_config - Configure notifications/oauth/authorizehttp://localhost:3000/oauth/authorizehttp://localhost:3000/oauth/tokenhttp://localhost:3000/.well-known/oauth-authorization-serverhttp://localhost:3000/mcpโ JWT Tokens: 1-hour access tokens with signature verification โ Refresh Tokens: 30-day refresh tokens for long-term access โ PKCE Support: Proof Key for Code Exchange for public clients โ Scope Management: Fine-grained permission control โ Redirect Validation: HTTPS enforcement for production
zafari-mcp-server/
โโโ src/
โ โโโ index.ts # Main server with OAuth & middleware
โ โโโ types.ts # TypeScript definitions
โ โโโ constants.ts # Configuration
โ โโโ schemas/
โ โ โโโ index.ts # Zod validation schemas
โ โโโ services/
โ โ โโโ api-client.ts # Zafari API client
โ โ โโโ formatters.ts # Response formatting
โ โ โโโ oauth.ts # OAuth utilities (bcrypt, JWT)
โ โ โโโ logger.ts # Winston logging (NEW)
โ โ โโโ storage.ts # Token storage abstraction (NEW)
โ โโโ routes/
โ โ โโโ oauth.ts # OAuth endpoints
โ โโโ middleware/
โ โ โโโ auth.ts # Authentication middleware
โ โโโ tools/
โ โโโ properties.ts # Property tools
โ โโโ rooms.ts # Room tools
โ โโโ extras.ts # Extra service tools
โ โโโ bookings.ts # Booking tools
โ โโโ webhooks.ts # Webhook tools
โโโ dist/ # Compiled output
โโโ .env.example # Environment template
โโโ test-security.sh # Security verification script (NEW)
โโโ README.md # This file
npm run build # Compile TypeScript
npm start # Run server
npm run dev # Watch mode
Run security verification:
./test-security.sh
Tests include:
npx @modelcontextprotocol/inspector node dist/index.js
# 1. Health check
curl http://localhost:3000/health
# 2. OAuth metadata
curl http://localhost:3000/.well-known/oauth-authorization-server
# 3. Get authorization (browser)
open "http://localhost:3000/oauth/authorize?response_type=code&client_id=claude-desktop&redirect_uri=http://localhost:3000/callback"
# 4. Exchange code for token
curl -X POST http://localhost:3000/oauth/token \
-d "grant_type=authorization_code" \
-d "code=YOUR_CODE" \
-d "client_id=claude-desktop"
# 5. Use token
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Make 6 rapid requests (6th should be rate limited)
for i in {1..6}; do
curl -I http://localhost:3000/oauth/authorize
done
# Expected: 6th returns 429 Too Many Requests
# Test CORS
curl -H "Origin: https://claude.ai" -I http://localhost:3000/health
# Test security headers
curl -I http://localhost:3000/health
# Should include: X-Content-Type-Options, Strict-Transport-Security, X-Frame-Options
โ Security Checklist Completed:
Docker:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY dist ./dist
ENV NODE_ENV=production TRANSPORT=http PORT=3000
CMD ["node", "dist/index.js"]
Cloud Platforms:
# Required
NODE_ENV=production
ZAFARI_API_KEY=your-production-api-key
JWT_SECRET=<64-char-secret>
ADMIN_PASSWORD=<strong-16-char-password>
DEMO_PASSWORD=<strong-16-char-password>
# Redis (Recommended)
STORAGE_BACKEND=redis
REDIS_URL=redis://your-redis-server:6379
# Security
ALLOWED_ORIGINS=https://your-domain.com
ALLOWED_CLIENT_IDS=claude-desktop,your-custom-client
TRANSPORT=http
PORT=3000
Option 1: Reverse Proxy
# nginx, Apache, or Caddy
# Configure SSL/TLS certificates
Option 2: Cloud Platform
Option 3: CDN
Request:
{
"tool": "zafari_list_properties",
"params": {
"response_format": "json"
}
}
Request:
{
"tool": "zafari_create_booking",
"params": {
"property_id": "prop_123",
"check_in": "2025-02-01",
"check_out": "2025-02-05",
"guest_first_name": "John",
"guest_last_name": "Doe",
"guest_email": "john@example.com",
"rooms": [{"room_id": "room_456", "quantity": 1}]
}
}
Request:
{
"tool": "zafari_update_room_rates",
"params": {
"property_id": "prop_123",
"room_id": "room_456",
"from": "2025-03-01",
"to": "2025-03-31",
"rate": 500,
"resident_type": "non_resident"
}
}
# Check API key is set
echo $ZAFARI_API_KEY
# Verify build completed
npm run build
# Check port availability
lsof -i :3000
demo / demo123# 1. Verify server is running
curl http://localhost:3000/health
# 2. Test OAuth metadata
curl http://localhost:3000/.well-known/oauth-authorization-server
# 3. Check URL in connector settings (no typos)
# 4. Restart Claude Desktop
# 5. Try removing and re-adding connector
Apache-2.0
For issues or questions:
Version: 2.1.0 (Security-Hardened)
Security: โ
Production-ready (0 vulnerabilities)
Built with: MCP SDK v1.0.4, OAuth 2.1, bcrypt, Express, JWT (jose), Winston, Helmet
API: Zafari CRS v2
๐ฆ Built for safari property management excellence
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
mcp, api_key, oauth
Streaming
No
Data region
global
Protocol support
Requires: mcp, lang:typescript
Forbidden: none
Guardrails
Operational confidence: medium
curl -s "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
80
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
74
Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Rank
72
An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"mcp",
"api_key",
"oauth"
],
"requires": [
"mcp",
"lang:typescript"
],
"forbidden": [],
"supportsMcp": true,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": "https://github.com/anthonylimo90/zafari-mcp-server#input",
"outputSchemaRef": "https://github.com/anthonylimo90/zafari-mcp-server#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:44:58.017Z",
"sourceUpdatedAt": "2026-02-24T19:44:58.017Z",
"freshnessSeconds": 4431814
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_MCP",
"generatedAt": "2026-04-17T02:48:32.468Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "supported",
"confidenceSource": "contract",
"notes": "Confirmed by capability contract"
},
{
"key": "mcp",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "zafari",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "crs",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "safari",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "booking",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "hospitality",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:MCP|supported|contract capability:mcp|supported|profile capability:zafari|supported|profile capability:crs|supported|profile capability:safari|supported|profile capability:booking|supported|profile capability:hospitality|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP",
"href": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:44:58.017Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "mcp, api_key, oauth",
"href": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:44:58.017Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/anthonylimo90/zafari-mcp-server#input",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:44:58.017Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Anthonylimo90",
"href": "https://github.com/anthonylimo90/zafari-mcp-server",
"sourceUrl": "https://github.com/anthonylimo90/zafari-mcp-server",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-anthonylimo90-zafari-mcp-server/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub ยท GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to zafari-mcp-server and adjacent AI workflows.