Skip to content

VitexSoftware/multiflexi-mcp-server

Repository files navigation

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 (read-only, see limitations)

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

Topic Management (read-only, see limitations)

  • list_topics / get_topic - List/get 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, update_credentials, update_credential_type, and update_topic have no requestBody defined in openapi-schema.yaml yet, so Company/Credential/CredentialType/Topic writes are not exposed as MCP tools — only list/get. Fixing this requires a schema change in multiflexi-api (deciding what fields each write should accept), tracked separately.
  • 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

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

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors