SOAP MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SOAP MCP ServerGet country name for code 'US' from CountryInfoService"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SOAP MCP Server
Expose SOAP web services as Model Context Protocol (MCP) servers. Bridge the gap between legacy SOAP/WSDL services and modern AI applications.
Overview
SOAP MCP Server is a proof-of-concept that enables you to expose any SOAP-based web service as an MCP server. This allows AI models and MCP clients to interact with legacy SOAP services through a standardized protocol.
Why?
Many organizations still rely on SOAP-based web services built in the early 2000s. Rather than rewriting these services, SOAP MCP Server provides a modern wrapper that:
✨ Exposes SOAP methods as MCP tools
🔗 Provides HTTP-based MCP protocol support
🚀 Makes legacy services accessible to AI applications
📦 Requires zero changes to existing SOAP services
Related MCP server: mcp2ws
Features
Automatic Method Discovery: Parses WSDL to automatically discover and expose all SOAP methods
HTTP MCP Protocol: Native HTTP transport for MCP communication
Type Mapping: Automatically converts SOAP/XML types to JSON Schema
Error Handling: Comprehensive error handling and logging
Production Ready: Runs on FastAPI + Uvicorn
Prerequisites
Python 3.13+
WSDL file URL (local file path or HTTP endpoint)
uv(recommended) or standard Python virtual environment
Installation
Using uv (recommended)
git clone https://github.com/mayankgupta7673/soap-mcp-server.git
cd soap-mcp-server
uv syncUsing pip
git clone https://github.com/mayankgupta7673/soap-mcp-server.git
cd soap-mcp-server
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e .Quick Start
1. Start the Server
With uv:
uv run --project pyproject.toml main.py https://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDLWith Python:
python main.py https://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDLThe server will start on http://localhost:8000/mcp
2. Configure MCP Client
Update your MCP client configuration (e.g., .vscode/mcp.json):
{
"servers": {
"soap-service": {
"url": "http://localhost:8000/mcp",
"type": "http"
}
}
}3. Use in MCP Client
Your MCP client can now:
List all available SOAP methods as tools
Call any SOAP method with parameters
Receive results as structured JSON
Usage
usage: soap-mcp [-h] [--port PORT] [--host HOST] [--log-file LOG_FILE] [--log-level {DEBUG,INFO,WARNING,ERROR}] WSDL
Expose SOAP web services as Model Context Protocol (MCP) servers
positional arguments:
WSDL URL or file path of the WSDL file
options:
--port PORT Port to listen on (default: 8000)
--host HOST Host to bind to (default: 127.0.0.1)
--log-file LOG_FILE Log file path (default: soap_mcp.log)
--log-level {DEBUG,INFO,WARNING,ERROR}
Logging level (default: INFO)Examples
Start server on default port (8000):
python main.py https://example.com/service.wsdlStart server on custom port:
python main.py https://example.com/service.wsdl --port 9000Enable debug logging:
python main.py https://example.com/service.wsdl --log-level DEBUGUse local WSDL file:
python main.py file:///path/to/service.wsdlArchitecture
┌─────────────────────────────────────────────────────┐
│ MCP Client (e.g., IDE, AI App) │
└─────────────────────────────────────────────────────┘
│
│ HTTP/MCP
↓
┌─────────────────────────────────────────────────────┐
│ SOAP MCP Server (FastAPI + Uvicorn) │
├─────────────────────────────────────────────────────┤
│ • initialize - MCP protocol handshake │
│ • tools/list - List all SOAP methods │
│ • tools/call - Execute SOAP method │
├─────────────────────────────────────────────────────┤
│ SOAP Client (SUDS Library) │
└─────────────────────────────────────────────────────┘
│
│ SOAP/HTTP
↓
┌─────────────────────────────────────────────────────┐
│ Legacy SOAP Web Service (Existing) │
└─────────────────────────────────────────────────────┘Type Mapping
XML Schema types are automatically mapped to JSON Schema types:
XSD Type | JSON Type |
xs:int, xs:integer | integer |
xs:string | string |
xs:boolean | boolean |
xs:double, xs:float | number |
xs:decimal | number |
(others) | string (default) |
Development
Install Development Dependencies
uv pip install -e ".[dev]"Project Structure
soap-mcp-server/
├── src/
│ └── soap_mcp/
│ ├── __init__.py # Package initialization
│ ├── cli.py # CLI interface
│ ├── server.py # Core server logic
├── examples/ # Example configurations
├── main.py # Entry point
├── pyproject.toml # Project metadata & dependencies
├── LICENSE # MIT License
└── README.md # This fileAPI Endpoints
POST /mcp
Main MCP protocol endpoint. Accepts JSON-RPC 2.0 requests:
Initialize:
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {...},
"id": 1
}List Tools:
{
"jsonrpc": "2.0",
"method": "tools/list",
"params": {},
"id": 2
}Call Tool:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "MethodName",
"arguments": {"param1": "value1"}
},
"id": 3
}GET /health
Health check endpoint.
Configuration
See examples/ directory for sample MCP configurations for different clients.
Limitations & Future Work
Currently supports SOAP services with HTTP binding
Complex nested types may require additional transformation
No caching of WSDL parsing (reloaded on each request)
SSE transport not yet supported
Troubleshooting
WSDL Loading Fails
Error loading WSDL: ...Verify the WSDL URL is accessible
Check network/firewall settings
Ensure the WSDL file is valid
Port Already in Use
Address already in useUse a different port:
python main.py <WSDL_URL> --port 8001Debug Logging
Enable debug output:
python main.py <WSDL_URL> --log-level DEBUGCheck logs in soap_mcp.log
Contributing
Contributions welcome! Please feel free to submit issues and pull requests.
License
MIT License - see LICENSE file for details
References
Acknowledgments
This project bridges legacy SOAP services with modern AI through the Model Context Protocol.
For example, if you have a WSDL at `http://www.dneonline.com/calculator.asmx?wsdl`:
```bash
uv run main.py http://www.dneonline.com/calculator.asmx?wsdlThis tool has been tested with these random WSDL files I found on the internet:
Configure your agentic coding tool
Configure your MCP client (e.g., Gemini CLI, or an IDE extension) to run this script.
Example generic MCP config:
{
"mcpServers": {
"soap-service": {
"command": "uv",
"args": [
"run",
"--project",
"/path/to/mcp2ws/pyproject.toml",
"/path/to/mcp2ws/main.py",
"http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL"
]
}
}
}Example Session
In Gemini CLI, using the http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL service:
> What is the capital city of France? Use the soap tool.
✦ I will find the ISO code for France and then use it to get the capital city.
╭────────────────────────────────────────────────────────────────────────╮
│ ✓ CountryISOCode (soap-service MCP Server) {"sCountryName":"France"} │
│ │
│ FR │
╰────────────────────────────────────────────────────────────────────────╯
✦ I will now retrieve the capital city of France using its ISO code.
╭────────────────────────────────────────────────────────────────────────╮
│ ✓ CapitalCity (soap-service MCP Server) {"sCountryISOCode":"FR"} │
│ │
│ Paris │
╰────────────────────────────────────────────────────────────────────────╯
✦ The capital city of France is Paris.TODO
Expose
<documentation/>tags from WSDL in the tool listing. I don't know how standard this is, but I've seen these tags in .ASMX WSDL files.Better support for mapping XML schema to JSON schema for input. Currently only primitive types are supported.
Add tests.
Run evals and optimize the how the tools are described in the MCP protocol.
Implement support for more web service standards like WS-* and UDDI. This probably won't happen because this stops being a fun joke and starts being a job.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceA Model Context Protocol (MCP) server that converts OpenAPI/Swagger specifications to MCP format, enabling AI assistants to interact with REST APIs through standardized protocol.Last updated72TypeScriptMIT
- AlicenseCqualityCmaintenanceExposes SOAP-based web services as MCP servers by parsing WSDL files. Enables AI assistants to interact with legacy SOAP/WS-\* web services through the Model Context Protocol.Last updated214MIT
- Flicense-qualityDmaintenanceAutomatically converts Swagger/OpenAPI specifications into MCP servers, enabling AI agents to interact with any REST API through natural language by exposing endpoints as AI-friendly tools.Last updated3
- Flicense-qualityDmaintenanceA universal bridge that turns legacy backend services and modern APIs into AI-accessible tools without requiring code rewrites. It dynamically generates tool definitions from WSDL, OpenAPI, or custom JSON specs to enable AI assistants to interact with systems like SAP, IBMi, and SOAP services.Last updated
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mayankgupta7673/soap-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server