← Back to scan
File as GitHub Issue repo: modelcontextprotocol/servers

Push this scan report to modelcontextprotocol/servers

Click the green button below to open GitHub’s new-issue form, pre-filled with the report title, summary table, top findings, and an embedded score-card image. No authentication needed — you review on GitHub before submitting. Repobility is credited as the scanner.

Embedded score card image

This image will render at the top of the issue body. Hosted on Repobility, refreshes automatically after re-scans.

Repobility score card

Issue title

Auth/permission check missing on AI-generated endpoint

Curate findings to include

Pick exactly which findings appear in the issue body. By default the top 5 are included. Uncheck noise, check what matters.

Top 5 (default)
Severity Rule Title File:line
CRIT MINED116 Workflow uses `secrets.NPM_TOKEN` on a `pull_request` trigger .github/workflows/typescript.yml:102
CRIT GHSA-5xrq-8626-4rwp vitest: GHSA-5xrq-8626-4rwp package-lock.json
HIGH SEC033 [SEC033] Prototype Pollution — unfiltered merge of user object: Merging user-controlled o… src/sequentialthinking/lib.ts:64
HIGH SEC135 [SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint g… src/everything/transports/streamableHtt…:60
HIGH SEC135 [SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint g… src/everything/transports/sse.ts:59
HIGH SEC100 [SEC100] CORS permissive Access-Control-Allow-Origin: *: Permissive CORS policy (`*` orig… src/everything/transports/streamableHtt…:44
HIGH SEC100 [SEC100] CORS permissive Access-Control-Allow-Origin: *: Permissive CORS policy (`*` orig… src/everything/transports/sse.ts:11
HIGH SEC040 [SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML w… src/everything/tools/simulate-research-…:180
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… src/fetch/src/mcp_server_fetch/server.py:48
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… src/everything/tools/trigger-url-elicit…:128
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… src/everything/tools/gzip-file-as-resou…:137
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … src/everything/server/logging.ts:80
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … src/everything/resources/subscriptions.…:169
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … src/everything/resources/session.ts:61
HIGH MINED108 `self.fail` used but never assigned in __init__ scripts/release.py:46
HIGH MINED108 `self.fail` used but never assigned in __init__ scripts/release.py:38
HIGH MINED108 `self.fail` used but never assigned in __init__ scripts/release.py:35
HIGH MINED118 Dockerfile FROM `node:22-alpine` not pinned by digest src/filesystem/Dockerfile:11
HIGH MINED118 Dockerfile FROM `node:22.12-alpine` not pinned by digest src/filesystem/Dockerfile:1
HIGH MINED118 Dockerfile FROM `node:22-alpine` not pinned by digest src/everything/Dockerfile:9
HIGH MINED118 Dockerfile FROM `node:22.12-alpine` not pinned by digest src/everything/Dockerfile:1
HIGH MINED118 Dockerfile FROM `node:22-alpine` not pinned by digest src/sequentialthinking/Dockerfile:11
HIGH MINED118 Dockerfile FROM `node:22.12-alpine` not pinned by digest src/sequentialthinking/Dockerfile:1
HIGH MINED118 Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest src/git/Dockerfile:24
HIGH MINED118 Dockerfile FROM `ghcr.io/astral-sh/uv:python3.12-bookworm-slim` not pinned by digest src/git/Dockerfile:2
HIGH MINED118 Dockerfile FROM `node:22-alpine` not pinned by digest src/memory/Dockerfile:11
HIGH MINED118 Dockerfile FROM `node:22.12-alpine` not pinned by digest src/memory/Dockerfile:1
HIGH MINED118 Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest src/fetch/Dockerfile:24
HIGH MINED118 Dockerfile FROM `ghcr.io/astral-sh/uv:python3.12-bookworm-slim` not pinned by digest src/fetch/Dockerfile:2
HIGH MINED118 Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest src/time/Dockerfile:24
HIGH MINED118 Dockerfile FROM `ghcr.io/astral-sh/uv:python3.12-bookworm-slim` not pinned by digest src/time/Dockerfile:2
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/python.yml:17
HIGH MINED115 Action `actions/download-artifact` pinned to mutable ref `@v7` .github/workflows/release.yml:210
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/release.yml:207
HIGH MINED115 Action `actions/setup-node` pinned to mutable ref `@v6` .github/workflows/release.yml:164
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/release.yml:161
HIGH MINED115 Action `pypa/gh-action-pypi-publish` pinned to mutable ref `@release/v1` .github/workflows/release.yml:146
HIGH MINED115 Action `actions/setup-python` pinned to mutable ref `@v6` .github/workflows/release.yml:129
HIGH MINED115 Action `astral-sh/setup-uv` pinned to mutable ref `@v5` .github/workflows/release.yml:126
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/release.yml:121
HIGH MINED115 Action `astral-sh/setup-uv` pinned to mutable ref `@v5` .github/workflows/release.yml:82
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/release.yml:77
HIGH MINED115 Action `actions/upload-artifact` pinned to mutable ref `@v6` .github/workflows/release.yml:46
HIGH MINED115 Action `astral-sh/setup-uv` pinned to mutable ref `@v5` .github/workflows/release.yml:30
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/release.yml:18
HIGH MINED115 Action `anthropics/claude-code-action` pinned to mutable ref `@v1` .github/workflows/claude.yml:35
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/claude.yml:29
HIGH MINED115 Action `actions/setup-node` pinned to mutable ref `@v6` .github/workflows/typescript.yml:88
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/typescript.yml:87
HIGH MINED115 Action `actions/setup-node` pinned to mutable ref `@v6` .github/workflows/typescript.yml:57
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/typescript.yml:56
HIGH MINED115 Action `actions/setup-node` pinned to mutable ref `@v6` .github/workflows/typescript.yml:34
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/typescript.yml:33
HIGH MINED115 Action `actions/checkout` pinned to mutable ref `@v6` .github/workflows/typescript.yml:17
HIGH MINED115 Action `actions/github-script` pinned to mutable ref `@v8` .github/workflows/readme-pr-check.yml:66
HIGH MINED115 Action `actions/github-script` pinned to mutable ref `@v8` .github/workflows/readme-pr-check.yml:20
HIGH PYSEC-2026-161 starlette: PYSEC-2026-161 src/time/uv.lock
HIGH PYSEC-2026-179 pyjwt: PYSEC-2026-179 src/time/uv.lock
HIGH PYSEC-2026-178 pyjwt: PYSEC-2026-178 src/time/uv.lock
HIGH PYSEC-2026-177 pyjwt: PYSEC-2026-177 src/time/uv.lock
HIGH PYSEC-2026-175 pyjwt: PYSEC-2026-175 src/time/uv.lock
HIGH PYSEC-2026-161 starlette: PYSEC-2026-161 src/git/uv.lock
HIGH PYSEC-2026-179 pyjwt: PYSEC-2026-179 src/git/uv.lock
HIGH PYSEC-2026-178 pyjwt: PYSEC-2026-178 src/git/uv.lock
HIGH PYSEC-2026-177 pyjwt: PYSEC-2026-177 src/git/uv.lock
HIGH PYSEC-2026-175 pyjwt: PYSEC-2026-175 src/git/uv.lock
HIGH GHSA-mv93-w799-cj2w gitpython: GHSA-mv93-w799-cj2w src/git/uv.lock
HIGH PYSEC-2026-142 urllib3: PYSEC-2026-142 src/fetch/uv.lock
HIGH PYSEC-2026-141 urllib3: PYSEC-2026-141 src/fetch/uv.lock
HIGH PYSEC-2026-161 starlette: PYSEC-2026-161 src/fetch/uv.lock
HIGH PYSEC-2026-179 pyjwt: PYSEC-2026-179 src/fetch/uv.lock
HIGH PYSEC-2026-178 pyjwt: PYSEC-2026-178 src/fetch/uv.lock
HIGH PYSEC-2026-177 pyjwt: PYSEC-2026-177 src/fetch/uv.lock
HIGH PYSEC-2026-175 pyjwt: PYSEC-2026-175 src/fetch/uv.lock
HIGH MINED113 Express DELETE /mcp has no auth src/everything/transports/streamableHtt…:165
HIGH MINED113 Express POST /mcp has no auth src/everything/transports/streamableHtt…:60
HIGH MINED113 Express POST /message has no auth src/everything/transports/sse.ts:59
MED DKR007 Docker build context has no .dockerignore .dockerignore
MED DEPCUR-NPM npm package `@vitest/coverage-v8` is 2 major version(s) behind (2.1.9 -> 4.1.8) src/filesystem/package.json
MED DEPCUR-NPM npm package `@types/minimatch` is 1 major version(s) behind (5.1.2 -> 6.0.0) src/filesystem/package.json
MED DEPCUR-NPM npm package `@types/diff` is 3 major version(s) behind (5.2.3 -> 8.0.0) src/filesystem/package.json
MED DEPCUR-NPM npm package `minimatch` is 1 major version(s) behind (9.0.9 -> 10.2.5) src/filesystem/package.json
MED DEPCUR-NPM npm package `glob` is 3 major version(s) behind (10.5.0 -> 13.0.6) src/filesystem/package.json
MED DEPCUR-NPM npm package `diff` is 1 major version(s) behind (8.0.3 -> 9.0.0) src/filesystem/package.json
MED DEPCUR-NPM npm package `prettier` is 1 major version(s) behind (2.8.8 -> 3.8.3) src/everything/package.json
MED DEPCUR-NPM npm package `@vitest/coverage-v8` is 2 major version(s) behind (2.1.9 -> 4.1.8) src/everything/package.json
MED DEPCUR-NPM npm package `@vitest/coverage-v8` is 2 major version(s) behind (2.1.9 -> 4.1.8) src/sequentialthinking/package.json
MED DEPCUR-NPM npm package `yargs` is 1 major version(s) behind (17.7.2 -> 18.0.0) src/sequentialthinking/package.json
MED DEPCUR-NPM npm package `@vitest/coverage-v8` is 2 major version(s) behind (2.1.9 -> 4.1.8) src/memory/package.json
MED GHSA-65pc-fj4g-8rjx idna: GHSA-65pc-fj4g-8rjx src/time/uv.lock
MED GHSA-vjqx-cfc4-9h6v mcp-server-git: GHSA-vjqx-cfc4-9h6v src/git/uv.lock
MED GHSA-j22h-9j4x-23w5 mcp-server-git: GHSA-j22h-9j4x-23w5 src/git/uv.lock
MED GHSA-9xwc-hfwc-8w59 mcp-server-git: GHSA-9xwc-hfwc-8w59 src/git/uv.lock
MED GHSA-5cgr-j3jf-jw3v mcp-server-git: GHSA-5cgr-j3jf-jw3v src/git/uv.lock
MED GHSA-65pc-fj4g-8rjx idna: GHSA-65pc-fj4g-8rjx src/git/uv.lock
MED GHSA-65pc-fj4g-8rjx idna: GHSA-65pc-fj4g-8rjx src/fetch/uv.lock
MED GHSA-4w7w-66w2-5vf9 vite: GHSA-4w7w-66w2-5vf9 package-lock.json
MED GHSA-q8mj-m7cp-5q26 qs: GHSA-q8mj-m7cp-5q26 package-lock.json
MED GHSA-xrhx-7g5j-rcj5 hono: GHSA-xrhx-7g5j-rcj5 package-lock.json
MED GHSA-f577-qrjj-4474 hono: GHSA-f577-qrjj-4474 package-lock.json
MED GHSA-3hrh-pfw6-9m5x hono: GHSA-3hrh-pfw6-9m5x package-lock.json
MED GHSA-2gcr-mfcq-wcc3 hono: GHSA-2gcr-mfcq-wcc3 package-lock.json
MED GHSA-67mh-4wv8-2f99 esbuild: GHSA-67mh-4wv8-2f99 package-lock.json
MED DKR001 Docker final stage has no non-root USER src/time/Dockerfile:25
MED DKR001 Docker final stage has no non-root USER src/sequentialthinking/Dockerfile:12
MED DKR001 Docker final stage has no non-root USER src/memory/Dockerfile:12
MED DKR001 Docker final stage has no non-root USER src/git/Dockerfile:25
MED DKR001 Docker final stage has no non-root USER src/filesystem/Dockerfile:13
MED DKR001 Docker final stage has no non-root USER src/fetch/Dockerfile:25
MED DKR001 Docker final stage has no non-root USER src/everything/Dockerfile:10
LOW COMP001 [COMP001] High cognitive complexity: Function `call_tool` has cognitive complexity 11 (So… src/time/src/mcp_server_time/server.py:183
LOW COMP001 [COMP001] High cognitive complexity: Function `call_tool` has cognitive complexity 11 (So… src/fetch/src/mcp_server_fetch/server.py:224
LOW DEPCUR-NPM npm package `shx` is minor version(s) behind (0.3.4 -> 0.4.0) src/filesystem/package.json
LOW DEPCUR-NPM npm package `shx` is minor version(s) behind (0.3.4 -> 0.4.0) src/everything/package.json
LOW DEPCUR-NPM npm package `shx` is minor version(s) behind (0.3.4 -> 0.4.0) src/sequentialthinking/package.json
LOW DEPCUR-NPM npm package `chalk` is minor version(s) behind (5.3.0 -> 5.6.2) src/sequentialthinking/package.json
LOW DEPCUR-NPM npm package `shx` is minor version(s) behind (0.3.4 -> 0.4.0) src/memory/package.json
LOW AIC003 Duplicated implementation block across source files src/sequentialthinking/vitest.config.ts:1
LOW AIC003 Duplicated implementation block across source files src/memory/vitest.config.ts:1
LOW AIC003 Duplicated implementation block across source files src/filesystem/vitest.config.ts:1
LOW AIC003 Duplicated implementation block across source files src/everything/tools/trigger-sampling-r…:41
LOW AIC003 Duplicated implementation block across source files src/everything/tools/trigger-sampling-r…:110
LOW AIC003 Duplicated implementation block across source files src/everything/tools/get-resource-refer…:38
LOW DKR011 Dockerfile installs recommended OS packages src/git/Dockerfile:27
INFO MINED052 [MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety. src/everything/tools/simulate-research-…:72
INFO MINED045 [MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError … src/everything/transports/streamableHtt…:161
INFO MINED045 [MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError … src/everything/tools/get-roots-list.ts:88
INFO MINED054 [MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely. src/everything/resources/templates.ts:147
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … src/everything/tools/simulate-research-…:134
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … src/everything/server/roots.ts:66
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … src/everything/index.ts:24
INFO MINED050 [MINED050] Stub Only Function: Function declared but body is just pass, return None, rais… scripts/release.py:139
INFO DEPCUR-NPM npm package `cors` is patch version(s) behind (2.8.5 -> 2.8.6) src/everything/package.json
INFO DEPCUR-NPM npm package `@types/yargs` is patch version(s) behind (17.0.33 -> 17.0.35) src/sequentialthinking/package.json
Reset to top 5 134 findings available (after auto-suppression of test files + won't-fix)

Issue body (markdown)

## Code-quality scan: `modelcontextprotocol/servers`

**Score: 69/100 (B)**  ·  159 findings  ·  scanned 2026-06-05 07:07 UTC  ·  14,401 LOC

| Severity | Count |
|---|---|
| CRITICAL | 2 |
| HIGH | 75 |
| MEDIUM | 33 |
| LOW | 14 |

📊 [Full filterable report](https://repobility.com/scan/e7754425-5240-4ee0-b663-dfac5e327454/)  ·  ![scorecard](https://repobility.com/scan/e7754425-5240-4ee0-b663-dfac5e327454/report.png?v=1780643266-s2)

### Top findings

1. **CRITICAL** `MINED116` — Workflow uses `secrets.NPM_TOKEN` on a `pull_request` trigger
   `.github/workflows/typescript.yml:102` · ✓ Repobility
2. **CRITICAL** `GHSA-5xrq-8626-4rwp` — vitest: GHSA-5xrq-8626-4rwp
   `package-lock.json`
3. **HIGH** `SEC033` — Prototype Pollution — unfiltered merge of user object
   `src/sequentialthinking/lib.ts:64` · CWE-1321
4. **HIGH** `SEC135` — Auth/permission check missing on AI-generated endpoint
   `src/everything/transports/streamableHttp.ts:60` · CWE-862
5. **HIGH** `SEC135` — Auth/permission check missing on AI-generated endpoint
   `src/everything/transports/sse.ts:59` · CWE-862

---

**Security note**: this issue is public. If any flagged finding is a real, exploitable vulnerability, please redirect to your `SECURITY.md` policy or open a [private security advisory](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability) instead. We're happy to close this and re-submit privately.

---

_Filed automatically. Close this issue if not useful — we won't refile. Full report: https://repobility.com/scan/e7754425-5240-4ee0-b663-dfac5e327454/_
Already filed
This repo publishes a SECURITY.md policy and the scan contains 12 Critical/High security finding(s). Public issue filing would violate coordinated disclosure. Submit privately via the project's security reporting channel.
Megaproject â high spam risk
Could not determine 'modelcontextprotocol/servers' star count (GitHub API rate-limited or unreachable). When in doubt about repo size, prefer opening a focused PR or a discussion rather than an issue.
Already filed
51/161 findings (32%) on this scan are already flagged as test-file, won't-fix, or suppressed. The scan is too noisy to file as a single issue. Curate down to specific actionable findings, or address the FP source first.

The button opens GitHubâs new-issue page in a new tab. You will see the title + body pre-filled â review, edit if you want, then click GitHubâs "Submit new issue" button. Repobility never posts anything on your behalf.

For real security findings on big repos: use the project's SECURITY.md or private advisory flow instead of a public issue.