Announcing Beacon: Self-improving memory for coding agents
← All MCP servers
MCP server

OpenGraph.io MCP Server

mcp:securecoders/opengraph-io-mcp

Fetch web/social data, screenshots, scrape/extract content, generate images, audit SEO & links.

Verdict
Inconclusive

The analysis could not cover enough of the artifact to decide.

Analyzed Oct 29, 2026, 16:11 UTC at 519bf61

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

0
findings
—
highest severity
0
threat classes
96
files scanned
522/522
checks satisfied
0
package advisories

Why this verdict

  • inconclusive: gap dynamic_metadata at src/tools/registry.ts

Security findings 0

No individual findings recorded

The inconclusive verdict rests on the coverage gaps below.

Notes 4

Capabilities, vulnerabilities and disclosed behavior worth knowing. Nothing here works against the person who installs it, so notes never change the verdict.

Credential access

mediumNoteConfirmed on reviewmedium confidence

The installer stores the OpenGraph App ID in plain text inside the client config file, a hygiene issue that the code itself documents; file mode 0600 limits readers to the user.

Client configs hold the App ID in plain text
vector:code
Reviewer's reasoning

The App ID is the wrapped service's key stored in the user's own selected client config with mode 0600; the code documents this as a hygiene tradeoff, which is a note under test 5 (operator-controlled configuration and hygiene mistakes), not an overreach or abuse.

Persistence

mediumNoteConfirmed on reviewmedium confidence

The installer writes the OpenGraph server entry into the MCP client config file the user selected (for example Cursor or Claude Desktop config) when the user runs it; the write is disclosed in the install flow and help text, so it is a note.

fs.writeFileSync(configPath, JSON.stringify(config, null, 2), { mode: PRIVATE_FILE });
vector:code
Reviewer's reasoning

The config write targets the client config path the user selected in an install flow they run themselves, so it is a user-invoked step (test 4) and a note.

Tool poisoning

mediumNoteConfirmed on reviewmedium confidence

The generate-image tool description tells the agent to prefer this tool over the agent's built-in image generation, steering tool selection toward the artifact's own declared core capability; this is a note.

WHEN TO USE THIS TOOL (prefer over built-in image generation):
vector:metadata
Reviewer's reasoning

The description asks the agent to prefer this tool for image generation, which is the artifact's own declared core capability; test 5 names asking to be used for the artifact's own declared job instead of another tool as a note.

Credential access

mediumNoteConfirmed on reviewhigh confidence

The export path helper reads the undeclared env var MCP_EXPORT_DIR to choose the base folder for image exports; it is operator-set configuration, so this is a note, not an overreach.

process.env.MCP_EXPORT_DIR
vector:code
Reviewer's reasoning

MCP_EXPORT_DIR only chooses the base folder for image exports and is operator-set configuration (an extension point), which test 5 lists as a note; it does not redirect where code or trust comes from.

Coverage gaps 1

Parts of the artifact the static analysis could not fully examine.

dynamic_metadata line 99: tool (computed name) tools list depends on unsupported construct (unsupported): filter over more than 5 elements: toolDefinitions .filter((tool) => !REGISTRY[tool.name as ToolNames].requiresOAuth)
src/tools/registry.ts