Server version
0.1.1
mcp-ts-core version
0.10.6
Runtime
Bun
Runtime version
Bun 1.3.14
Transport
stdio
OS
macOS 26.1
Description
attacksurface_resolve_dns suppresses a resolver ESERVFAIL response as if the requested record does not exist. The output reports error: null at both the resolver and host levels, so callers cannot distinguish an upstream DNS failure from a valid no-record answer.
Steps to reproduce
- Call
attacksurface_resolve_dns with {"hosts":["broken.example.com"],"recordTypes":["A"],"resolvers":["8.8.8.8"],"reverse":false}.
- Have the resolver return an error with
code: "ESERVFAIL" and message "upstream SERVFAIL" for the A query.
- Inspect
results[0].error and results[0].resolverResults[0].error.
Actual behavior
{
"resolved": false,
"records": {},
"error": null,
"resolverResults": [
{ "resolver": "8.8.8.8", "records": {}, "error": null }
]
}
Expected behavior
The resolver and host error fields should preserve "upstream SERVFAIL". Only true no-record responses such as ENODATA and ENOTFOUND should be normalized to an empty successful answer.
Additional context
The failure is reproducible with a deterministic node:dns/promises boundary fake; no live DNS request is required.
Server version
0.1.1
mcp-ts-core version
0.10.6
Runtime
Bun
Runtime version
Bun 1.3.14
Transport
stdio
OS
macOS 26.1
Description
attacksurface_resolve_dnssuppresses a resolverESERVFAILresponse as if the requested record does not exist. The output reportserror: nullat both the resolver and host levels, so callers cannot distinguish an upstream DNS failure from a valid no-record answer.Steps to reproduce
attacksurface_resolve_dnswith{"hosts":["broken.example.com"],"recordTypes":["A"],"resolvers":["8.8.8.8"],"reverse":false}.code: "ESERVFAIL"and message"upstream SERVFAIL"for the A query.results[0].errorandresults[0].resolverResults[0].error.Actual behavior
{ "resolved": false, "records": {}, "error": null, "resolverResults": [ { "resolver": "8.8.8.8", "records": {}, "error": null } ] }Expected behavior
The resolver and host error fields should preserve
"upstream SERVFAIL". Only true no-record responses such asENODATAandENOTFOUNDshould be normalized to an empty successful answer.Additional context
The failure is reproducible with a deterministic
node:dns/promisesboundary fake; no live DNS request is required.