Skip to content

Commit 8fef81a

Browse files
nic-6443LiteSun
andauthored
fix: mcp-bridge flaky test (#12863)
Signed-off-by: Nic <qianyong@api7.ai> Co-authored-by: LiteSun <sunyi@apache.org>
1 parent a07e1ef commit 8fef81a

File tree

4 files changed

+57
-6
lines changed

4 files changed

+57
-6
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ t/plugin/grpc-web/grpc-web-server
8484
t/plugin/grpc-web/node_modules/
8585
pack
8686
pack-v*-linux.tgz*
87+
t/plugin/mcp/servers/
88+
t/node_modules/
8789

8890
# release tar package
8991
*.tgz

ci/init-common-test-service.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,7 @@ sleep 3s
2525
docker exec -i localstack sh -c "awslocal secretsmanager create-secret --name apisix-key --description 'APISIX Secret' --secret-string '{\"jack\":\"value\"}'"
2626
sleep 3s
2727
docker exec -i localstack sh -c "awslocal secretsmanager create-secret --name apisix-mysql --description 'APISIX Secret' --secret-string 'secret'"
28+
29+
# prepare filesystem mcp server
30+
sleep 3s
31+
./ci/prepare_filesystem_mcp.sh

ci/prepare_filesystem_mcp.sh

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/usr/bin/env bash
2+
#
3+
# Licensed to the Apache Software Foundation (ASF) under one or more
4+
# contributor license agreements. See the NOTICE file distributed with
5+
# this work for additional information regarding copyright ownership.
6+
# The ASF licenses this file to You under the Apache License, Version 2.0
7+
# (the "License"); you may not use this file except in compliance with
8+
# the License. You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#
18+
19+
#!/usr/bin/env bash
20+
set -euo pipefail
21+
22+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
23+
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
24+
25+
VERSION="2025.7.1"
26+
URL="https://github.com/modelcontextprotocol/servers/archive/refs/tags/${VERSION}.tar.gz"
27+
28+
WORKDIR="$(mktemp -d)"
29+
DEST_DIR="${REPO_ROOT}/t/plugin/mcp/servers"
30+
31+
curl -L "${URL}" | tar -xz -C "${WORKDIR}"
32+
33+
rm -rf "${DEST_DIR}"
34+
mkdir -p "$(dirname "${DEST_DIR}")"
35+
36+
cp -R "${WORKDIR}/servers-${VERSION}" "${DEST_DIR}"
37+
38+
(
39+
cd "${DEST_DIR}"
40+
npm install
41+
# Note: Although dlx specifies the package version, it does not use a lockfile,
42+
# so dependency resolution is not reproducible. Only the package-lock.json included
43+
# in the release package can ensure that the entire dependency tree is fully locked.
44+
npm run build -w @modelcontextprotocol/server-filesystem
45+
)
46+
47+
echo "[OK] filesystem MCP ready: ${DEST_DIR}"

t/plugin/mcp-bridge.t

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616
#
17-
use t::APISIX;
18-
19-
# This test cannot be executed normally at the moment, so it will be temporarily skipped and fixed in a later PR.
20-
plan(skip_all => 'skip test case');
17+
use t::APISIX 'no_plan';
2118

2219
repeat_each(1);
2320
no_long_string();
@@ -74,8 +71,8 @@ property "args" validation failed: wrong type: expected array, got string
7471
"plugins": {
7572
"mcp-bridge": {
7673
"base_uri": "/mcp",
77-
"command": "pnpm",
78-
"args": ["dlx", "@modelcontextprotocol/server-filesystem@2025.7.1", "/"]
74+
"command": "node",
75+
"args": ["t/plugin/mcp/servers/src/filesystem/dist/index.js", "/"]
7976
}
8077
},
8178
"uri": "/mcp/*"
@@ -90,6 +87,7 @@ property "args" validation failed: wrong type: expected array, got string
9087
}
9188
--- response_body
9289
passed
90+
--- wait: 2
9391
9492
9593

0 commit comments

Comments
 (0)