0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Langflow 1.6 Release: Fixes for MCP

Posted at

Langflow 1.6 Release Announcement

Langflow version 1.6 has been released. In this release, several fatal bugs that occurred when using MCP (Model Context Protocol) have been particularly fixed.

Critical MCP Bugs Fixed

1. Removing Admin User Restriction

Previously, in Langflow versions 1.5 and earlier, MCP functionality was limited to the "langflow" admin user only, and other users could not add or edit MCP settings. This restriction had been a major barrier in multi-user environments.

In version 1.6, this restriction has been removed, allowing all users to use MCP functionality equally.

2. Resolving Database Constraint Conflicts for Multiple Users

Due to constraints in the files table, conflicts occurred when multiple users attempted to manipulate MCP settings simultaneously, preventing proper addition or editing of settings. In this release, through database design review, this conflict issue has been fundamentally resolved.

These fixes make Langflow more practical for team development and multi-user environments.

Release Details

Detailed release notes for Langflow 1.6 are available on GitHub.

https://github.com/langflow-ai/langflow/releases

Remaining Timeout Constraints and Provisional Countermeasures

On the other hand, the constraint that MCP call timeout is hardcoded to 30 seconds has not been fixed in 1.6.0. This limitation may cause timeout errors during processing that requires long time or transferring large amounts of data.

As a provisional countermeasure, we have prepared a script to apply patches at startup. Below is an example script.

PATCH_MCP_TIMEOUTS="${PATCH_MCP_TIMEOUTS:-1}"  # 0 to disable
MCP_TIMEOUT_SECONDS="${MCP_TIMEOUT_SECONDS:-300}"
MCP_MAX_RETRIES="${MCP_MAX_RETRIES:-2}"

if [ "${PATCH_MCP_TIMEOUTS}" = "1" ]; then
    echo "Patching MCP timeouts and retries in util.py..."
    UTIL_PY_PATH="$(uv run python - <<'PY'
import importlib
for name in ("langflow.base.mcp.util", "lfx.base.mcp.util"):
    try:
        mod = importlib.import_module(name)
        print(mod.__file__)
        break
    except Exception:
        pass
PY
)"
    if [ -n "$UTIL_PY_PATH" ] && [ -f "$UTIL_PY_PATH" ]; then
        echo "Found util.py at: $UTIL_PY_PATH"
        sed -E -i \
            -e "s/(timeout\s*=\s*)30(\.0)?/\1${MCP_TIMEOUT_SECONDS}.0/g" \
            -e "s/(sse_read_timeout\s*=\s*)30(\.0)?/\1${MCP_TIMEOUT_SECONDS}.0/g" \
            -e "s/(DEFAULT_TIMEOUT\s*=\s*)30(\.0)?/\1${MCP_TIMEOUT_SECONDS}.0/g" \
            -e "s/httpx\.Timeout\(\s*30(\.0)?\s*\)/httpx.Timeout(${MCP_TIMEOUT_SECONDS}.0)/g" \
            -e "s/(asyncio\.wait_for\([[:alnum:]_ ,.*]*,\s*timeout=)30(\.0)?/\1${MCP_TIMEOUT_SECONDS}.0/g" \
            -e "s/(anyio\.fail_after\(\s*)30(\.0)?/\1${MCP_TIMEOUT_SECONDS}.0/g" \
            -e "s/(MAX_RETRIES\s*=\s*)2/\1${MCP_MAX_RETRIES}/g" \
            -e "s/(max_retries\s*=\s*)2/\1${MCP_MAX_RETRIES}/g" \
            "$UTIL_PY_PATH"
        echo "Patched. Showing diffs around timeouts/retries:"
        grep -nE 'timeout|DEFAULT_TIMEOUT|MAX_RETRIES|Timeout\(' "$UTIL_PY_PATH" || true
    else
        echo "WARN: util.py not found; patch skipped. (searched: $UTIL_PY_PATH)"
    fi
else
    echo "MCP patching is skipped."
fi

Script Configuration Explanation

  • PATCH_MCP_TIMEOUTS: Setting to enable (1) or disable (0) the patch
  • MCP_TIMEOUT_SECONDS: Timeout time in seconds
  • MCP_MAX_RETRIES: Maximum number of retries

This script relaxes the timeout limitation by rewriting timeout-related parameters in util.py using sed commands. This is a provisional measure, so please wait for the official fix in the next version.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?