MCP Scanner
ScanLeaderboardDocsSign in
Home/modelcontextprotocol/servers/Results
0F

servers

modelcontextprotocol/servers

97 files · 86 findings

Share GitHub SARIF JSON
4 critical33 high28 medium21 low
Tool Poisoningclean
Command Injectionclean
Path Traversal4 issues
SSRF4 issues
Credential Theft1 issue
Excessive Permissionsclean
Missing Auth13 issues
Supply Chain
Supply Chain32

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/claude.yml:29
uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

Logging Deficiency27

Empty catch blocks swallowing errors

medium

Detected catch blocks with empty bodies. Empty catch blocks silently swallow errors, making it impossible to diagnose failures, detect attacks, or audit security-relevant events.

.github/workflows/readme-pr-check.yml:82
} catch (e) {}
How to fix

Always handle or log errors in catch blocks. At minimum, log the error for debugging and auditing purposes.

SSRF4

URL construction from user input

medium

Building URLs by concatenating or interpolating user input without an allowlist check enables SSRF via host manipulation.

src/everything/resources/templates.ts:119
new URL(`${textUriBase}/${resourceId}`);
How to fix

Do not construct URLs from unvalidated user input. Use a URL allowlist or domain restriction.

Credential Theft1

Hardcoded API key or token literal

critical

String literals matching known API key prefixes (sk-, ghp_, AKIA, xoxb-, etc.) or long base64-like strings may expose secrets in source code.

src/everything/tools/get-tiny-image.ts:6
"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAKsGlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU+kSgOfe9JDQEiIgJfQmSCeAlBBaAAXpYCMkAUKJMRBU7MriClZURLCs6KqIgo0idizYFsWC3QVZBNR1sWDDlXeBQ9jdd9575805c+a7c+efmf+e/z9nLgCdKZDJMlF1gCxpjjwyyI8dn5DIJvUABRiY0kBdIMyWcSMiwgCTUft3+dgGyJC9YzuU69/f/1fREImzhQBIBMbJomxhFsbHMe0TyuQ5ALg9mN9kbo5siK9gzJRjDWL8ZIhTR7hviJOHGY8fjomO5GGsDUCmCQTyVACaKeZn5wpTsTw0f4ztpSKJFGPsGbyzsmaLMMbqgiUWI8N4KD8n+S95Uv+WM1mZUyBIVfLIXoaF7C/JlmUK5v+fn+N/S1amYrSGOaa0NHlwJGaxvpAHGbNDlSxNnhI+yhLRcPwwpymCY0Z
How to fix
Missing Auth13

Server route without authentication middleware

medium

HTTP endpoints defined without authentication middleware may be accessible to unauthorized users.

src/everything/transports/sse.ts:26
app.get("/sse", async (req, res) => {
How to fix

Add authentication middleware to all routes that access or modify data.

Insecure Communication5

Missing HSTS headers on HTTP server

medium

An HTTP server is created without configuring Strict-Transport-Security (HSTS) headers. Without HSTS, browsers may allow downgrade attacks from HTTPS to HTTP.

src/everything/transports/sse.ts:28
const { server, cleanup } = createServer();
How to fix

Add Strict-Transport-Security headers to your server responses. Use a middleware such as helmet to set HSTS automatically.

Path Traversal4

Null byte injection in file paths

critical

Null bytes in file paths can truncate path validation and access unintended files.

src/filesystem/path-validation.ts:23
if (absolutePath.includes('\x00')) {
How to fix

Strip null bytes from all file path inputs before processing.

32 issues
Rug Pullclean
Data Exfiltrationclean
Insecure Communication5 issues
Excessive Data Exposureclean
Logging Deficiency27 issues
Runtime Tool Poisoningclean
Shadow MCP Serverclean

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/claude.yml:35
uses: anthropics/claude-code-action@v1
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:17
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:34
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:37
uses: astral-sh/setup-uv@v3
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:40
uses: actions/setup-python@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:71
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:74
uses: astral-sh/setup-uv@v3
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:77
uses: actions/setup-python@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:94
uses: actions/upload-artifact@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/python.yml:115
uses: actions/download-artifact@v7
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/readme-pr-check.yml:20
uses: actions/github-script@v8
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/readme-pr-check.yml:66
uses: actions/github-script@v8
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:18
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:30
uses: astral-sh/setup-uv@v5
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:46
uses: actions/upload-artifact@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:77
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:82
uses: astral-sh/setup-uv@v5
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:121
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:126
uses: astral-sh/setup-uv@v5
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:129
uses: actions/setup-python@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:161
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:165
- uses: actions/setup-node@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:207
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/release.yml:210
uses: actions/download-artifact@v7
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/typescript.yml:17
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/typescript.yml:33
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/typescript.yml:35
- uses: actions/setup-node@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/typescript.yml:56
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/typescript.yml:58
- uses: actions/setup-node@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/typescript.yml:87
- uses: actions/checkout@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

GitHub Actions with unpinned actions

high

Using GitHub Actions with branch references instead of SHA pins enables supply chain attacks.

.github/workflows/typescript.yml:88
- uses: actions/setup-node@v6
How to fix

Pin GitHub Actions to full commit SHAs: uses: actions/checkout@abc123...

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

.github/workflows/readme-pr-check.yml:29
console.log('PR modifies files other than README, skipping');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

.github/workflows/readme-pr-check.yml:36
console.log('Already commented on this PR, skipping');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

.github/workflows/readme-pr-check.yml:75
console.log('No pending label found, skipping');
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/index.ts:30
console.log("Available transports:");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/index.ts:31
console.log("- stdio");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/index.ts:32
console.log("- sse");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/index.ts:33
console.log("- streamableHttp");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/everything/tools/toggle-simulated-logging.ts:12
description: "Toggles simulated, random-leveled logging on or off.",
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:39
console.log("Starting Streamable HTTP server...");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:61
console.log("Received MCP POST request");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:82
console.log(`Session initialized with ID: ${sessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:91
console.log(
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:121
console.log("Error handling MCP request:", error);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:138
console.log("Received MCP GET request");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:155
console.log(`Client reconnecting with Last-Event-ID: ${lastEventId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:157
console.log(`Establishing new SSE stream for session ${sessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:179
console.log(`Received session termination request for session ${sessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:185
console.log("Error handling session termination:", error);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:225
console.log("Shutting down server...");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:230
console.log(`Closing transport for session ${sessionId}`);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:234
console.log(`Error closing transport for session ${sessionId}:`, error);
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Console.log in production code

low

Detected console.log() usage in non-test source code. Console.log is not appropriate for production logging as it lacks log levels, structured output, and proper log management.

src/everything/transports/streamableHttp.ts:238
console.log("Server shutdown complete");
How to fix

Replace console.log with a structured logging library (e.g., winston, pino) that supports log levels and proper log management.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/git/src/mcp_server_git/server.py:144
def git_log(repo: git.Repo, max_count: int = 10, start_timestamp: Optional[str] = None, end_timestamp: Optional[str] = None) -> list[str]:
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/sequentialthinking/lib.ts:18
private disableThoughtLogging: boolean;
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/sequentialthinking/lib.ts:21
this.disableThoughtLogging = (process.env.DISABLE_THOUGHT_LOGGING || "").toLowerCase() === "true";
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

Disabled or suppressed security logging

medium

Detected patterns that disable, silence, or suppress logging or audit trails. Disabling security logging can mask malicious activity and hinder incident investigation.

src/sequentialthinking/lib.ts:69
if (!this.disableThoughtLogging) {
How to fix

Ensure security-related logging is always enabled in production. Never suppress audit trails or security event logs.

URL construction from user input

medium

Building URLs by concatenating or interpolating user input without an allowlist check enables SSRF via host manipulation.

src/everything/resources/templates.ts:127
new URL(`${blobUriBase}/${resourceId}`);
How to fix

Do not construct URLs from unvalidated user input. Use a URL allowlist or domain restriction.

HTTP request with unvalidated URL parameter

high

Passing user-controlled variables directly to fetch, axios, or http.get without URL validation enables SSRF attacks.

src/everything/tools/gzip-file-as-resource.ts:190
const response = await fetch(url, { signal: controller.signal });
How to fix

Validate and sanitize all URLs before making HTTP requests. Use an allowlist of permitted domains.

Dangerous URL schema usage

critical

file://, gopher://, dict://, and other non-HTTP schemas can be exploited for SSRF.

src/filesystem/roots-utils.ts:15
const rawPath = rootUri.startsWith('file://') ? fileURLToPath(rootUri) : rootUri;
How to fix

Only allow http:// and https:// URL schemas. Validate URL schemas before making requests.

Remove hardcoded secrets from source code. Use environment variables or a secrets manager.

Server route without authentication middleware

medium

HTTP endpoints defined without authentication middleware may be accessible to unauthorized users.

src/everything/transports/sse.ts:59
app.post("/message", async (req, res) => {
How to fix

Add authentication middleware to all routes that access or modify data.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

src/everything/transports/sse.ts:26
app.get("/sse", async (req, res) => {
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

src/everything/transports/sse.ts:59
app.post("/message", async (req, res) => {
How to fix

Add rate limiting middleware to all public API endpoints.

No CSRF protection on state-changing endpoint

medium

POST/PUT/DELETE endpoints without CSRF tokens are vulnerable to cross-site request forgery.

src/everything/transports/sse.ts:59
app.post("/message", async (req, res) => {
How to fix

Implement CSRF protection using tokens or SameSite cookies.

Server route without authentication middleware

medium

HTTP endpoints defined without authentication middleware may be accessible to unauthorized users.

src/everything/transports/streamableHttp.ts:60
app.post("/mcp", async (req: Request, res: Response) => {
How to fix

Add authentication middleware to all routes that access or modify data.

Server route without authentication middleware

medium

HTTP endpoints defined without authentication middleware may be accessible to unauthorized users.

src/everything/transports/streamableHttp.ts:137
app.get("/mcp", async (req: Request, res: Response) => {
How to fix

Add authentication middleware to all routes that access or modify data.

Server route without authentication middleware

medium

HTTP endpoints defined without authentication middleware may be accessible to unauthorized users.

src/everything/transports/streamableHttp.ts:165
app.delete("/mcp", async (req: Request, res: Response) => {
How to fix

Add authentication middleware to all routes that access or modify data.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

src/everything/transports/streamableHttp.ts:60
app.post("/mcp", async (req: Request, res: Response) => {
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

src/everything/transports/streamableHttp.ts:137
app.get("/mcp", async (req: Request, res: Response) => {
How to fix

Add rate limiting middleware to all public API endpoints.

Missing rate limiting on endpoint

medium

API endpoints without rate limiting are vulnerable to brute force and denial of service.

src/everything/transports/streamableHttp.ts:165
app.delete("/mcp", async (req: Request, res: Response) => {
How to fix

Add rate limiting middleware to all public API endpoints.

No CSRF protection on state-changing endpoint

medium

POST/PUT/DELETE endpoints without CSRF tokens are vulnerable to cross-site request forgery.

src/everything/transports/streamableHttp.ts:60
app.post("/mcp", async (req: Request, res: Response) => {
How to fix

Implement CSRF protection using tokens or SameSite cookies.

No CSRF protection on state-changing endpoint

medium

POST/PUT/DELETE endpoints without CSRF tokens are vulnerable to cross-site request forgery.

src/everything/transports/streamableHttp.ts:165
app.delete("/mcp", async (req: Request, res: Response) => {
How to fix

Implement CSRF protection using tokens or SameSite cookies.

Missing HSTS headers on HTTP server

medium

An HTTP server is created without configuring Strict-Transport-Security (HSTS) headers. Without HSTS, browsers may allow downgrade attacks from HTTPS to HTTP.

src/everything/transports/sse.ts:75
app.listen(PORT, () => {
How to fix

Add Strict-Transport-Security headers to your server responses. Use a middleware such as helmet to set HSTS automatically.

Missing HSTS headers on HTTP server

medium

An HTTP server is created without configuring Strict-Transport-Security (HSTS) headers. Without HSTS, browsers may allow downgrade attacks from HTTPS to HTTP.

src/everything/transports/stdio.ts:17
const { server, cleanup } = createServer();
How to fix

Add Strict-Transport-Security headers to your server responses. Use a middleware such as helmet to set HSTS automatically.

Missing HSTS headers on HTTP server

medium

An HTTP server is created without configuring Strict-Transport-Security (HSTS) headers. Without HSTS, browsers may allow downgrade attacks from HTTPS to HTTP.

src/everything/transports/streamableHttp.ts:72
const { server, cleanup } = createServer();
How to fix

Add Strict-Transport-Security headers to your server responses. Use a middleware such as helmet to set HSTS automatically.

Missing HSTS headers on HTTP server

medium

An HTTP server is created without configuring Strict-Transport-Security (HSTS) headers. Without HSTS, browsers may allow downgrade attacks from HTTPS to HTTP.

src/everything/transports/streamableHttp.ts:202
const server = app.listen(PORT, () => {
How to fix

Add Strict-Transport-Security headers to your server responses. Use a middleware such as helmet to set HSTS automatically.

Null byte injection in file paths

critical

Null bytes in file paths can truncate path validation and access unintended files.

src/filesystem/path-validation.ts:47
if (dir.includes('\x00')) {
How to fix

Strip null bytes from all file path inputs before processing.

fs operations without path sanitization

medium

File system operations using variables without prior path validation or sanitization may allow traversal attacks.

src/memory/index.ts:73
const data = await fs.readFile(this.memoryFilePath, "utf-8");
How to fix

Add path sanitization before all fs operations. Validate paths against an allowlist of permitted directories.

fs operations without path sanitization

medium

File system operations using variables without prior path validation or sanitization may allow traversal attacks.

src/memory/index.ts:116
await fs.writeFile(this.memoryFilePath, lines.join("\n"));
How to fix

Add path sanitization before all fs operations. Validate paths against an allowlist of permitted directories.