Soap Api Gateway
БесплатноНе проверенConverts SOAP WSDL services into a REST interface and provides MCP tools to describe, invoke, and manage SOAP operations with caching and WS-Security support.
Описание
Converts SOAP WSDL services into a REST interface and provides MCP tools to describe, invoke, and manage SOAP operations with caching and WS-Security support.
README
A production‑grade gateway that:
- Converts SOAP WSDL services into a REST‑style interface.
- Runs FastAPI HTTP API and MCP server as separate processes in the different containers.
- Supports WS‑Security UsernameToken authentication from
.env. - Caches raw WSDL XML and fully processed WSDL (Zeep client, docs, examples).
- Allows manual cache clear and manual processed WSDL refresh via HTTP or MCP.
- Uses
.envfor environment‑specific configuration.
📂 Project Structure
.
├── soap_gateway.py # Shared SOAP→REST logic
├── fastapi_app.py # FastAPI HTTP API
├── mcp_server.py # MCP server
├── requirements.txt # Python dependencies
├── Dockerfile # Container build instructions
├── docker-compose.yml # docker compose file
├── .env # Environment variables
└── README.md # This file
🚀 Features
- Dual‑process: FastAPI and MCP run independently — no blocking.
- Async‑ready: Core functions can be adapted for async.
- Caching:
- Raw WSDL XML
- Fully processed WSDL (Zeep client, operation docs, element docs)
- Clear cache:
/clear_cacheendpoint or MCPclear()tool. - Refresh processed WSDL:
/refresh_wsdlendpoint or MCPrefresh_wsdl()tool. - Dockerized: Minimal image with
supervisordmanaging both processes. - Configurable health check: WSDL URL set via
HEALTHCHECK_WSDL_URLenv var.
⚙️ Environment Variables
| Variable | Purpose | Default |
|---|---|---|
HEALTHCHECK_WSDL_URL |
WSDL URL used by health check and as default for /describe and MCP describe |
http://example.com?wsdl |
SOAP_USERNAME |
Username for WS‑Security UsernameToken authentication | (none) |
SOAP_PASSWORD |
Password for WS‑Security UsernameToken authentication | (none) |
DEBUG |
If true, returns full error + traceback in responses |
false |
PORT |
Port for FastAPI HTTP server | 9000 |
📄 Example .env
HEALTHCHECK_WSDL_URL=https://dev.example.com/service?wsdl
SOAP_USERNAME=myuser
SOAP_PASSWORD=supersecret
DEBUG=true
PORT=9000
🐳 Docker Deployment
docker compose up -d
🛠 Usage
1. HTTP API (FastAPI)
- http://localhost:9000/docs - FastAPI documentation
POST /describe— List operations and input schema.POST /invoke— Call a SOAP operation.POST /clear_cache— Flush all caches.POST /refresh_wsdl— Force rebuild of processed WSDL cache.
2. MCP Server
Tools:
describe(wsdl_url=None, operation=None, username=None, password=None)invoke(wsdl_url=None, endpoint_url, operation, params, username=None, password=None)clear()refresh_wsdl(wsdl_url=None, username=None, password=None, version="v1")
HTTP MCP transport (mounted at /mcp)
The MCP wrapper in mcp_server.py mounts an HTTP transport at /mcp by default.
When calling the HTTP MCP endpoint, send a JSON POST where tool is the tool
name and args is an object containing the tool arguments. Example payload:
{
"tool": "describe",
"args": {
"wsdl_url": "https://example.com/service?wsdl",
"operation": null,
"username": null,
"password": null
}
}
The endpoint will return a JSON response containing the tool result (same shape as the internal function return values). This is useful for MCP agents that communicate over HTTP instead of stdio.
🤝 MCP Agent Configuration
Local spawn (stdio)
{
"mcpServers": {
"soap-gateway": {
"type": "stdio",
"command": "python",
"args": ["mcp_server.py"],
"env": {
"HEALTHCHECK_WSDL_URL": "https://dev.example.com/service?wsdl",
"SOAP_USERNAME": "myuser",
"SOAP_PASSWORD": "supersecret"
}
}
}
}
Remote/HTTP
{
"mcpServers": {
"soap-gateway": {
"type": "http",
"url": "http://your-server-host:9010/mcp",
"env": {
"HEALTHCHECK_WSDL_URL": "https://prod.example.com/service?wsdl",
"SOAP_USERNAME": "myuser",
"SOAP_PASSWORD": "supersecret"
}
}
}
}
🐳 MCP Configuration for Docker Deployment
When running inside Docker, connect over HTTP:
{
"mcpServers": {
"soap-gateway": {
"type": "http",
"url": "http://localhost:9010/mcp",
"env": {
"HEALTHCHECK_WSDL_URL": "https://dev.example.com/service?wsdl",
"SOAP_USERNAME": "myuser",
"SOAP_PASSWORD": "supersecret"
}
}
}
}
❤️ Health Check
ENV HEALTHCHECK_WSDL_URL="http://example.com?wsdl"
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD curl -sf http://localhost:9000/describe \
-H "Content-Type: application/json" \
-d "{\"wsdl_url\":\"${HEALTHCHECK_WSDL_URL}\"}" || exit 1
🧹 Cache Management
- Automatic: Processed WSDL cache is built on first use and reused until cleared or refreshed.
- Manual clear:
- HTTP:
POST /clear_cache - MCP:
clear()tool
- HTTP:
- Manual refresh:
- HTTP:
POST /refresh_wsdl - MCP:
refresh_wsdl()tool
- HTTP:
Установка Soap Api Gateway
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/wj1313677/soap-api-gatewayFAQ
Soap Api Gateway MCP бесплатный?
Да, Soap Api Gateway MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Soap Api Gateway?
Нет, Soap Api Gateway работает без API-ключей и переменных окружения.
Soap Api Gateway — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Soap Api Gateway в Claude Desktop, Claude Code или Cursor?
Открой Soap Api Gateway на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Soap Api Gateway with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
