Files
higress/plugins/wasm-go/mcp-servers/mcp-scripts/create_api_directories.sh
2025-04-16 14:48:53 +08:00

103 lines
5.0 KiB
Bash
Executable File

#!/bin/bash
# Function to display usage
usage() {
echo "Usage: $0 [options] [api_code1 api_code2 ...]"
echo "Options:"
echo " -h, --help Display this help message"
echo ""
echo "If no api_codes are specified, all APIs will be processed."
exit 1
}
# Parse command line options
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
usage
;;
*)
# Collect all remaining arguments as API codes
break
;;
esac
done
# Define the API data with English translations
api_codes=("cmapi00065924" "cmapi00066017" "cmapi00054907" "cmapi012364" "cmapi029030" "cmapi011240" "cmapi011517" "cmapi011178" "cmapi010845" "cmapi011212" "cmapi00045093" "cmapi00067564" "cmapi011529" "cmapi022144" "cmapi026966" "cmapi011221" "cmapi00066410" "cmapi00048162" "cmapi00050817" "cmapi00044839" "cmapi00049059" "cmapi00046930" "cmapi00050226" "cmapi00069588" "cmapi022105" "cmapi00066353" "cmapi00065113" "cmapi027789" "cmapi00062739" "cmapi022081" "cmapi011032" "cmapi011138" "cmapi00066399" "cmapi00047480" "cmapi00067671")
server_names=("stock-helper 股票助手" "calendar-holiday-helper 日历/假期助手" "ip-query ip查询" "weather-query 墨迹天气查询" "business-info-query 工商信息查询" "train-ticket-query 火车票查询" "today-in-history 历史上的今天" "hot-news 热门新闻" "stock-history-data 股票历史数据" "heavenly-stems-and-earthly-branches-query 天干地支查询" "recipe-query 菜谱查询" "business-credit-rating 企业信用评级" "zodiac-analysis 星座分析" "taobao-hot-words 淘宝热词" "fund-data-query 基金数据查询" "exchange-rate-query 汇率查询" "national-bid-query 全国招中标查询" "logistics-tracking-query 物流轨迹查询" "parking-lot-query 停车场查询" "agricultural-product-price-query 农产品价格查询" "business-patent-query 企业专利查询" "vehicle-info-query 车辆信息查询" "invoice-verification 发票查验" "traditional-chinese-medicine-tongue-diagnosis 中医舌诊" "tourist-attraction-query 旅游景点查询" "book-query 图书查询" "route-planning 路径规划" "global-financial-news 全球财经快讯" "oil-price-query 油价查询" "jd-hot-words 京东热词" "product-barcode-query 商品条码查询" "vehicle-restriction-query 车辆限行查询" "resume-analysis 简历解析" "deadbeat-query 老赖查询" "document-conversion 文档转换")
# If specific API codes are provided, filter the arrays
if [[ $# -gt 0 ]]; then
# Create temporary arrays
declare -a filtered_api_codes
declare -a filtered_server_names
for requested_api_code in "$@"; do
for i in "${!api_codes[@]}"; do
if [[ "${api_codes[$i]}" == "$requested_api_code" ]]; then
filtered_api_codes+=("${api_codes[$i]}")
filtered_server_names+=("${server_names[$i]}")
break
fi
done
done
# Check if any API codes were found
if [[ ${#filtered_api_codes[@]} -eq 0 ]]; then
echo "Error: None of the specified API codes were found"
exit 1
fi
# Replace the original arrays with the filtered ones
api_codes=("${filtered_api_codes[@]}")
server_names=("${filtered_server_names[@]}")
echo "Processing ${#api_codes[@]} specified API(s)"
else
echo "Processing all ${#api_codes[@]} APIs"
fi
# Function to process a single API
process_api() {
local api_code=$1
local server_name=$2
local english_name=$(echo "$server_name" | awk '{print $1}')
local chinese_name=$(echo "$server_name" | awk '{print $2}')
echo "Processing $english_name ($api_code)..."
# Create directory
mkdir -p "../$english_name"
# Generate mcp-server.yaml
$GOPATH/bin/openapi-to-mcp --input "../$english_name/api.json" --output "../$english_name/mcp-server.yaml" --server-name "$english_name" --template yunmarket-tmpl.yaml
# Create README_ZH.md
echo "# $chinese_name" > "../$english_name/README_ZH.md"
# Add API details to README.md
echo -e "\nAPI认证需要的APP Code请在阿里云API市场申请: https://market.aliyun.com/apimarket/detail/$api_code" >> "../$english_name/README_ZH.md"
# Generate Markdown documentation from YAML and append to README_ZH.md
if [ -f "../$english_name/mcp-server.yaml" ]; then
echo -e "\n" >> "../$english_name/README_ZH.md"
python3 ./yaml_to_markdown.py "../$english_name/mcp-server.yaml" | cat >> "../$english_name/README_ZH.md"
echo "Generated Markdown documentation for $english_name"
fi
# Translate README_ZH.md to README.md
if [ -f "../$english_name/README_ZH.md" ]; then
python3 ./translate_readme.py "../$english_name/README_ZH.md" "../$english_name/README.md"
echo "Translated README_ZH.md to README.md for $english_name"
fi
echo "Completed processing $english_name"
}
# Process APIs sequentially for now (simpler implementation)
for i in "${!api_codes[@]}"; do
process_api "${api_codes[$i]}" "${server_names[$i]}"
done
echo "All API processing completed"