WSDL转换MCP工具

一个基于浏览器的工具,用于将SOAP/WSDL服务定义转换为完全类型化的MCP项目,适用于AI代理开发。

  • by higeshogun
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 higeshogun/wsdl-to-mcp

使用说明

WSDL到MCP

一种基于浏览器的工具,将SOAP/WSDL服务定义转换为全类型 模型上下文协议(MCP) 项目——准备投入任何兼容MCP的AI代理。

它做什么

将其指向WSDL文件(本地或URL),它将生成一个完整的、可运行的MCP服务器项目:

  • 解析WSDL和XSD模式,解析导入和复杂类型层次结构
  • 将SOAP操作映射到具有类型化输入/输出模式(Zod+JSON模式)的MCP工具
  • 生成带有会话管理、XML的TypeScript MCP项目↔JSON转换和错误处理
  • 包括一个浏览器内游乐场,用于根据实时LLM测试生成的工具

入门

npm install
npm run dev

然后打开 http://localhost:5173 在您的浏览器中。

如何使用

  1. 上传 --放下a .wsdl 文件或从URL加载一个(使用可选的CORS代理)
  2. 配置 --设置项目名称、目标命名空间以及要包含的操作
  3. 审查 --下载前预览所有生成的文件
  4. 下载 --获取完整MCP项目的ZIP文件
  5. 试试看 --在浏览器游乐场中交互式测试您的工具

生成的项目

下载的ZIP包含一个准备运行的MCP服务器,具有:

文件 目的
src/index.ts MCP服务器入口点
src/tools/ 每个SOAP操作一个文件,具有Zod模式
src/soap/client-factory.ts SOAP HTTP客户端
src/utils/xml-to-json.ts XML↔JSON转换
src/session/session-manager.ts WS-Security会话处理
src/soap/header-builder.ts SOAP标头构造
.env.example 环境变量引用

环境变量

身份验证类型 生成的变量
没有 BASE_URL
基础 BASE_URL, USER_ID, PASSWORD
会议 BASE_URL, AUTH_URL, USER_ID, PASSWORD, LOGIN_TYPE

当使用会话认证时, AUTH_URL 指向身份验证服务 BASE_URL 到商业服务。如果两者都位于同一端点,则将它们设置为相同的值。

连接到MCP客户端

生成的服务器使用stdio传输。对于需要HTTP的客户端(例如OpenWebUI),请使用 mcpo 作为一座桥梁:

pip install mcpo
mcpo --port 8000 -- npx tsx src/index.ts

Claude Desktop和其他stdio本地客户端直接通过以下方式工作 claude_desktop_config.json --查看生成的 README.md 在ZIP内部。

游乐场LLM提供商

浏览器内游乐场支持:

提供者 身份验证 备注
奥拉玛 无 本地;默认 http://localhost:11434.一起跑 OLLAMA_ORIGINS=* ollama serve
llama.cpp 无 本地;默认 http://localhost:8080.需要启用CORS
Anthropic API密钥 需要CORS代理(浏览器→ API
谷歌双子座 API密钥 需要CORS代理(浏览器→ API

CORS代理

对于云提供商(Anthropic、Gemini),由于CORS,浏览器无法直接调用他们的API。该应用程序包含一个Cloudflare Worker脚本,您可以将其部署为自己的代理——请参阅 CORS代理 上传步骤UI中的部分。

本地开发配置

创建一个 .env.local 项目根目录中的文件,在不接触源代码的情况下覆盖默认值(gitignored通过 *.local):

VITE_DEFAULT_PROVIDER=llamacpp        # Default LLM provider (ollama | llamacpp | anthropic | gemini)
VITE_DEFAULT_PROXY_URL=https://...    # Pre-fill the CORS proxy URL field
VITE_DEFAULT_LLM_BASE_URL=https://... # Pre-fill the LLM server URL field
VITE_ALLOWED_HOST=your-domain.example.com  # Add a custom hostname to Vite's allowedHosts

没有 .env.local,该应用程序将恢复到安全的公共默认设置(Ollama on localhost).

建筑

npm run build

输出转到 dist/.

技术栈

数据流

flowchart TB
    subgraph browser["Browser (this tool — React + Vite)"]
        direction TB
        wsdl["WSDL / XSD files"]
        parser["Parser\n(WSDL + XSD resolver)"]
        codegen["Code Generator\n(TypeScript templates)"]
        zip["ZIP download"]
        wsdl --> parser --> codegen --> zip
    end

    subgraph server["Generated MCP Server (Node.js / tsx)"]
        direction TB
        entry["src/index.ts\nMcpServer · StdioTransport"]
        tools["src/tools/\nZod-validated tool handlers"]
        soapclient["src/soap/client-factory.ts\nSOAP client (node-soap)"]
        session["src/session/session-manager.ts\nLogin · ticket cache · auto-refresh"]
        entry --> tools --> soapclient
        tools --> session --> soapclient
    end

    subgraph clients["MCP Clients"]
        direction TB
        claude["Claude Desktop\nCursor · Cline\n(stdio — direct)"]
        mcpo["mcpo\n(stdio → HTTP bridge)"]
        openwebui["OpenWebUI\nother HTTP clients"]
        mcpo --> openwebui
    end

    subgraph soap["SOAP Services"]
        auth["Auth endpoint\n(AUTH_URL)"]
        biz["Business endpoint\n(BASE_URL)"]
    end

    zip -->|"npm install && npm run dev"| server
    claude -->|stdio| entry
    claude -.->|spawns| entry
    mcpo -->|stdio| entry
    soapclient -->|"HTTP/S · XML"| biz
    session -->|"Login / Logout"| auth

图书馆

层 技术
UI框架 React 19+TypeScript
快速构建
状态 状态
zip输出 jszip+文件保护程序
语法高亮 highlight.js
生成的服务器:MCP @modelcontextprotocol/sdk
生成的服务器:SOAP node-soap
生成的服务器:模式 Zod+JSON模式
HTTP网桥(可选) mcpo

许可证

麻省理工学院