ng-postcode-mcp
An MCP server for AI agents that validates, looks up, and resolves addresses to Nigeria's NIPOST digital postcodes (NDAPS). It supports offline validation, lookup, autocomplete, location-based search, and address resolution.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
Checks and signals
Each line is separate evidence, not a trust score.
- Popularity 6 GitHub stars
What you can do with it
- Validate Nigerian postcodes offline
- Look up postcodes by address
- Autocomplete postcode entries
- Resolve free-text addresses to postcodes
Source and maintenance
- Last repository push
- Latest release
- mcp-v0.6.3
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
ng-postcode-mcp 0.6.3
{
"version": "0.6.3",
"transport": "stdio",
"identifier": "ng-postcode-mcp",
"runtimeHint": "uvx",
"registryType": "pypi",
"environmentVariables": [
{
"name": "NG_POSTCODE_API_KEY",
"description": "NIPOST Postcode API key from dashboard.postcode.gov.ng. Validation works without it."
},
{
"name": "NG_POSTCODE_MAX_LEVEL",
"choices": [
"1",
"2",
"3",
"4",
"5"
],
"default": "1",
"description": "Highest lookup level tools may request. Levels 2 and up consume NIPOST credits."
},
{
"name": "NG_POSTCODE_MAX_PAID_CALLS",
"default": "25",
"description": "How many paid lookups one run of the server may make with its own key."
},
{
"name": "NG_POSTCODE_BASE_URL",
"default": "https://api.postcode.gov.ng",
"description": "Alternative API host, such as a staging stack."
},
{
"name": "NG_GEOCODER_URL",
"description": "Nominatim server used by resolve_address to place described addresses. Ideally your own instance."
},
{
"name": "NG_GEOCODER_CONTACT",
"description": "URL or email identifying you to the geocoder. Required for the public Nominatim."
},
{
"name": "NG_POSTCODE_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (default), or http to serve streamable HTTP at /mcp on NG_POSTCODE_HOST and NG_POSTCODE_PORT."
},
{
"name": "NG_POSTCODE_HOST",
"default": "127.0.0.1",
"description": "Address the HTTP transport listens on."
},
{
"name": "NG_POSTCODE_PORT",
"default": "8000",
"description": "Port the HTTP transport listens on."
},
{
"name": "NG_POSTCODE_ALLOW_SHARED_KEY",
"choices": [
"1"
],
"description": "Set to 1 to let the HTTP transport start with a server key on a public address."
},
{
"name": "NG_POSTCODE_ALLOWED_HOSTS",
"description": "Host names the HTTP transport answers to, separated by commas. Required with a server key on a public address."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · repository · passed · metadata changed · updated
- · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"ng-postcode-mcp-mcp": {
"command": "uvx",
"args": [
"ng-postcode-mcp==0.6.3"
],
"env": {
"NG_POSTCODE_API_KEY": "<YOUR_NG_POSTCODE_API_KEY>",
"NG_POSTCODE_MAX_LEVEL": "<YOUR_NG_POSTCODE_MAX_LEVEL>",
"NG_POSTCODE_MAX_PAID_CALLS": "<YOUR_NG_POSTCODE_MAX_PAID_CALLS>",
"NG_POSTCODE_BASE_URL": "<YOUR_NG_POSTCODE_BASE_URL>",
"NG_GEOCODER_URL": "<YOUR_NG_GEOCODER_URL>",
"NG_GEOCODER_CONTACT": "<YOUR_NG_GEOCODER_CONTACT>",
"NG_POSTCODE_TRANSPORT": "<YOUR_NG_POSTCODE_TRANSPORT>",
"NG_POSTCODE_HOST": "<YOUR_NG_POSTCODE_HOST>",
"NG_POSTCODE_PORT": "<YOUR_NG_POSTCODE_PORT>",
"NG_POSTCODE_ALLOW_SHARED_KEY": "<YOUR_NG_POSTCODE_ALLOW_SHARED_KEY>",
"NG_POSTCODE_ALLOWED_HOSTS": "<YOUR_NG_POSTCODE_ALLOWED_HOSTS>"
}
}
}
}Cline
{
"mcpServers": {
"ng-postcode-mcp-mcp": {
"command": "uvx",
"args": [
"ng-postcode-mcp==0.6.3"
],
"env": {
"NG_POSTCODE_API_KEY": "<YOUR_NG_POSTCODE_API_KEY>",
"NG_POSTCODE_MAX_LEVEL": "<YOUR_NG_POSTCODE_MAX_LEVEL>",
"NG_POSTCODE_MAX_PAID_CALLS": "<YOUR_NG_POSTCODE_MAX_PAID_CALLS>",
"NG_POSTCODE_BASE_URL": "<YOUR_NG_POSTCODE_BASE_URL>",
"NG_GEOCODER_URL": "<YOUR_NG_GEOCODER_URL>",
"NG_GEOCODER_CONTACT": "<YOUR_NG_GEOCODER_CONTACT>",
"NG_POSTCODE_TRANSPORT": "<YOUR_NG_POSTCODE_TRANSPORT>",
"NG_POSTCODE_HOST": "<YOUR_NG_POSTCODE_HOST>",
"NG_POSTCODE_PORT": "<YOUR_NG_POSTCODE_PORT>",
"NG_POSTCODE_ALLOW_SHARED_KEY": "<YOUR_NG_POSTCODE_ALLOW_SHARED_KEY>",
"NG_POSTCODE_ALLOWED_HOSTS": "<YOUR_NG_POSTCODE_ALLOWED_HOSTS>"
}
}
}
}VS Code
{
"servers": {
"ng-postcode-mcp-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"ng-postcode-mcp==0.6.3"
],
"env": {
"NG_POSTCODE_API_KEY": "<YOUR_NG_POSTCODE_API_KEY>",
"NG_POSTCODE_MAX_LEVEL": "<YOUR_NG_POSTCODE_MAX_LEVEL>",
"NG_POSTCODE_MAX_PAID_CALLS": "<YOUR_NG_POSTCODE_MAX_PAID_CALLS>",
"NG_POSTCODE_BASE_URL": "<YOUR_NG_POSTCODE_BASE_URL>",
"NG_GEOCODER_URL": "<YOUR_NG_GEOCODER_URL>",
"NG_GEOCODER_CONTACT": "<YOUR_NG_GEOCODER_CONTACT>",
"NG_POSTCODE_TRANSPORT": "<YOUR_NG_POSTCODE_TRANSPORT>",
"NG_POSTCODE_HOST": "<YOUR_NG_POSTCODE_HOST>",
"NG_POSTCODE_PORT": "<YOUR_NG_POSTCODE_PORT>",
"NG_POSTCODE_ALLOW_SHARED_KEY": "<YOUR_NG_POSTCODE_ALLOW_SHARED_KEY>",
"NG_POSTCODE_ALLOWED_HOSTS": "<YOUR_NG_POSTCODE_ALLOWED_HOSTS>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"ng-postcode-mcp-mcp": {
"command": "uvx",
"args": [
"ng-postcode-mcp==0.6.3"
],
"env": {
"NG_POSTCODE_API_KEY": "<YOUR_NG_POSTCODE_API_KEY>",
"NG_POSTCODE_MAX_LEVEL": "<YOUR_NG_POSTCODE_MAX_LEVEL>",
"NG_POSTCODE_MAX_PAID_CALLS": "<YOUR_NG_POSTCODE_MAX_PAID_CALLS>",
"NG_POSTCODE_BASE_URL": "<YOUR_NG_POSTCODE_BASE_URL>",
"NG_GEOCODER_URL": "<YOUR_NG_GEOCODER_URL>",
"NG_GEOCODER_CONTACT": "<YOUR_NG_GEOCODER_CONTACT>",
"NG_POSTCODE_TRANSPORT": "<YOUR_NG_POSTCODE_TRANSPORT>",
"NG_POSTCODE_HOST": "<YOUR_NG_POSTCODE_HOST>",
"NG_POSTCODE_PORT": "<YOUR_NG_POSTCODE_PORT>",
"NG_POSTCODE_ALLOW_SHARED_KEY": "<YOUR_NG_POSTCODE_ALLOW_SHARED_KEY>",
"NG_POSTCODE_ALLOWED_HOSTS": "<YOUR_NG_POSTCODE_ALLOWED_HOSTS>"
}
}
}
}Let your agent find its tools
Find servers like ng-postcode-mcp from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.