Atlas / MCP servers / elgatosf / Elgato MCP Server

Elgato MCP ServerSAFE

mcp/elgatosf/elgato-mcp-server

A Model Context Protocol (MCP) server that provides automation capabilities with Elgato apps.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
11 10r · 0w · 1d
Transport
stdio · streamable-http
License
MIT
Stars
13
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/@elgato/mcp-server) [](https://opensource.org/licenses/MIT)

A Model Context Protocol (MCP) server that bridges AI assistants (like Claude Desktop) with Elgato apps.

Overview

The Elgato MCP Server acts as a protocol bridge between MCP clients and Elgato apps via IPC:

MCP Client  Bridge  Elgato App

Key Features:

  • 🔌 Dynamic Tool Discovery — Automatically discovers and exposes tools from connected Elgato apps via MCP
  • 🚀 Dual Transport Support — stdio (for Claude Desktop) and HTTP (for web clients)
  • 🌐 ngrok Integration — Optional public tunnel for remote access
  • 🔄 Hot Reconnection — Automatically reconnects when apps become available
  • 💻 Cross-Platform — Supports Windows and macOS
  • 📢 Notification Forwarding — Forwards app notifications to connected MCP clients

Installation

# Global installation (recommended)
npm install -g @elgato/mcp-server

# Or with pnpm
pnpm add -g @elgato/mcp-server

Running without Installation

You can run the Elgato MCP Server directly without installing it globally using npx:

# Run with stdio transport (default)
npx -y @elgato/mcp-server@latest

# Run with HTTP transport
npx -y @elgato/mcp-server@latest --http

# Run with HTTP transport on a custom port
npx -y @elgato/mcp-server@latest --http --port 3000

# Run with ngrok tunnel
NGROK_AUTHTOKEN=your_token npx -y @elgato/mcp-server@latest --http --ngrok

# Run with verbose logging
npx -y @elgato/mcp-server@latest --verbose

This is useful for trying out the server without a permanent installation, or for use in CI/CD environments.

Usage

stdio Transport (Default)

For integration with Claude Desktop or other MCP clients using standard I/O:

elgato-mcp-server

##

Read from source at commit 18659d0279dbOBSERVED · 2026-10-10
02

Connect

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.

claude-code
claude mcp add mcp-server -- npx -y @elgato/[email protected]
claude-desktop
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@elgato/[email protected]"
      ]
    }
  }
}
03

Exposed tools (11)

10 read · 0 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
app_statusreadCurrent status: uptime, connections, notes count.
bridge_statusreadReports which Elgato apps (e.g. Stream Deck) are currently connected to the bridge and how many of their tools are available. Use this to check whether the Stream Deck app is reachable when expected tools are missing.
echoreadEchoes back the provided text. Useful for basic connectivity testing.
failing_toolreadAlways returns an error. Use to test error handling.
get_weatherreadFetches current or forecast weather from wttr.in. Uses elicitation to ask for city and time range.
notesdestructiveSimple note-taking tool. Add, list, or delete notes.
readmereadDescription of the example app and its tools.
slow_operationreadWaits for N seconds then returns. Use to test timeout behavior.
test_resourcereadA test resource
test_toolreadA test tool
tool1readA tool
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
none-observed
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (12)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
notes
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/__tests__/helpers/testUtils.ts:4
import type { ClientManager } from "../../ClientManager.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/__tests__/helpers/testUtils.ts:5
import type { IpcClient } from "../../IpcClient.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/__tests__/helpers/testUtils.ts:6
import type { McpBridge } from "../../McpBridge.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/__tests__/helpers/testUtils.ts:7
import type { CallToolResponse, McpResource, McpTool, ServerInfo, ToolsListResponse } from "../../types.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/__tests__/integration/http-cors.test.ts:4
import { McpBridge } from "../../McpBridge.js";
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/integration/http-cors.test.ts:81
Origin: "http://127.0.0.1:8080",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/integration/http-cors.test.ts:86
expect(response.headers.get("access-control-allow-origin")).toBe("http://127.0.0.1:8080");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/integration/http-cors.test.ts:105
Origin: "http://127.0.0.1",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/integration/http-cors.test.ts:110
expect(response.headers.get("access-control-allow-origin")).toBe("http://127.0.0.1");
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, @ngrok/ngrok, cors, express, @changesets/cli, @elgato/eslint-config, @elgato/prettier-config, @types/cors
Why it matters. 14 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · review.reviewer_manipulation · CWE-94, CWE-1427
CLAUDE.md
Always use Context7 MCP when I need library/API documentation, code generation, setup or configuration steps without me having to explicitly ask.
Why it matters. CLAUDE.md embeds instructions directing any AI agent processing this repository to automatically invoke specific external MCP tools (Context7 MCP, Auggie mcp) without user prompting, which is an attempt to steer agent behavior beyond the package's stated purpose.
Fix. rewrite it so the instruction says plainly what it does, and asks the user before it acts

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 18659d0279dbfull audit observations/trust-audit/mcp-server/elgatosf__elgato-mcp-server.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1018659d0279dbSAFEB89first audit
06

Questions

What is the @elgato/mcp-server MCP server?

A Model Context Protocol (MCP) server that provides automation capabilities with Elgato apps.

What tools does @elgato/mcp-server expose?

11 in total: 10 read-only, 0 that write, and 1 that can delete or overwrite (notes). Every one is listed on this page with its risk.

Is @elgato/mcp-server safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @elgato/mcp-server need?

No credential environment variables were found in its source, so it appears to need none.

How does @elgato/mcp-server run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @elgato/mcp-server at 0.1.8.

How current is this page?

The grade is for one exact copy of the source (18659d0279db), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement