mcp2ws
This server exposes a SOAP-based Country Information web service as MCP tools, allowing you to look up geographic, linguistic, and currency data for countries worldwide.
Country Lookups:
Get a country's ISO code by name, or its name by ISO code
Get full details for a specific country or all countries at once
List all countries sorted by code, by name, or grouped by continent
Capital, Flag & Phone:
Get the capital city, flag URL, or international phone code for a country
Currency Lookups:
Get the currency used by a country, or the name of a currency by ISO code
Find which countries use a given currency
List all currencies by code or by name
Language Lookups:
Get a language's ISO code by name, or its name by ISO code
List all languages by code or by name
Continent Lookups:
List all continents by code or by name
Exposes legacy SOAP-based web services described by WSDL files as MCP tools, allowing AI models to interact with XML-based communication formats and web service architectures.
Click on "Deploy 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., "@mcp2ws what's the capital city of France using the country info service?"
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.
mcp2ws
Did you just wake up from a 20 year coma? Did you build a bunch of buzzword compliant web services back in the early 2000s and want all your SOAP and WSDL to be relevant again?
Now you can put the smooth sheen of AI on your pile of angle brackets by exposing your SOAP-based web service as a Model Context Protocol (MCP) server. It's time to wake from that coma and start hallucinating.
What?
To explain the joke: back in the early 2000s web services were promoted heavily by several companies as the future of how organizations interoperate with each other. The specific vision included a plethora of XML-based communication formats that never caught on broadly. Instead REST-ful web apis became the norm. But now 20 years later, MCP arrives claiming it too is the future of how companies interoperate, at least for AI-related applications. And unlike SOAP, there are a lot of very useful MCP servers and client delivering on that promise. So the conceit of this repos is to give SOAP-based web services a second chance at the limelight.
Related MCP server: soap-api-gateway
Prerequisites
Have a web service described by a WSDL file.
Have a compatible version of Python (tested with 3.13) or
uvinstalled on your computer.
Running
With uv:
uv run main.pyWith regular python:
python -m venv venv
source ./venv/bin/activate
pip install -r requirements.txt
python main.pyUsage
To start the MCP server, run the main.py script with the URL of the WSDL file you want to access.
uv run main.py <WSDL_URL>For example, if you have a WSDL at http://www.dneonline.com/calculator.asmx?wsdl:
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.
Available Tools
21 toolsCapitalCityD
SOAP method: CapitalCity
Inputs: sCountryISOCode (required).
CountriesUsingCurrencyD
SOAP method: CountriesUsingCurrency
Inputs: sISOCurrencyCode (required).
CountryCurrencyD
SOAP method: CountryCurrency
Inputs: sCountryISOCode (required).
CountryFlagD
SOAP method: CountryFlag
Inputs: sCountryISOCode (required).
CountryIntPhoneCodeD
SOAP method: CountryIntPhoneCode
Inputs: sCountryISOCode (required).
CountryISOCodeD
SOAP method: CountryISOCode
Inputs: sCountryName (required).
CountryNameD
SOAP method: CountryName
Inputs: sCountryISOCode (required).
CurrencyNameD
SOAP method: CurrencyName
Inputs: sCurrencyISOCode (required).
FullCountryInfoD
SOAP method: FullCountryInfo
Inputs: sCountryISOCode (required).
FullCountryInfoAllCountriesC
SOAP method: FullCountryInfoAllCountries
Inputs: no named parameters.
LanguageISOCodeD
SOAP method: LanguageISOCode
Inputs: sLanguageName (required).
LanguageNameD
SOAP method: LanguageName
Inputs: sISOCode (required).
ListOfContinentsByCodeC
SOAP method: ListOfContinentsByCode
Inputs: no named parameters.
ListOfContinentsByNameC
SOAP method: ListOfContinentsByName
Inputs: no named parameters.
ListOfCountryNamesByCodeC
SOAP method: ListOfCountryNamesByCode
Inputs: no named parameters.
ListOfCountryNamesByNameC
SOAP method: ListOfCountryNamesByName
Inputs: no named parameters.
ListOfCountryNamesGroupedByContinentC
SOAP method: ListOfCountryNamesGroupedByContinent
Inputs: no named parameters.
ListOfCurrenciesByCodeC
SOAP method: ListOfCurrenciesByCode
Inputs: no named parameters.
ListOfCurrenciesByNameC
SOAP method: ListOfCurrenciesByName
Inputs: no named parameters.
ListOfLanguagesByCodeC
SOAP method: ListOfLanguagesByCode
Inputs: no named parameters.
ListOfLanguagesByNameC
SOAP method: ListOfLanguagesByName
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Every tool has a clearly distinct purpose targeting specific geographic or cultural data attributes (e.g., capital city, currency, flag, phone code). There is no overlap in functionality, and the descriptions precisely indicate what each tool retrieves, making misselection unlikely.
All tool names follow a consistent PascalCase pattern with descriptive compound names (e.g., CountryCurrency, ListOfContinentsByName). The naming is predictable and readable throughout the set, with no deviations or mixed conventions.
With 21 tools, the count is borderline high for a geographic data server, potentially feeling heavy. While each tool serves a distinct purpose, the number might be excessive for typical agent workflows, though not extreme.
The tool set provides comprehensive coverage for geographic and cultural data, including country details, currencies, languages, and continents. It supports both specific queries (e.g., CapitalCity) and bulk listings (e.g., FullCountryInfoAllCountries), with no obvious gaps in the domain.
Maintenance
Related MCP Connectors
AI-native mock API server with MCP. Create REST/SOAP mocks from Claude, Cursor, or Windsurf.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceA self-hosted MCP gateway that turns REST, SOAP, GraphQL, and SQL endpoints into MCP tools, enabling AI clients like Claude and ChatGPT to interact with legacy and modern APIs without code changes.-
- AlicenseNot gradedqualityDmaintenanceConverts SOAP WSDL services into a REST interface and provides MCP tools to describe, invoke, and manage SOAP operations with caching and WS-Security support.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceAutomatically converts OpenAPI/Swagger documents into MCP servers, enabling AI agents to call third-party REST APIs via the MCP protocol.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceExposes SOAP web services as Model Context Protocol (MCP) servers, allowing AI models to interact with legacy SOAP services through automatic method discovery and type mapping.MIT