Skip to content
Conduit

mcp server

wflow-mcp

Community MCP server for wflow (www.wflow.com): documents, storage, approvals, registers, organization management (76 tools). Not affiliated with wflow

hlebtkachenko/wflow-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 26, 2026

Community wflow MCP Server

Not affiliated with wflow. Independent open-source project, not endorsed or supported by wflow. Official MCP server: wflow AI Connect.

CI License: MIT Node.js Version TypeScript

Community MCP server for wflow, a Czech accounting automation platform for document management, expense tracking, approvals, storage, and organizational workflows.

76 tools across 10 categories, checked against the official OpenAPI spec. OAuth2 client credentials authentication, response caching with configurable TTL, retries for rate limits and read timeouts, and actionable error messages.

Requirements

  • Node.js 22+
  • wflow API credentials (OAuth2 client ID and secret) — request from wflow support or create via the wflow admin panel

Installation

git clone https://github.com/hlebtkachenko/wflow-mcp.git
cd wflow-mcp
npm ci
npm run build

Docker

docker build -t wflow-mcp .
docker run -e WFLOW_CLIENT_ID=... -e WFLOW_CLIENT_SECRET=... -e WFLOW_ORGANIZATION=... wflow-mcp

Configuration

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "wflow": {
      "command": "node",
      "args": ["/absolute/path/to/wflow-mcp/dist/index.js"],
      "env": {
        "WFLOW_CLIENT_ID": "your-client-id",
        "WFLOW_CLIENT_SECRET": "your-client-secret",
        "WFLOW_ORGANIZATION": "your-org-name"
      }
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "wflow": {
      "command": "node",
      "args": ["/absolute/path/to/wflow-mcp/dist/index.js"],
      "env": {
        "WFLOW_CLIENT_ID": "your-client-id",
        "WFLOW_CLIENT_SECRET": "your-client-secret",
        "WFLOW_ORGANIZATION": "your-org-name"
      }
    }
  }
}

Claude Code

claude mcp add wflow -- node /absolute/path/to/wflow-mcp/dist/index.js

Set environment variables before running:

export WFLOW_CLIENT_ID=your-client-id
export WFLOW_CLIENT_SECRET=your-client-secret
export WFLOW_ORGANIZATION=your-org-name

Any MCP client (stdio)

WFLOW_CLIENT_ID=... WFLOW_CLIENT_SECRET=... WFLOW_ORGANIZATION=... node dist/index.js

Environment Variables

VariableRequiredDefaultDescription
WFLOW_CLIENT_IDYes—OAuth2 client ID
WFLOW_CLIENT_SECRETYes—OAuth2 client secret
WFLOW_ORGANIZATIONNo—Default organization workspace name
WFLOW_CACHE_TTLNo120Cache TTL in seconds (0 to disable)
WFLOW_MAX_RETRIESNo3Max retries on 429, 401 (token refresh) and GET timeouts
WFLOW_API_URLNohttps://api.wflow.comAPI base URL (tests point it at a fake server)
WFLOW_TOKEN_URLNohttps://account.wflow.com/connect/tokenOAuth2 token endpoint

Tools

Annotations: read tools are readOnlyHint; tools that delete, overwrite a whole set (rights, register, properties, payments, metadata, approvals) or have a remove/clear mode are destructiveHint; wf_api_raw is destructive and openWorldHint.

File content is not transferred over MCP except for wf_document_with_files, which takes each file base64-encoded (files[].contentBase64) and uploads it as multipart/form-data.

Documents (11 tools)

ToolDescription
wf_documentsList documents with optional filtering and pagination
wf_documentGet detailed document by ID
wf_document_saveCreate or update a document
wf_document_deleteDelete a document (careful!)
wf_document_with_filesCreate a document from uploaded files (PDF, ISDOC, images); wflow extracts the data. Pass each file's content base64-encoded.
wf_document_metadataGet or update document metadata
wf_document_lockLock or unlock a document
wf_document_eventsGet document event history
wf_document_exportExport documents in specified format
wf_documents_queueList IDs of documents ready for export or extraction (use wf_document for details)
wf_document_taskCreate or mark document task as processed

Document Files (3 tools)

ToolDescription
wf_document_filesList files attached to a document
wf_document_file_deleteDelete a file from a document (careful!)
wf_document_file_stampApply stamp to a document file

Document Collaboration (9 tools)

ToolDescription
wf_document_approvalsGet approval status for a document
wf_document_approval_setSet approval template on a document
wf_document_approval_clearRemove approvals from a document (careful!)
wf_document_commentsGet comments on a document
wf_document_linksGet, add, or remove linked documents
wf_document_paymentsUpdate payment information on a document
wf_document_rightsGet or set access rights for a document
wf_document_tagsList all organization tags or tags on a specific document
wf_document_tag_setAdd or remove a tag on a document

Custom Properties (10 tools)

ToolDescription
wf_doc_property_definitionsList custom property definitions for documents
wf_doc_property_definition_saveCreate or update a document property definition
wf_doc_property_definition_deleteDelete a document property definition
wf_document_propertiesGet or set custom properties on a document
wf_document_property_deleteDelete a custom property from a document
wf_file_property_definitionsList custom property definitions for storage files
wf_file_property_definition_saveCreate or update a file property definition
wf_file_property_definition_deleteDelete a file property definition
wf_file_propertiesGet or set custom properties on a storage file
wf_file_property_deleteDelete a custom property from a storage file

Storage Files (7 tools)

ToolDescription
wf_storage_filesList storage files with filtering
wf_storage_fileGet storage file details by ID
wf_storage_file_deleteDelete a storage file (careful!)
wf_storage_file_lockLock or unlock a storage file
wf_storage_file_moveMove a storage file to another folder
wf_storage_file_renameRename a storage file
wf_storage_file_restoreRestore a deleted storage file

Storage Folders & Rights (5 tools)

ToolDescription
wf_storage_foldersList folder children or get folder by ID
wf_storage_folder_createCreate a new storage folder
wf_storage_folder_deleteDelete a storage folder (careful!)
wf_storage_file_approvalsGet, set, or clear approvals on a storage file
wf_storage_rightsGet or set access rights for a storage file or folder

Registers (3 tools)

ToolDescription
wf_registersList register items by type (partners, employees, chart of accounts, etc.)
wf_register_saveCreate or replace register items (full replacement)
wf_register_updatePartially update register items

Supported register types: accountingrules, activities, businesscases, businessitemcategories, businessitems, carddocumenttypes, cashdocumenttypes, cashregisters, chartofaccounts, contracts, costcenters, employees, locations, measureunits, organizationpersons, partnerpersons, partners, paymentmethods, projects, series, vatcontrolstatementlines, vatreturnlines, vatreversechargecodes, vehicles.

Organization & Access (15 tools)

ToolDescription
wf_organizationGet organization details
wf_my_organizationsList organizations available to the current user
wf_accountGet current account information
wf_usersList users in the organization
wf_user_infoGet user details by ID
wf_user_saveAdd a user to the organization or update an existing one, matched by login (e-mail). roles, teams and documentTypes replace the user's current assignments when given.
wf_user_deleteRemove a user from the organization (careful!)
wf_rolesList all roles in the organization
wf_role_createCreate a new role
wf_role_updateUpdate an existing role
wf_role_deleteDelete a role (careful!)
wf_teamsList all teams in the organization
wf_team_createCreate a new team
wf_team_updateUpdate an existing team
wf_team_deleteDelete a team (careful!)

Configuration (12 tools)

ToolDescription
wf_document_typesList available document types
wf_document_type_saveCreate or update a document type
wf_document_type_deleteDelete a document type (careful!)
wf_approval_templatesList approval templates
wf_approval_template_infoGet approval template details
wf_approval_template_saveCreate or update an approval template
wf_approval_template_deleteDelete an approval template (careful!)
wf_webhooksList webhook registrations
wf_webhook_saveCreate or update a webhook registration
wf_webhook_deleteDelete a webhook registration
wf_integration_allowAllow integration access for the organization
wf_integration_api_clientCreate a new API client for integration

Raw API (1 tool)

ToolDescription
wf_api_rawCall any wflow API endpoint directly

Response Caching

GET responses are cached in-memory with a configurable TTL (default 120 seconds). Mutations (PUT, POST, PATCH, DELETE) automatically invalidate related cache entries. Set WFLOW_CACHE_TTL=0 to disable caching.

Retries

When the API returns HTTP 429, the server waits using the Retry-After header value or exponential backoff, then retries up to WFLOW_MAX_RETRIES times. A GET that times out is retried the same way. A write (POST, PUT, PATCH, DELETE) that times out is never repeated: the tool returns an "outcome unknown" error so the state can be checked with a read tool first.

Security

  • OAuth2 tokens are refreshed automatically and never logged
  • API credentials are read from environment variables only — never stored on disk
  • API paths containing .. or # are rejected; organization names must match [A-Za-z0-9_-]+; IDs are validated as UUIDs
  • wf_integration_api_client redacts the returned client secret
  • Error details are truncated to 500 characters
  • Zod validates every tool parameter before API calls
  • Docker image runs as non-root node user
  • 30-second timeout on all HTTP requests

Development

npm ci
npm test                # build + node:test suite against a fake wflow API
npm run check:contract  # validate every tool's request against the OpenAPI spec

Layout and design: ARCHITECTURE.md. Rules for contributors and agents: AGENTS.md.

Tech Stack

  • TypeScript 7 with strict mode
  • Node.js 22+ (ESM, native fetch and FormData)
  • MCP SDK @modelcontextprotocol/sdk
  • Zod for parameter validation
  • OAuth2 client credentials flow

API Reference

License

MIT

↑↓ navigate openesc close