Skip to main content

MultiFlexi MCP Server

PyPI version Python 3.9+ License: MIT

MCP (Model Context Protocol) Server for MultiFlexi API integration. This server provides tools and resources for interacting with MultiFlexi applications, jobs, companies, users, and run templates.

Features

  • Applications: List, retrieve, and manage MultiFlexi applications
  • Jobs: Create, retrieve, and monitor job execution
  • Companies: Manage company data and configurations
  • Users: Access user information and profiles
  • Run Templates: Create and update execution templates
  • GDPR Compliance: Request and manage data exports
  • Authentication: Support for basic authentication
  • Error Handling: Comprehensive error handling and logging

Installation

Using pip

pip install multiflexi-mcp-server

From source

git clone https://github.com/VitexSoftware/multiflexi-mcp-server.git
cd multiflexi-mcp-server
pip install -e .

Configuration

The server can be configured using environment variables:

Required Configuration

  • MULTIFLEXI_HOST: MultiFlexi API host URL (default: demo server)

Optional Configuration

  • MULTIFLEXI_USERNAME: Username for basic authentication
  • MULTIFLEXI_PASSWORD: Password for basic authentication
  • MULTIFLEXI_VERIFY_SSL: Whether to verify SSL certificates (default: true)
  • MULTIFLEXI_TIMEOUT: Request timeout in seconds (default: 30)
  • MULTIFLEXI_MAX_RETRIES: Maximum number of retries (default: 3)
  • MULTIFLEXI_DEBUG: Enable debug logging (default: false)

Example Configuration

export MULTIFLEXI_HOST="https://your-multiflexi-instance.com"
export MULTIFLEXI_USERNAME="your-username"
export MULTIFLEXI_PASSWORD="your-password"
export MULTIFLEXI_VERIFY_SSL="true"
export MULTIFLEXI_DEBUG="false"

Usage

Running the Server

multiflexi-mcp-server

Claude Desktop Integration

Add the following to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "multiflexi": {
      "command": "multiflexi-mcp-server",
      "env": {
        "MULTIFLEXI_HOST": "https://your-multiflexi-instance.com",
        "MULTIFLEXI_USERNAME": "your-username",
        "MULTIFLEXI_PASSWORD": "your-password"
      }
    }
  }
}

Using with MCP Clients

The server provides the following resources:

  • multiflexi://apps - List of applications
  • multiflexi://jobs - List of jobs
  • multiflexi://companies - List of companies
  • multiflexi://users - List of users
  • multiflexi://runtemplates - List of run templates
  • multiflexi://credentials - List of credentials
  • multiflexi://credential_types - List of credential types
  • multiflexi://topics - List of topics (capability contracts)
  • multiflexi://eventsources - List of event sources
  • multiflexi://eventrules - List of event rules
  • multiflexi://tasks - List of tasks (per-window fulfilment obligations)

Available Tools

Requires a multiflexi-client build generated from the current openapi-schema.yaml (not yet released to PyPI as of this writing — see "Known limitations" below).

Application Management

  • get_app - Get application by ID
  • get_apps - List all applications (via resources)

Job Management

  • get_job - Get job by ID
  • create_job - Schedule a job from a RunTemplate (runtemplate_id, scheduled, executor, env)
  • get_job_status - Get job execution status
  • get_jobs - List all jobs (via resources)

Company Management

  • get_company - Get company by ID
  • list_companies - List all companies
  • list_company_users - List users assigned to a company
  • assign_user_to_company - Assign a user to a company with an access role
  • unassign_user_from_company - Remove a user's assignment from a company

User Management

  • get_user - Get user by ID
  • list_users - List all users
  • get_user_roles - Get RBAC roles assigned to a user
  • set_user_roles - Assign RBAC roles to a user

Credential & Credential Type Management

  • list_credentials / get_credential / update_credential - List/get/update credentials
  • list_credential_types / get_credential_type / update_credential_type - List/get/update credential types

Topic Management

  • list_topics / get_topic / update_topic - List/get/update topics

Event Source Management

  • list_event_sources / get_event_source - List/get event sources
  • set_event_source - Create or update an event source
  • delete_event_source - Delete an event source
  • test_event_source_connection - Live-test connectivity/credentials

Event Rule Management

  • list_event_rules / get_event_rule - List/get event rules
  • set_event_rule - Create or update an event rule
  • delete_event_rule - Delete an event rule

Task (read-only — tasks are system-materialized per RunTemplate window)

  • list_tasks - List tasks, optionally filtered by state/runtemplate_id
  • get_task - Get a task by ID, including its job attempt history

Run Template Management

  • get_runtemplate - Get run template by ID
  • update_runtemplate - Update run template
  • get_runtemplates - List all templates (via resources)

GDPR Compliance

  • request_data_export - Request data export
  • get_export_status - Check export status

Known limitations

  • set_company_by_id still has no requestBody defined in openapi-schema.yaml, so Company writes are not exposed as an MCP tool — only list/get. update_credentials, update_credential_type, and update_topic now have requestBody schemas and are exposed as update_credential, update_credential_type, and update_topic.
  • get_credential's schema declares a required token parameter alongside credential_id that looks like a schema-authoring artifact on a session-authenticated endpoint; it's exposed but defaults to an empty string.

Example Tool Usage

{
  "tool": "get_app",
  "arguments": {
    "app_id": 123,
    "format": "json"
  }
}
{
  "tool": "create_job",
  "arguments": {
    "runtemplate_id": 15,
    "scheduled": "now",
    "env": {"DOCID": "FV-2025-0042"}
  }
}
{
  "tool": "request_data_export",
  "arguments": {
    "export_type": "personal_data",
    "format": "json"
  }
}

Development

Prerequisites

  • Python 3.9+
  • pip
  • virtualenv (recommended)

Setup Development Environment

git clone https://github.com/VitexSoftware/multiflexi-mcp-server.git
cd multiflexi-mcp-server

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -e ".[dev]"

Running Tests

pytest

Code Formatting

# Format code
black src/ tests/

# Sort imports
isort src/ tests/

# Type checking
mypy src/

# Linting
ruff src/ tests/

API Documentation

This server integrates with the MultiFlexi API. For detailed API documentation, refer to:

Error Handling

The server provides comprehensive error handling:

  • API Errors: Formatted with status codes and detailed messages
  • Authentication Errors: Clear authentication failure messages
  • Validation Errors: Input validation with descriptive errors
  • Network Errors: Timeout and connection error handling

All errors are returned in a consistent JSON format:

{
  "error": true,
  "operation": "get_app",
  "status": 404,
  "reason": "Not Found",
  "details": {
    "message": "Application with ID 123 not found"
  }
}

Security Considerations

  • Authentication: Use environment variables for credentials
  • SSL Verification: Enable SSL verification in production
  • Network Security: Ensure secure network connections
  • Data Privacy: Handle GDPR exports with appropriate security

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Run the test suite
  6. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Changelog

See CHANGELOG.md for the full history. Highlights:

v0.2.0

  • Fixed slow cold-start import time: multiflexi_client (the generated API SDK) is now imported lazily on first use instead of at module load, cutting process startup from ~5s to well under 1s -- this matters because the server is spawned fresh per connection by consumers with a bounded handshake timeout.
  • Added update_credential, update_credential_type, and update_topic tools
  • Fixed several API method/response mismatches against multiflexi-client

v0.1.0 (Initial Release)

  • Basic MCP server implementation
  • MultiFlexi API integration
  • Application, job, company, user, and template management
  • GDPR compliance features
  • Comprehensive error handling
  • Environment-based configuration

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multiflexi_mcp_server-0.2.0.tar.gz (28.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multiflexi_mcp_server-0.2.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file multiflexi_mcp_server-0.2.0.tar.gz.

File metadata

  • Download URL: multiflexi_mcp_server-0.2.0.tar.gz
  • Upload date:
  • Size: 28.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for multiflexi_mcp_server-0.2.0.tar.gz
Algorithm Hash digest
SHA256 85a737403098413c4baabf78234da8f9db0c64f2c64498df245f4a4e4f53dbe2
MD5 6a936762ab42f70ad953854e33fd170a
BLAKE2b-256 1f548a079ff6e73a3f41e34d1ab1e18f0035b9e2b212e75f4eb2b46b000cb694

See more details on using hashes here.

File details

Details for the file multiflexi_mcp_server-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for multiflexi_mcp_server-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 739f5b091390150bc100ae0b3fe69c1df8904000f41948a86400a85d530662c1
MD5 f56ca5f90b39bb2bf5e1077ebc25e1c3
BLAKE2b-256 885663bf0ca5418f5f183069ed70bbc8ee956717620fe019f6a01c665186d9d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page