Sthan MCP Server
MCP server for sthan.io — give your AI assistant the ability to verify, parse, autocomplete, and geocode US addresses, and look up IP geolocation. Works with Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, and any MCP-compatible client.
8 tools · TypeScript · stdio transport · Free tier, no credit card required.
Why use it
- Real US postal data — addresses are verified against authoritative postal records, not heuristics. Returns delivery point validation (DPV), ZIP+4, residential/commercial flag.
- Sub-100ms autocomplete — typeahead-grade response times for address, city, and ZIP suggestions.
- Strong geocoding — forward geocoding returns accuracy classification (rooftop / interpolated / centroid / approximate) plus a confidence score, so your AI knows when to trust the result.
- IPv4 + IPv6 geolocation — country, region, city, coordinates, postal code, timezone with current local time, flag, currency, calling code, network (ASN, ISP, organisation), mobile/proxy/hosting flags, reverse DNS and a confidence score.
- Free tier with no credit card — get a key in under a minute at sthan.io/dashboard.
Tools
| Tool | What it does |
|---|---|
sthan_verify_address | Verify a US address is real and deliverable. Returns standardized format, ZIP+4, DPV, residential/commercial. |
sthan_parse_address | Parse freeform US address text into structured components (street number, name, type, direction, unit, city, state, zip). |
sthan_autocomplete_address | Suggest complete US addresses from partial input. Sub-100ms. |
sthan_autocomplete_city | Suggest US cities from partial input, with state code. |
sthan_autocomplete_zipcode | Suggest US ZIP codes from partial input. |
sthan_geocode | US address → latitude/longitude with accuracy + confidence, county, ZIP+4 and time zone. |
sthan_reverse_geocode | Latitude/longitude → nearest US street address with distance in meters, county, ZIP+4 and time zone; limit (up to 10) also lists nearby addresses. |
sthan_ip_geolocation | IPv4 or IPv6 → location (country to postal code, local time, flag, currency), the network behind it (ASN, ISP, proxy/hosting flags) and a confidence score. |
Quick start
1. Get a free API key
Sign up at sthan.io and create a key from the dashboard. No credit card.
2. One-click install
- Claude Desktop: download
sthan.mcpband double-click it. Claude asks for your API key and keeps it in your system keychain. Nothing else to install. - VS Code: click the button. VS Code asks for your API key and stores it securely.
- Cursor: click the button, then replace
your_key_herewith your key in Cursor Settings > MCP. - Claude Code:
claude mcp add sthan -e STHAN_API_KEY=your_key_here -- npx -y @sthan/mcp-server(details below).
3. Or set it up manually
Replace your_key_here with your key. Every setup below downloads the latest @sthan/mcp-server from npm and calls the live API at https://api.sthan.io.
Claude Code (terminal):
claude mcp add sthan -e STHAN_API_KEY=your_key_here -- npx -y @sthan/mcp-server
On native Windows, wrap npx with cmd /c:
claude mcp add sthan -e STHAN_API_KEY=your_key_here -- cmd /c npx -y @sthan/mcp-server
Add --scope user to use it in every project. Start claude and type /mcp to confirm sthan is connected.
Claude Desktop: edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop:
{
"mcpServers": {
"sthan": {
"command": "npx",
"args": ["-y", "@sthan/mcp-server"],
"env": { "STHAN_API_KEY": "your_key_here" }
}
}
}
Cursor: the same JSON in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project).
Windsurf: the same JSON in ~/.codeium/windsurf/mcp_config.json.
VS Code: create .vscode/mcp.json. VS Code asks for the key once and stores it securely:
{
"inputs": [
{ "type": "promptString", "id": "sthan-api-key", "description": "sthan.io API key", "password": true }
],
"servers": {
"sthan": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@sthan/mcp-server"],
"env": { "STHAN_API_KEY": "${input:sthan-api-key}" }
}
}
}
Try it without an AI client (opens the official MCP Inspector in your browser):
npx @modelcontextprotocol/inspector -e STHAN_API_KEY=your_key_here npx -y @sthan/mcp-server
Click Connect, then Tools > List Tools, pick a tool, and run it.
Troubleshooting
- Keep the
-yinnpx -y. Without it,npxwaits for an "OK to install?" answer that an AI client cannot give, and the server never starts. - On Windows, run the
claude mcp add ... cmd /c ...command from PowerShell or Command Prompt. Git Bash rewrites/ctoC:/, which saves a broken command that times out (fix: prefix it withMSYS_NO_PATHCONV=1). - On Windows, if a client reports
spawn npx ENOENT, use"command": "cmd"with"args": ["/c", "npx", "-y", "@sthan/mcp-server"]. - Address verification and parsing can take up to about 2 minutes when a live postal lookup is needed. If your client gives up sooner, raise its tool timeout (Claude Code: set
MCP_TOOL_TIMEOUT=150000before startingclaude; MCP Inspector: raise Request Timeout in its Configuration panel).
Example prompts
Once configured, just ask your AI assistant naturally:
- "Is 123 Main St, New York, NY 10001 a real, deliverable address?"
- "Parse this address: apt 2b 500 broadway new york ny"
- "What are the coordinates of 1600 Pennsylvania Ave, Washington DC?"
- "What's the nearest address to 40.7128, -74.0060?"
- "Where is IP 8.8.8.8 located?"
- "Suggest US cities starting with 'San Fr'."
Environment variables
| Variable | Required | Description |
|---|---|---|
STHAN_API_KEY | Yes | Your sthan.io API key (sthan_test_* for development, sthan_live_* for production) |
STHAN_API_URL | No | Override base URL (default: https://api.sthan.io) |
Response times
Most calls return in 1 to 3 seconds. Address verification and parsing can take longer (up to about 2 minutes) when an address cannot be matched from sthan.io's own data and needs a live postal lookup, so the server waits up to 150 seconds for those two tools. If your MCP client stops waiting sooner, raise its tool timeout (for example, in Claude Code set MCP_TOOL_TIMEOUT=150000).
Packages
This monorepo publishes two packages:
| Package | npm | Purpose |
|---|---|---|
@sthan/mcp-server | The MCP server itself — the binary that your client launches | |
@sthan/core | TypeScript SDK for direct programmatic use of sthan.io APIs |
Development
git clone https://github.com/sthan-io/mcp-server.git
cd mcp-server
npm install
npm run build --workspaces
Then run the server with STHAN_API_KEY=sthan_test_... node packages/mcp-server/dist/index.js.
Links
- Homepage: https://sthan.io
- API docs: https://sthan.io/docs
- OpenAPI spec: https://api.sthan.io/openapi.json
- AI reference (
llms-full.txt): https://api.sthan.io/llms-full.txt - Pricing: https://sthan.io/pricing/united-states
- Support: https://sthan.io/support
- Glama: https://glama.ai/mcp/servers/sthan-io/mcp-server
License
MIT — see LICENSE.