A self-improving Model Context Protocol (MCP) server for interacting with the Channex.io API.
This is NOT an official Channex.io project. This is an independent, open-source implementation of an MCP server that interfaces with the Channex.io API. It is not affiliated with, endorsed by, or supported by Channex.io. Use at your own risk.
See CLAUDE_CODE_SETUP.md for detailed instructions on adding this MCP to Claude Code.
Add the following to your ~/.cursor/mcp.json
or Claude Desktop configuration:
{
"mcpServers": {
"channex": {
"command": "npx",
"args": ["--prefix", "/path/to/channex-mcp", "channex-mcp"],
"env": {
"MCP_MODE": "mcp",
"CHANNEX_API_KEY": "your-api-key-here",
"CHANNEX_BASE_URL": "https://app.channex.io/api/v1/"
}
}
}
}
Important: Replace /path/to/channex-mcp
with the absolute path to your channex-mcp directory and add your actual Channex API key.
- ES Module errors: The project uses ES modules. The configuration above uses
npx
to handle module loading correctly. - Server not starting: Ensure you've run
npm install
andnpm run build
in the channex-mcp directory first.
- ✨ Complete CRUD operations for Properties, Room Types, Rate Plans
- 📊 ARI (Availability, Rates, Inventory) management
- 🔄 Self-improving architecture with recursive commands
- 🧪 Built-in testing framework
- 📝 Auto-generated documentation
- 🔒 Secure API key management
npm install
- Copy
.env.example
to.env
- Add your Channex API key
cp .env.example .env
npm run dev
Generate new endpoints:
npm run command generate-endpoint -- bookings list,get,create
Run tests:
npm run command test-all
Update documentation:
npm run command update-docs
Improve types from API responses:
npm run command improve-types -- properties samples/properties.json
The MCP server exposes the following tools:
channex_list_properties
- List all propertieschannex_get_property
- Get property by IDchannex_create_property
- Create new propertychannex_update_property
- Update propertychannex_delete_property
- Delete property
channex_list_room_types
- List room typeschannex_get_room_type
- Get room type by IDchannex_create_room_type
- Create room type
channex_list_rate_plans
- List rate planschannex_get_rate_plan
- Get rate plan by IDchannex_create_rate_plan
- Create rate plan
channex_get_availability
- Get availability per room typechannex_get_restrictions
- Get restrictions per rate planchannex_update_ari
- Update availability, rates, and restrictions
channex_test_channel_api
- Test channel API accesschannex_check_existing_connection
- Check for existing channel connectionschannex_list_channels
- List all channel connections (supports field filtering)channex_get_channel_by_code
- Get channels by code (optimized for specific channels)channex_get_channel
- Get channel detailschannex_create_channel
- Create new channel (e.g., Airbnb)channex_update_channel
- Update channel settings (now supports property_ids)channex_delete_channel
- Delete channel connectionchannex_get_channel_mappings
- Get listing-to-rate-plan mappingschannex_update_channel_mapping
- Map channel listings to rate planschannex_get_airbnb_listings
- Get Airbnb-specific listingschannex_update_airbnb_listing
- Update Airbnb pricing/availability
channex-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── api/
│ │ └── client.ts # Channex API client
│ ├── resources/ # Resource handlers
│ │ ├── properties.ts
│ │ ├── room-types.ts
│ │ ├── rate-plans.ts
│ │ ├── ari.ts
│ │ └── channels.ts
│ └── types/ # TypeScript definitions
├── .claude/
│ └── commands/ # Self-improvement scripts
└── CLAUDE.MD # Claude Code documentation
- Use the
generate-endpoint
command to scaffold new resources - Add TypeScript types in
src/types/index.ts
- Implement handlers in the MCP server
- Update documentation using
update-docs
- Added field filtering support to reduce response sizes
- Implemented response truncation for large objects
- Created optimized
channex_get_channel_by_code
endpoint - Fixed pagination parameter formatting
- Added
property_ids
support tochannex_update_channel
- Enables adding/removing properties from existing channels
- Essential for managing multi-property OTA connections
We welcome contributions! Please see our Contributing Guidelines for details.
Important: This is an unofficial project. Contributors must:
- Test against real Channex APIs (no mocks)
- Respect Channex.io's Terms of Service
- Never commit API keys or credentials
This project is licensed under the MIT License - see the LICENSE file for details.
This project is not affiliated with Channex.io. The Channex name and API are property of their respective owners. This is an independent project that provides an MCP interface to interact with the public Channex API.
For issues and questions, please open a GitHub issue.