ng-postcodeSAFE
Rust, Python, JavaScript, and Java libraries and MCP servers for Nigeria's NIPOST digital postcode (NDAPS): offline validation, lookup, and reverse geocoding.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/Adeniyikayodee/ng-postcode/actions/workflows/ci.yml) [](https://crates.io/crates/ng-postcode) [](https://pypi.org/project/ng-postcode/) [](https://pypi.org/project/ng-postcode-mcp/) [](https://www.npmjs.com/package/ng-postcode-js) [](https://www.npmjs.com/package/ng-postcode-mcp)
Developer tools for Nigeria's National Digital Alphanumeric Postcode System (NDAPS), the building-level postcode NIPOST launched in October 2026: libraries for Rust, Python, JavaScript, and Java, MCP servers for AI assistants on PyPI and npm, and a resolver that turns described addresses into postcodes.
A postcode has 11 characters in five segments, written EK-01-A03-FK-01: state, LGA, district, area and building unit.
Packages
5ec38d0edb43OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add ng-postcode-mcp --env NG_POSTCODE_API_KEY=${NG_POSTCODE_API_KEY} --env NG_POSTCODE_API_KEY=${NG_POSTCODE_API_KEY} -- uvx ng-postcode-mcp==0.6.0claude mcp add ng-postcode-mcp --env NG_POSTCODE_API_KEY=${NG_POSTCODE_API_KEY} --env NG_POSTCODE_API_KEY=${NG_POSTCODE_API_KEY} -- npx -y [email protected]Trust audit
SAFEgrade B · trust 83/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (18)
secret = "nipost_test_never_echo_me"
assert eval(repr(code)) == code
exec(compile(example, str(README), "exec"), {})exec(compile(re.findall(r"```python\n(.*?)```", page, re.DOTALL)[0], str(GROUPING), "exec"), {})JSON.parse(readFileSync(new URL(`../../../../spec/${name}.json`, import.meta.url), "utf8"));const shared = new URL("../../../../spec/mcp.json", import.meta.url);const environments = new URL("../../../../spec/mcp-env.json", import.meta.url);const calls = new URL("../../../../spec/mcp-calls.json", import.meta.url);os.environ.items() ... httpx.
-DcentralBaseUrl=http://127.0.0.1:9 deploy > /dev/null 2>&1 || true
NG_POSTCODE_TRANSPORT=http uvx ng-postcode-mcp # http://127.0.0.1:8000/mcp
String base = "http://127.0.0.1:" + server.getAddress().getPort();
String base = "http://127.0.0.1:" + server.getAddress().getPort();
String base = "http://127.0.0.1:" + server.getAddress().getPort();
"id,pc\n1,ek 01 a03 fk 01\n2,EK-O1-A03-FK-01\n3,360001\n4,\n", encoding="utf-8"
@biomejs/biome, @types/node, typescript, vitest
@modelcontextprotocol/server, ng-postcode-js, @modelcontextprotocol/client
Gates applied: no_behavioural_pass.
5ec38d0edb43full audit observations/trust-audit/mcp-server/adeniyikayodee__ng-postcode.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 5ec38d0edb43 | SAFE | B | 83 | first audit |
Questions
What is the ng-postcode MCP server?
Rust, Python, JavaScript, and Java libraries and MCP servers for Nigeria's NIPOST digital postcode (NDAPS): offline validation, lookup, and reverse geocoding.
Is ng-postcode safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (83/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does ng-postcode need?
It reads NG_POSTCODE_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does ng-postcode run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as ng-postcode-smithery-publish at 0.6.0.
How current is this page?
The grade is for one exact copy of the source (5ec38d0edb43), read on 2026-10-11. The repository is watched and re-audited when it changes.