A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to Langflow workflow automation platform.
langflow-mcp-server serves as a bridge between Langflow's workflow automation platform and AI models, enabling them to understand and work with Langflow flows effectively.
API Compatibility: This server is built on the Langflow API documentation and supports Langflow API version 1.11.0. Langflow 1.11.0 adds A2A (Agent-to-Agent) protocol endpoints, v2 workflow human-in-the-loop lifecycle (pending/resume/events) plus public execution, and external trusted-JWT / JIT-provisioning auth (config-only, no new tools), all on top of the 1.10.0 surface (RBAC/authz, Memory Bases, the Knowledge Base ingestion overhaul, extensions, agentic sandbox files) without breaking existing routes; this release covers them.
Versioning: From 4.10.0 onward, the npm minor version mirrors the supported Langflow minor — langflow-mcp-server@4.<langflow_minor>.x targets Langflow 1.<langflow_minor>.x (so 4.11.x ↔ Langflow 1.11.x, 4.10.x ↔ Langflow 1.10.x). The patch component is used for fixes within the same Langflow minor.
Consolidated Tools Mode is an architecture that groups the 216 individual tools into 28 action-based meta-tools. This significantly reduces token usage and improves AI assistant context management.
| Mode | Tools | Best For |
|---|---|---|
| Standard | 216 tools | Full granular control |
| Consolidated | 28 tools | Reduced token usage, better context |
To enable consolidated mode:
LANGFLOW_CONSOLIDATED_TOOLS=trueConsolidated tools:
flow- All flow operations (list, get, create, update, delete, download, upload, replace, expand, batch, public, note_translations)flow_execution- Run flows (run, run_advanced, run_session, webhook, process, predict)flow_version- Flow versions and lifecycle events (list, create, get, delete, activate, get_events, create_event)build- Build operations (start, status, cancel, vertices)workflow- Run and manage v2 workflows (run with request-level globals, get_result, stop, plus Langflow 1.11.0 HITL/public: pending, events, resume, run_public)agentic- Agentic assistant + sandbox (assist, check_config, execute, get_file, reset_session)folder- Folder management (list, get, create, update, delete, download, upload)project- Project management (list, get, create, update, delete, download, upload)variable- Variable operations (list, create, update, delete, detect)knowledge_base- Knowledge base management (list, get, delete, bulk_delete, upload, create, preview/list chunks, ingest, cancel_ingest, test_connection, list_connectors, ingest_folder, ingest_connector, metadata_keys, list_runs, get_run)memory- Memory bases (create, list, get, list_sessions, list_messages, update, delete, flush, mismatch, regenerate) — experimental Langflow APIfile- Flow-scoped file operations (list, upload, download, delete, get_image)file_v2- User-scoped v2 files (list, upload, get, rename, delete, delete_all, batch_download, batch_delete)monitor- Monitoring (builds, messages, sessions, transactions, job_queue)trace- Execution traces (list, get, delete, delete_by_flow)model- Models and providers (list, providers, enabled, default get/set/delete, mapping, validate, options)authz- RBAC authorization (roles, role assignments, teams, shares, audit, my permissions)user- User management (list, get_current, update, reset_password, create)auth- Authentication (login, auto_login, logout, refresh, api keys, save_store_key)store- Component store (list, get, tags, likes, save_api_key, create, like, update_custom)registration- User registration (get, register)validation- Code/prompt validation (code, prompt)mcp_server- MCP server management (list, get, create, update, delete)mcp_project- MCP project config/install (get/update config, get_installed, install, composer_url)extension- Langflow extensions (reload, events)response- OpenAI-compatible responses (create)system- System info (health, version, logs, pictures, voices, session, webhook_events, health_check)a2a- A2A (Agent-to-Agent) protocol (list_agents, agent_card, jsonrpc) — Langflow 1.11.0
It provides structured access to:
- Flow Management - Create, read, update, delete, and execute Langflow flows
- Flow Execution - Run flows with inputs and trigger webhooks
- Build Operations - Compile, validate, and monitor flow builds
- Import/Export - Upload and download flows and projects
- Organization - Manage folders and projects
- Configuration - Manage global variables
- Knowledge Bases - Manage RAG document collections
- Component Discovery - List all available Langflow components
- Node.js 20 or newer installed on your system
- A running Langflow instance
- Langflow API key
# Install from npm
npm install -g langflow-mcp-server
# OR clone the repository
git clone https://github.com/nobrainer-tech/langflow-mcp.git
cd langflow-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Configure environment
cp .env.example .env
# Edit .env with your Langflow instance URL and API keyEdit .env file:
LANGFLOW_BASE_URL=http://localhost:7860
LANGFLOW_API_KEY=your-api-key-here
MCP_MODE=stdio
LOG_LEVEL=infoAdd to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"langflow": {
"command": "npx",
"args": ["-y", "langflow-mcp-server"],
"env": {
"LANGFLOW_BASE_URL": "http://localhost:7860",
"LANGFLOW_API_KEY": "your-api-key-here",
"LANGFLOW_CONSOLIDATED_TOOLS": "true",
"MCP_MODE": "stdio",
"LOG_LEVEL": "error"
}
}
}
}Alternative (local installation):
{
"mcpServers": {
"langflow": {
"command": "node",
"args": ["/absolute/path/to/langflow-mcp/dist/mcp/index.js"],
"env": {
"LANGFLOW_BASE_URL": "http://localhost:7860",
"LANGFLOW_API_KEY": "your-api-key-here",
"MCP_MODE": "stdio",
"LOG_LEVEL": "error"
}
}
}
}Restart Claude Desktop after updating configuration.
The MCP server can be run in a Docker container for easier deployment and isolation.
# Clone the repository
git clone https://github.com/nobrainer-tech/langflow-mcp.git
cd langflow-mcp
# Create .env file with your configuration
cp .env.example .env
# Edit .env with your Langflow instance URL and API key
# Build and run with docker-compose
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the server
docker-compose down# Build the image
docker build -t langflow-mcp-server:latest .
# Run in stdio mode (for Claude Desktop)
docker run -it --rm \
-e LANGFLOW_BASE_URL=http://localhost:7860 \
-e LANGFLOW_API_KEY=your-api-key \
langflow-mcp-server:latest
# Run in HTTP mode (for remote access)
docker run -d \
-p 3000:3000 \
-e MCP_MODE=http \
-e PORT=3000 \
-e AUTH_TOKEN=your-secure-token \
-e LANGFLOW_BASE_URL=http://langflow:7860 \
-e LANGFLOW_API_KEY=your-api-key \
langflow-mcp-server:latestThe included docker-compose.yml supports both stdio and HTTP modes:
# STDIO mode (default)
environment:
- MCP_MODE=stdio
- LANGFLOW_BASE_URL=http://localhost:7860
- LANGFLOW_API_KEY=your-key
# HTTP mode
environment:
- MCP_MODE=http
- PORT=3000
- AUTH_TOKEN=your-secure-tokenOnce connected, Claude can use:
- Standard mode: 216 individual tools
- Consolidated mode: 28 action-based tools (recommended for reduced token usage)
Note: Raw MCP transport endpoints (SSE/streamable,
/api/mcp/*) and doc-rendering endpoints (/docs,/redoc,/openapi.json) are intentionally not exposed as tools — they are protocol/transport surfaces, not data operations.
create_flow- Create a new Langflow flowlist_flows- List all flows with pagination and filteringget_flow- Get details of a specific flow by IDupdate_flow- Update an existing flowdelete_flow- Delete a single flowdelete_flows- Delete multiple flows at oncereplace_flow- Replace a flow's full definitionexpand_flows- Expand flows with embedded component dataupload_flow- Upload a flow from JSON datadownload_flows- Download multiple flows as JSON exportget_basic_examples- Get pre-built example flowsbatch_create_flows- Create multiple flows in one operationget_public_flow- Get a public flow without authentication
run_flow- Execute a flow with input configuration (supports streaming)run_flow_advanced- Advanced flow execution with full controlrun_flow_session- Execute a flow within a session contexttrigger_webhook- Trigger a flow via webhook endpointget_webhook_events- Get webhook trigger events for a flowprocess_flow- Legacy process endpoint for flowspredict_flow- Legacy predict endpoint for flows
list_flow_versions- List versions of a flowcreate_flow_version- Create a new flow versionget_flow_version- Get a specific flow versiondelete_flow_version- Delete a flow versionactivate_flow_version- Activate a specific flow versionget_flow_events- Get lifecycle events for a flowcreate_flow_event- Create a lifecycle event for a flow
build_flow- Build/compile a flow and return job_id for async executionget_build_status- Poll build status and events for a specific jobcancel_build- Cancel a running build jobget_task_status- Get status of an async taskbuild_vertices- Get vertex build order for a flowstream_vertex_build- Stream real-time build events for a vertex
run_workflow- Run a v2 workflowget_workflow_result- Get the result of a workflow runstop_workflow- Stop a running workflow
agentic_assist- Get agentic assistance for a flow componentagentic_check_config- Check whether agentic features are configuredagentic_execute- Execute an agentic flow by name
create_response- Create an OpenAI-compatible responseget_session- Get a response/conversation session
list_folders- List all folders with paginationcreate_folder- Create a new folderget_folder- Get folder details by IDupdate_folder- Update folder name, description, or parentdelete_folder- Delete a folderdownload_folder- Download entire folder as archiveupload_folder- Upload folder from archive
list_projects- List all projects with paginationcreate_project- Create a new projectget_project- Get project details by IDupdate_project- Update project name or descriptiondelete_project- Delete a projectupload_project- Upload a project from JSON datadownload_project- Download a project as JSON export
list_variables- List all global variablescreate_variable- Create a new variableupdate_variable- Update variable propertiesdelete_variable- Delete a variabledetect_variables- Detect variables referenced in a value/template
list_knowledge_bases- List all available knowledge baseslist_knowledge_bases_detailed- List knowledge bases with detailed metadataget_knowledge_base- Get detailed information about a specific knowledge basecreate_knowledge_base- Create a new knowledge basedelete_knowledge_base- Delete a specific knowledge basebulk_delete_knowledge_bases- Delete multiple knowledge bases at onceupload_knowledge_base- Upload a file to create/update a knowledge basepreview_knowledge_base_chunks- Preview how a document will be chunkedlist_knowledge_base_chunks- List stored chunks for a knowledge baseingest_knowledge_base- Ingest documents into a knowledge basecancel_knowledge_base_ingest- Cancel an in-progress ingest job
upload_file- Upload a file to a specific flowdownload_file- Download a file from a flowlist_files- List all files in a flowdelete_file- Delete a file from a flowget_file_image- Get an image file from a flow
list_files_v2- List all user-scoped v2 filesupload_file_v2- Upload a v2 fileget_file_v2- Get v2 file metadata or contentrename_file_v2- Rename a v2 filedelete_file_v2- Delete a v2 filedelete_all_files_v2- Delete all v2 filesbatch_download_files_v2- Download multiple v2 filesbatch_delete_files_v2- Delete multiple v2 files
list_components- List all available Langflow componentscreate_custom_component- Create a new custom componentupdate_custom_component- Update an existing custom component
get_monitor_builds- Get build execution history for a flowget_monitor_messages- Query chat/message history with filteringget_monitor_message- Get details of a specific messageupdate_monitor_message- Update a stored messageget_monitor_sessions- List all chat session IDsget_monitor_session_messages- Get all messages for a sessionmigrate_monitor_session- Migrate messages between sessionsget_monitor_transactions- List transaction logs for a flowdelete_monitor_builds- Delete build history for a flowdelete_monitor_messages- Delete multiple messages by IDdelete_monitor_session_messages- Delete all messages for a sessiondelete_monitor_sessions- Delete chat sessions
list_traces- List execution traces with filtersget_trace- Get a specific execution tracedelete_trace- Delete a specific tracedelete_traces- Delete all traces for a flow
get_shared_messages- Get shared messagesget_shared_sessions- Get shared sessionsupdate_shared_message- Update a shared messagemigrate_shared_session- Migrate a shared sessiondelete_shared_session- Delete a shared session
list_models- List available modelslist_model_providers- List all model providerslist_enabled_providers- List enabled providerslist_enabled_models- List enabled modelsset_enabled_models- Enable/disable modelsget_default_model- Get the default model for a typeset_default_model- Set the default model for a typedelete_default_model- Remove the default model for a typeget_provider_variable_mapping- Get provider-to-variable mappingvalidate_model_provider- Validate provider credentialsget_language_model_options- Get language model optionsget_embedding_model_options- Get embedding model options
list_users- List all users (admin only)get_current_user- Get current authenticated user infoupdate_user- Update user profile informationreset_user_password- Reset password for a user (admin only)create_user- Create a new user (admin only)
list_api_keys- List all API keys for the usercreate_api_key- Create a new API keydelete_api_key- Delete an API key
login- Authenticate with username and passwordauto_login- Auto-login with stored credentialsrefresh_token- Refresh authentication tokenlogout- Logout and invalidate session
get_registration- Check whether registration is enabledregister_user- Register a new user account
check_store- Check if component store is enabledcheck_store_api_key- Validate a store API keysave_store_api_key- Save a store API keylist_store_components- Browse available components in the storeget_store_component- Get details of a store componentcreate_store_component- Publish a component to the storelike_store_component- Like a store componentlist_store_tags- List all component tags in the storeget_user_likes- Get components liked by user
validate_code- Validate Python code for custom componentsvalidate_prompt- Validate prompt template syntax
list_mcp_servers- List MCP servers registered with Langflowget_mcp_server- Get an MCP server by namecreate_mcp_server- Create an MCP serverupdate_mcp_server- Update an MCP serverdelete_mcp_server- Delete an MCP server
get_mcp_project_config- Get MCP config for a projectupdate_mcp_project_config- Update MCP config for a projectget_mcp_project_installed- Get installed MCP clients for a projectinstall_mcp_project- Install MCP for a project into a clientget_mcp_project_composer_url- Get the MCP composer URL for a project
list_starter_projects- List available starter templates
list_profile_pictures- List available profile picturesget_profile_picture- Get a specific profile picture
list_elevenlabs_voices- List ElevenLabs text-to-speech voices
get_version- Get Langflow API version informationhealth_check- Check Langflow instance health statusget_health_check- Get a detailed health-check reportget_logs- Retrieve system logs (supports streaming)
list_authz_roles,get_authz_role,create_authz_role,update_authz_role,delete_authz_role- Manage roleslist_authz_role_assignments,create_authz_role_assignment,delete_authz_role_assignment- Manage role assignmentslist_authz_teams,get_authz_team,create_authz_team,update_authz_team,delete_authz_team- Manage teamslist_authz_team_members,add_authz_team_member,remove_authz_team_member- Manage team memberslist_authz_shares,get_authz_share,create_authz_share,update_authz_share,delete_authz_share- Manage resource sharesget_authz_audit- Query the authorization audit log (superuser)get_my_permissions- Get the caller's effective permissions
create_memory_base,list_memory_bases,get_memory_base- Manage memory baseslist_memory_base_sessions,list_memory_base_messages- Inspect tracked sessions/messagesupdate_memory_base,delete_memory_base- Update/delete a memory baseflush_memory_base,check_memory_base_mismatch,regenerate_memory_base- Lifecycle operations
test_knowledge_base_connection- Test a vector backend connectionlist_knowledge_base_connectors- List available ingestion connectorsingest_knowledge_base_folder,ingest_knowledge_base_connector- Ingest from a server folder or connectorget_knowledge_base_metadata_keys- List distinct metadata keys/valueslist_knowledge_base_runs,get_knowledge_base_run- Inspect ingestion runs
reload_extension_bundle- Reload an extension bundle (requires server-side flag)get_extension_events- Poll extension events for the current userget_agentic_file- Read a file from the per-user agentic sandboxreset_agentic_session- Reset agentic session/sandbox stateget_flow_note_translations- Get localized note-node translations for a flowget_job_queue_metrics- Job-queue metrics snapshot (superuser)
The v2 workflow runner (
run_workflow/workflowactionrun) also accepts request-levelglobals(Langflow 1.10.0), the preferred replacement for the deprecatedX-LANGFLOW-GLOBAL-VAR-*headers.
list_a2a_agents- List available A2A (Agent-to-Agent) agentsget_a2a_agent_card- Get a flow's A2A agent card (.well-known/agent-card.json)invoke_a2a_jsonrpc- Invoke a flow via the A2A JSON-RPC endpoint (passthrough envelope)
A2A endpoints require server-side enablement (
LANGFLOW_A2A_ENABLED); otherwise requests surface as a thrownFailed to ...error.
list_pending_workflows- List pending human-in-the-loop workflows (optionalflow_idfilter)get_workflow_events- Re-attach to a workflow job event stream by job IDresume_workflow- Resume a paused HITL workflow with a decision payloadrun_public_workflow- Run a public (unauthenticated-eligible) workflow
The
get_workflow_eventsandrun_public_workflowendpoints return server-sent-event streams; the initial payload is captured but streaming is not incrementally surfaced.
Langflow 1.11.0 adds external trusted-JWT / JIT-provisioning authentication. This is
controlled entirely by the Langflow server environment and adds no MCP tools:
EXTERNAL_AUTH_ENABLED, EXTERNAL_AUTH_TOKEN_HEADER/EXTERNAL_AUTH_TOKEN_COOKIE,
EXTERNAL_AUTH_JWKS_URL, EXTERNAL_AUTH_ISSUER/EXTERNAL_AUTH_AUDIENCE/EXTERNAL_AUTH_ALGORITHMS,
EXTERNAL_AUTH_*_CLAIM, and EXTERNAL_AUTH_ACCESS_CEILING_*. The MCP client keeps using its
API key / Bearer token as before.
// Create a new flow
create_flow({
name: "My Automation Flow",
description: "A flow that processes data"
})
// List all flows
list_flows({
page: 1,
size: 50
})
// Get flow details
get_flow({
flow_id: "flow-uuid-here"
})
// Update a flow
update_flow({
flow_id: "flow-uuid-here",
name: "Updated Flow Name"
})
// Execute a flow
run_flow({
flow_id_or_name: "my-flow-name",
input_request: {
input_value: "Hello World",
output_type: "chat",
input_type: "chat"
},
stream: false
})
// Trigger via webhook
trigger_webhook({
flow_id_or_name: "my-flow",
input_request: {
input_value: "Process this data"
}
})
// Build a flow (compile/validate)
build_flow({
flow_id: "flow-uuid-here",
log_builds: true,
event_delivery: "polling"
})
// Check build status
get_build_status({
job_id: "job-uuid-from-build",
event_delivery: "polling"
})
// List knowledge bases (RAG)
list_knowledge_bases()
// Get knowledge base details
get_knowledge_base({
kb_name: "my-documents"
})
// Create a folder
create_folder({
name: "My Flows",
description: "Organized flows"
})
// Create a project
create_project({
name: "My Project",
description: "Project description"
})
// Manage variables
create_variable({
name: "API_KEY",
value: "secret-key",
type: "string"
})
// Get basic examples
get_basic_examples()
// List all components
list_components()# Build
npm run build
# Run in development mode
npm run dev
# Run tests
npm test
# Type checking
npm run typechecklangflow-mcp/
├── src/
│ ├── mcp/
│ │ ├── index.ts # MCP server entry point
│ │ ├── server.ts # MCP server implementation
│ │ └── tools.ts # Tool definitions
│ ├── services/
│ │ └── langflow-client.ts # Langflow API client
│ ├── types/
│ │ └── index.ts # TypeScript types
│ └── utils/
│ └── logger.ts # Logging utility
├── .env.example # Example configuration
├── package.json
├── tsconfig.json
└── README.md
This project is inspired by and follows the structure of n8n-mcp by Romuald Czlonkowski. Special thanks to the n8n-mcp project for the excellent MCP server architecture and implementation patterns.
MIT License - see LICENSE for details.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Run tests (
npm test) - Submit a pull request
- Langflow team for the workflow automation platform
- Anthropic for the Model Context Protocol
- czlonkowski/n8n-mcp for the inspiration and architecture
Built with ❤️ for the Langflow community