
Alteryx
STDIOMCP server for comprehensive Alteryx Server interaction and workflow management.
MCP server for comprehensive Alteryx Server interaction and workflow management.
A Model Context Protocol (MCP) server that provides a comprehensive interface to Alteryx Servers. This wrapper enables AI assistants and other MCP clients to interact with Alteryx Server for managing workflows, collections, users, schedules, credentials, and more.
# Install uv if you haven't already curl -LsSf https://astral.sh/uv/install.sh | sh # Install the MCP server uv pip install mcp-server-alteryx
pip install mcp-server-alteryx
git clone https://github.com/jupiterbak/AYX-MCP-Wrapper.git cd AYX-MCP-Wrapper uv sync uv run pip install -e .
Set up your Alteryx Server credentials using environment variables:
# Required: Alteryx Server API URL export ALTERYX_SERVER_URL="https://your-alteryx-server.com/webapi/" # Required: OAuth2 Client Credentials export ALTERYX_CLIENT_ID="your-client-id" export ALTERYX_CLIENT_SECRET="your-client-secret" export ALTERYX_VERIFY_SSL="1" # Optional: Logging level export LOG_LEVEL="INFO"
Alternatively, create a .env
file in your project root:
ALTERYX_SERVER_URL=https://your-alteryx-server.com/webapi/ ALTERYX_CLIENT_ID=your-client-id ALTERYX_CLIENT_SECRET=your-client-secret LOG_LEVEL=INFO
To use this MCP server with Claude Desktop, add the following configuration to your Claude Desktop settings:
{ "mcpServers": { "alteryx": { "command": "uvx", "args": ["mcp-server-alteryx", "--transport", "stdio"], "env": { "ALTERYX_SERVER_URL": "https://your-alteryx-server.com/webapi/", "ALTERYX_CLIENT_ID": "your-client-id", "ALTERYX_CLIENT_SECRET": "your-client-secret", "ALTERYX_VERIFY_SSL": "1" } } } }
However, we recommend to use it in combination with the "Sequential Thinking" tool:
{ "mcpServers": { "sequential-thinking": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sequential-thinking" ] }, "alteryx": { "command": "uvx", "args": ["mcp-server-alteryx", "--transport", "stdio"], "env": { "ALTERYX_API_HOST": "http://localhost/webapi/", "ALTERYX_CLIENT_ID": "your-client-id", "ALTERYX_CLIENT_SECRET": "your-client-secret", "ALTERYX_VERIFY_SSL": "1" } } } }
Configuration Options:
command
: The uvx executable to useargs
: Command line arguments for the MCP serverenv
: Environment variables for Alteryx Server authenticationTransport Options:
stdio
: Standard input/output (recommended for Claude Desktop)sse
: Server-Sent Eventsstreamable-http
: HTTP streamingFor Cursor IDE integration, add to your Cursor settings:
{ "mcpServers": { "alteryx": { "command": "uvx", "args": ["mcp-server-alteryx", "--transport", "stdio"], "env": { "ALTERYX_SERVER_URL": "https://your-alteryx-server.com/webapi/", "ALTERYX_CLIENT_ID": "your-client-id", "ALTERYX_CLIENT_SECRET": "your-client-secret" } } } }
The MCP server can be run with different transport options:
# Using stdio transport (default) uvx run src.main --transport stdio # Using Server-Sent Events (SSE) uvx run src.main --transport sse # Using HTTP streaming uvx run src.main --transport streamable-http # Set log level uvx run src.main --log-level DEBUG # Run with custom configuration uvx run src.main --transport stdio --log-level INFO
The MCP server provides comprehensive tools organized by functionality:
Function | Description | Parameters |
---|---|---|
get_all_collections() | Retrieve all accessible collections | None |
get_collection_by_id(collection_id) | Get specific collection details | collection_id: str |
create_collection(name) | Create a new collection | name: str |
update_collection_name_or_owner(collection_id, name, owner_id) | Update collection properties | collection_id: str, name: str, owner_id: str |
add_workflow_to_collection(collection_id, workflow_id) | Add workflow to collection | collection_id: str, workflow_id: str |
remove_workflow_from_collection(collection_id, workflow_id) | Remove workflow from collection | collection_id: str, workflow_id: str |
add_schedule_to_collection(collection_id, schedule_id) | Add schedule to collection | collection_id: str, schedule_id: str |
remove_schedule_from_collection(collection_id, schedule_id) | Remove schedule from collection | collection_id: str, schedule_id: str |
delete_collection(collection_id) | Delete a collection | collection_id: str |
Function | Description | Parameters |
---|---|---|
get_all_workflows() | Retrieve all accessible workflows | None |
get_workflow_by_id(workflow_id) | Get specific workflow details | workflow_id: str |
update_workflow_name_or_comment(workflow_id, name, comment) | Update workflow properties | workflow_id: str, name: str, comment: str |
transfer_workflow(workflow_id, new_owner_id) | Transfer workflow ownership | workflow_id: str, new_owner_id: str |
get_workflow_jobs(workflow_id) | Get jobs for a workflow | workflow_id: str |
execute_workflow(workflow_id, input_data) | Execute a workflow with input data | workflow_id: str, input_data: List[InputData] |
download_workflow_package_file(workflow_id, output_directory) | Download workflow package | workflow_id: str, output_directory: str |
get_workflow_xml(workflow_id) | Extract workflow XML | workflow_id: str |
Function | Description | Parameters |
---|---|---|
get_all_users() | Retrieve all accessible users | None |
get_user_by_id(user_id) | Get specific user details | user_id: str |
get_user_by_email(email) | Find user by email | email: str |
get_user_by_name(name) | Find user by name | name: str |
get_user_by_first_name(first_name) | Find user by first name | first_name: str |
get_all_user_assets(user_id) | Get all assets owned by user | user_id: str |
get_user_assets_by_type(user_id, asset_type) | Get specific asset types | user_id: str, asset_type: str |
update_user_details(user_id, first_name, last_name, email) | Update user information | user_id: str, first_name: str, last_name: str, email: str |
transfer_all_assets(user_id, new_owner_id, transfer_workflows, transfer_schedules, transfer_collections) | Transfer user assets | user_id: str, new_owner_id: str, transfer_workflows: bool, transfer_schedules: bool, transfer_collections: bool |
deactivate_user(user_id) | Deactivate a user | user_id: str |
reset_user_password(user_id) | Reset user password | user_id: str |
Function | Description | Parameters |
---|---|---|
get_all_schedules() | Retrieve all accessible schedules | None |
get_schedule_by_id(schedule_id) | Get specific schedule details | schedule_id: str |
deactivate_schedule(schedule_id) | Deactivate a schedule | schedule_id: str |
activate_schedule(schedule_id) | Activate a schedule | schedule_id: str |
update_schedule_name_or_comment(schedule_id, name, comment) | Update schedule properties | schedule_id: str, name: str, comment: str |
change_schedule_owner(schedule_id, new_owner_id) | Change schedule ownership | schedule_id: str, new_owner_id: str |
Function | Description | Parameters |
---|---|---|
get_all_job_messages(job_id) | Get messages for a specific job | job_id: str |
get_job_by_id(job_id) | Get job details | job_id: str |
Function | Description | Parameters |
---|---|---|
get_all_credentials() | Retrieve all accessible credentials | None |
get_credential_by_id(credential_id) | Get specific credential details | credential_id: str |
lookup_connection(connection_id) | Lookup DCM connection | connection_id: str |
get_connection_by_id(connection_id) | Get connection details | connection_id: str |
# Clone the repository git clone https://github.com/jupiterbak/AYX-MCP-Wrapper.git cd AYX-MCP-Wrapper # Install dependencies uv sync # Install in development mode uv run pip install -e .
We welcome contributions! Please follow these steps:
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.
Made with ❤️ for the Alteryx community