github TypeScript re-analysis due

ni-c/smtp-mcp

github

MCP server that sends mail over SMTP, gated behind an allowlist and a human confirmation

maintainer
ni-c
licence
MIT
first seen
2026-09-03
last seen
2026-09-12
releases · 30d
4
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 7 tools
transport stdio · http verified reported listed in the official MCP registry counts 7 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • forward_mail
  • get_server_info
  • preview_mail
  • reply_mail
  • send_mail
  • test_connection
  • validate_recipients
code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 47

filesystem 9

  • fs (weak) ni-c-smtp-mcp-842a768/docs/.vitepress/config.ts :1 import { readFileSync } from 'node:fs';
  • fs ni-c-smtp-mcp-842a768/src/attachments.ts :1 import { constants as fsConstants } from 'node:fs';
  • fs ni-c-smtp-mcp-842a768/src/audit.ts :1 import { appendFileSync } from 'node:fs';
  • fs (weak) ni-c-smtp-mcp-842a768/test/attachments-race.test.ts :2 import { mkdtemp, writeFile } from 'node:fs/promises';
  • fs (weak) ni-c-smtp-mcp-842a768/test/attachments.test.ts :1 import { mkdtemp, mkdir, symlink, writeFile } from 'node:fs/promises';
  • fs (weak) ni-c-smtp-mcp-842a768/test/audit.test.ts :1 import { mkdtemp, readFile, stat } from 'node:fs/promises';
  • fs (weak) ni-c-smtp-mcp-842a768/test/injection.test.ts :1 import { mkdtemp, writeFile } from 'node:fs/promises';
  • fs (weak) ni-c-smtp-mcp-842a768/test/integration/bootstrap.ts :1 import { mkdtemp, writeFile } from 'node:fs/promises';
  • fs (weak) ni-c-smtp-mcp-842a768/test/tools.test.ts :1 import { mkdtemp, writeFile } from 'node:fs/promises';

shell / exec 1

  • shell (weak) ni-c-smtp-mcp-842a768/test/attachments-race.test.ts :1 import { execFileSync } from 'node:child_process';

network 2

  • net (weak) ni-c-smtp-mcp-842a768/test/integration/bootstrap.ts :74 await fetch(`${api}/messages`, {
  • net (weak) ni-c-smtp-mcp-842a768/test/sanitize.test.ts :123 '<p>hi</p><script a="<">fetch("https://evil.example/x")</script>'

tool registrations 7

  • get_server_info ni-c-smtp-mcp-842a768/src/tools/info.ts :77
  • validate_recipients ni-c-smtp-mcp-842a768/src/tools/info.ts :185
  • preview_mail ni-c-smtp-mcp-842a768/src/tools/info.ts :238
  • test_connection ni-c-smtp-mcp-842a768/src/tools/info.ts :362
  • send_mail ni-c-smtp-mcp-842a768/src/tools/send.ts :506
  • reply_mail ni-c-smtp-mcp-842a768/src/tools/send.ts :555
  • forward_mail ni-c-smtp-mcp-842a768/src/tools/send.ts :611

install hooks 1

  • prepublishOnly ni-c-smtp-mcp-842a768/package.json :42 npm run lint && npm run typecheck && npm run build && npm test

declared dependencies 16

  • @modelcontextprotocol/server@^2.0.0
  • @modelcontextprotocol/client@^2.0.0
  • mcp-approval@^0.8.0
  • mcp-internal-hosts@^0.2.1
  • mcp-tool-allowlist@^0.2.1
  • nodemailer@^9.1.0
  • zod@^4.5.4
  • @types/node@^26.4.0
  • @types/nodemailer@^8.0.1
  • @vitest/coverage-v8@4.1.11
  • mcp-integration-harness@^0.4.0
  • oxlint@^1.80.0
show 4 more
  • prettier@^3.9.6
  • svg-asset-set@https://github.com/ni-c/svg-asset-set/releases/download/v0.2.0/svg-asset-set-0.2.0.tgz
  • typescript@^7.0.2
  • vitest@^4.1.11