mcp-flowise
Use this MCP server to discover Flowise chatflows and run predictions against them.
list_chatflows: List available chatflows, respecting configured whitelist/blacklist filters.create_prediction: Send a question to a specific chatflow viachatflow_id, or to the defaultFLOWISE_CHATFLOW_ID.Supports Flowise API authentication, configurable endpoint/timeouts, and flow filtering by ID/name.
In LowLevel mode, dynamically exposes each visible chatflow as a separate tool.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-flowiselist my available chatflows"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-flowise
mcp-flowise lets MCP-enabled assistants discover and run your Flowise chatflows, with authentication and configurable flow filtering.
It supports two operation modes:
FastMCP Mode (default): Provides
list_chatflowsandcreate_predictiontools.LowLevel Mode (
FLOWISE_SIMPLE_MODE=false): Dynamically registers a tool for each visible chatflow.
Verification status
Core chatflow integration has been verified in both MCP modes. See the verification report for the tested version and scope, and the OpenAPI proxy comparison for the follow-up improvements and their verification.
Related MCP server: n8n-MCP
Features
Dynamic Tool Exposure: LowLevel mode dynamically creates tools for each visible chatflow. Colliding names receive an ID-derived suffix.
Simpler Configuration: FastMCP mode exposes
list_chatflowsandcreate_predictiontools for minimal setup.Flexible Filtering: Both modes support filtering chatflows via whitelists and blacklists by IDs or names (regex).
Client-friendly Tools: Readable titles and behavior hints distinguish discovery from predictions that may write history or run agent tools.
Responsive Startup: Dynamic mode discovers flows on first use, so MCP initialization does not wait for Flowise. Failed discovery can be retried by the next request.
Installation
Installing via Smithery
To install mcp-flowise for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @matthewhand/mcp-flowise --client claudePrerequisites
Python 3.13 or higher (CI covers 3.13 and 3.14; Docker uses 3.14)
uv/uvx(tested with uv 0.13.3)
Docker
docker build -t mcp-flowise:local .
docker run --rm -i --env-file .env mcp-flowise:localThe image installs the copied checkout from uv.lock and runs as a non-root
user. No Git download occurs at startup. Supply credentials at runtime;
.env files are excluded from the build context. This is stdio MCP, so use
-i and do not publish a port. Inside Docker, localhost is the container:
set FLOWISE_API_ENDPOINT to a reachable Flowise address (for a host service
in Docker Desktop, use host.docker.internal with its actual service port).
Directory listings such as Glama may require separate account-side setup;
providing a repository Dockerfile does not configure those accounts.
Install and Run via uvx
Confirm you can run the server directly from the GitHub repository using uvx:
uvx --from git+https://github.com/matthewhand/mcp-flowise mcp-flowiseAdding to MCP Ecosystem (mcpServers Configuration)
You can integrate mcp-flowise into your MCP ecosystem by adding it to the mcpServers configuration. Example:
{
"mcpServers": {
"mcp-flowise": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/matthewhand/mcp-flowise",
"mcp-flowise"
],
"env": {
"FLOWISE_API_KEY": "${FLOWISE_API_KEY}",
"FLOWISE_API_ENDPOINT": "${FLOWISE_API_ENDPOINT}"
}
}
}
}Modes of Operation
1. FastMCP Mode (Simple Mode)
Enabled by setting FLOWISE_SIMPLE_MODE=true. This mode:
Exposes two tools:
list_chatflowsandcreate_prediction.Allows a default flow using
FLOWISE_CHATFLOW_ID, or an explicitchatflow_idon each call.Lists all available chatflows via
list_chatflows.
2. LowLevel Mode (FLOWISE_SIMPLE_MODE=False)
Features:
Dynamically registers all chatflows as separate tools.
Tools are named after chatflow names (normalized).
Uses descriptions from the
FLOWISE_CHATFLOW_DESCRIPTIONSvariable, falling back to chatflow names if no description is provided.
Example:
my_tool(question: str) -> strdynamically created for a chatflow.
Running on Windows with uvx
If you're using uvx on Windows and encounter issues with --from git+https, the recommended solution is to clone the repository locally and configure the mcpServers with the full path to uvx.exe and the cloned repository. Additionally, include APPDATA, LOGLEVEL, and other environment variables as required.
Example Configuration for MCP Ecosystem (mcpServers on Windows)
{
"mcpServers": {
"flowise": {
"command": "C:\\Users\\matth\\.local\\bin\\uvx.exe",
"args": [
"--from",
"C:\\Users\\matth\\downloads\\mcp-flowise",
"mcp-flowise"
],
"env": {
"LOGLEVEL": "ERROR",
"APPDATA": "C:\\Users\\matth\\AppData\\Roaming",
"FLOWISE_API_KEY": "your-api-key-goes-here",
"FLOWISE_API_ENDPOINT": "http://localhost:3000/"
}
}
}
}Notes
Full Paths: Use full paths for both
uvx.exeand the cloned repository.Environment Variables: Point
APPDATAto your Windows user profile (e.g.,C:\\Users\\<username>\\AppData\\Roaming) if needed.Log Level: Adjust
LOGLEVELas needed (ERROR,INFO,DEBUG, etc.).
Environment Variables
General
FLOWISE_API_KEY: Your Flowise API Bearer token (required).FLOWISE_API_ENDPOINT: Base URL for Flowise (default:http://localhost:3000).FLOWISE_HTTP_TIMEOUT: Finite positive HTTP timeout in seconds (default:30). Predictions are never automatically retried.MCP_SERVER_NAME: Name shown to MCP clients (default:mcp-flowise), useful when connecting several instances.TOOL_NAME_PREFIX: Optional prefix for tool names in both modes. Letters, digits, underscores and hyphens only.TOOL_NAME_MAX_LENGTH: Tool-name length limit, including the prefix (default:64, range:16–64). Leave at least ten characters after the prefix. Changing these settings changes the names clients call.FLOWISE_LOGFILE_PATH: Optional rotating log file. Diagnostics otherwise use stderr; no log file is created by default. Files rotate at 5 MiB, retaining two backups.
LowLevel Mode (FLOWISE_SIMPLE_MODE=false)
FLOWISE_CHATFLOW_DESCRIPTIONS: Comma-separated list ofchatflow_id:descriptionpairs. Example:FLOWISE_CHATFLOW_DESCRIPTIONS="abc123:Chatflow One,xyz789:Chatflow Two"
FastMCP Mode (FLOWISE_SIMPLE_MODE=true)
FLOWISE_CHATFLOW_ID: Single Chatflow ID (optional).FLOWISE_ASSISTANT_ID: Unsupported legacy setting; use a chatflow ID.
Filtering Chatflows
Filters can be applied in both modes using the following environment variables:
Whitelist by ID:
FLOWISE_WHITELIST_ID="id1,id2,id3"Blacklist by ID:
FLOWISE_BLACKLIST_ID="id4,id5"Whitelist by Name (Regex):
FLOWISE_WHITELIST_NAME_REGEX=".*important.*"Blacklist by Name (Regex):
FLOWISE_BLACKLIST_NAME_REGEX=".*deprecated.*"
Whitelist IDs and name patterns are combined with OR. If either whitelist is configured, matching flows are included and the primary blacklist is ignored (existing behavior). Without a whitelist, either blacklist excludes a flow. Comma-separated IDs are trimmed. Legacy FLOWISE_CHATFLOW_WHITELIST and FLOWISE_CHATFLOW_BLACKLIST are additional restrictions in both modes. The same filters are enforced during prediction, including explicit IDs.
Security
Protect Your API Key: Ensure the
FLOWISE_API_KEYis kept secure and not exposed in logs or repositories.Environment Configuration: Use
.envfiles or environment variables for sensitive configurations.API permissions: Flowise 3 API keys need permission to view chatflows, plus access to protected prediction flows. A UI login password is not an API key. Keep the service on a trusted network.
Protocol and errors: Diagnostic logs use stderr or the configured log file. Authentication, HTTP failures, and invalid calls produce MCP tool errors instead of successful-looking responses. Prompts and generated answers are not written to adapter logs.
Add .env to your .gitignore:
# .gitignore
.envTroubleshooting
Missing API Key: Ensure
FLOWISE_API_KEYis set correctly.Invalid Configuration: If both
FLOWISE_CHATFLOW_IDandFLOWISE_ASSISTANT_IDare set, the server will refuse to start.Connection Errors: Verify
FLOWISE_API_ENDPOINTis reachable.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Development checks
uv sync --frozen --group dev
uv run pytest tests/unit tests/integration/test_stdio_protocol.py -qThe protocol tests launch real MCP subprocesses against a local HTTP fixture. Live tests are explicitly opt-in and make real model requests:
# Supply a key and choose a harmless flow on your own Flowise instance.
export FLOWISE_LIVE_TESTS=1
export FLOWISE_API_ENDPOINT=http://localhost:3030
export FLOWISE_API_KEY=your_private_key
export FLOWISE_TEST_CHATFLOW_ID=your_chatflow_id
uv run pytest tests/integration/test_stdio_live.py -qDynamic tools are a startup snapshot: restart the MCP process after adding, renaming, or changing visibility of flows. Current filters are checked again for each prediction.
Scope and compatibility
The adapter uses stdio and MCP Python SDK 1.x. It supports non-streaming chatflow predictions. Flowise assistants, streaming predictions and native Streamable HTTP are not implemented. The SDK 2 port in mcp-openapi-proxy is a separate migration and has not been copied into this adapter; clients requiring its newer protocol need that migration or a compatible gateway.
Dynamic discovery is cached in memory after a successful fetch, including an empty result. Discovery failures are not cached; the next list/call retries. Predictions recheck visibility against Flowise each time. Flow metadata and authorization are not loaded from a stale disk cache.
TODO
Fastmcp mode
Lowlevel mode
Filtering
Claude desktop integration
Assistants
Available Tools
2 toolscreate_predictionA
Create a prediction by sending a question to a specific chatflow or assistant.
Args:
chatflow_id (str, optional): The ID of the chatflow to use. Defaults to FLOWISE_CHATFLOW_ID.
question (str): The question or prompt to send to the chatflow.
Returns:
str: The raw JSON response from Flowise API or an error message if something goes wrong.
| Name | Required | Description | Default |
|---|---|---|---|
| chatflow_id | No | ||
| question | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that this is a creation/mutation tool ('Create a prediction') and mentions the API source ('Flowise API'), but lacks details about authentication needs, rate limits, error handling beyond 'error message', or whether predictions are stored persistently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with clear sections (purpose, args, returns). The first sentence states the core purpose, and subsequent details are necessary. Minor improvement could be merging the first two sentences for better flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage and no output schema, the description provides basic parameter semantics and return type ('raw JSON response' or 'error message'), but lacks details on response structure, error cases, or integration context (e.g., what a 'prediction' entails in this system).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful context for both parameters: chatflow_id is optional with a default value from environment, and question is the prompt to send. However, it doesn't explain format constraints or provide examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create a prediction by sending a question to a specific chatflow or assistant.' It specifies the verb ('Create a prediction') and resource ('chatflow or assistant'), but doesn't explicitly differentiate from the sibling tool 'list_chatflows' beyond their different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'chatflow or assistant' and referencing 'FLOWISE_CHATFLOW_ID' as a default, but doesn't provide explicit guidance on when to use this tool versus alternatives or any prerequisites. The sibling tool 'list_chatflows' is mentioned but not compared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chatflowsA
List all available chatflows from the Flowise API.
This function respects optional whitelisting or blacklisting if configured
via FLOWISE_CHATFLOW_WHITELIST or FLOWISE_CHATFLOW_BLACKLIST.
Returns:
str: A JSON-encoded string of filtered chatflows.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it's a read operation (implied by 'List'), respects configuration-based filtering, and returns JSON-encoded data. However, it doesn't mention potential rate limits, authentication needs, or error handling, leaving some gaps in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise and well-structured: three sentences with zero waste. The first sentence states the purpose, the second explains configuration behavior, and the third specifies the return format. Every sentence earns its place and information is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description provides good contextual completeness. It covers purpose, behavioral constraints (filtering), and return format. However, without annotations or output schema, it could benefit from more detail about the structure of returned JSON or error conditions for a fully complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the description doesn't need to compensate for parameter documentation. The description appropriately focuses on behavioral aspects rather than parameter semantics, which is correct for a parameterless tool. It adds value by explaining the filtering behavior beyond what the empty schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all available chatflows from the Flowise API.' This specifies the verb ('List') and resource ('chatflows'), though it doesn't explicitly differentiate from its sibling tool 'create_prediction' beyond the obvious action difference. The purpose is clear but lacks explicit sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning whitelisting/blacklisting configuration, but it doesn't provide explicit guidance on when to use this tool versus alternatives. There's no mention of when not to use it or direct comparison to 'create_prediction', leaving usage context somewhat implied rather than clearly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
create_prediction - First observed
list_chatflows
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: one lists available chatflows, and the other creates predictions using a specific chatflow. There is no overlap in functionality or ambiguity between them.
Both tools follow a consistent verb_noun pattern (list_chatflows, create_prediction) with clear, descriptive names that align with their functions. No deviations or mixed conventions are present.
With only 2 tools, the server feels thin for its apparent domain of interacting with Flowise chatflows. While the tools cover basic operations, the lack of tools for updating, deleting, or managing chatflows suggests an incomplete surface that may limit agent workflows.
The toolset is severely incomplete for a chatflow management domain. It provides listing and prediction creation but lacks essential CRUD operations like creating, updating, or deleting chatflows, as well as tools for managing predictions (e.g., retrieving or canceling them), which will likely cause agent failures in complex tasks.
Maintenance
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Build and run AI workflows, agents, data tables and 1000+ API integrations from any MCP client.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Related MCP Servers
FlicenseNot gradedqualityDmaintenanceThe MCP Server for Weaviate facilitates integration with Weaviate using a customizable Python-based server, enabling interaction with Weaviate databases and OpenAI APIs via configurable URL and API keys.162-- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides AI assistants with access to documentation, schemas, and operations for over 535 n8n workflow automation nodes. It enables models to understand, create, and manage n8n workflows through natural language by connecting to the n8n API.49,825 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP Server for interacting with the Langflow API via a natural language interface. It exposes Langflow functionalities as tools for LLMs.MIT
- AlicenseCqualityAmaintenanceA Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to Langflow workflow automation platform.236669 npm10MIT