Atlas / MCP servers / traceloop / Openllmetry Js

Openllmetry JsBLOCK

mcp/traceloop/openllmetry-js

Sister project to OpenLLMetry, but in Typescript. Open-source observability for your LLM application, based on OpenTelemetry

Verdict
BLOCK
Grade
F
Trust score
48 /100
Exposed tools
23 22r · 1w · 0d
Transport
—
License
Apache-2.0
Stars
412
01

Overview

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

For Javascript / Typescript

Open-source observability for your LLM application

Get started with Node.js or Next.js »

Slack | Docs | Website

Read from source at commit 7509fa42b18bOBSERVED · 2026-10-12
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. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add node-server-sdk --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} --env AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} --env COHERE_API_KEY=${COHERE_API_KEY} -- npx -y @traceloop/[email protected]
claude-desktop
{
  "mcpServers": {
    "node-server-sdk": {
      "command": "npx",
      "args": [
        "-y",
        "@traceloop/[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "AWS_ACCESS_KEY_ID": "${AWS_ACCESS_KEY_ID}",
        "AWS_SECRET_ACCESS_KEY": "${AWS_SECRET_ACCESS_KEY}",
        "COHERE_API_KEY": "${COHERE_API_KEY}"
      }
    }
  }
}
03

Exposed tools (23)

22 read · 1 write · 0 destructive.

ToolRiskDescription
addwriteAdd two numbers together
attachment-test-datasetreadDataset for testing attachments
calculateDistancereadCalculate distance between two cities
divideNumbersreadUse this function to divide two numbers
error-test-1234readTemporary dataset for error testing
error-test-5678readTemporary dataset for error testing
getWeatherreadGet the current weather for a specified location
get_cities_data_by_countryreadGet city population data by country
get_current_weatherreadGet the current weather in a given location
get_tomorrow_weatherreadGet tomorrow
get_weatherreadReturns current weather
lookupreadLook up data
multiplyreadMultiply two numbers
objectToolreadTool from object
searchreadSearch the web
searchRestaurantsreadSearch for restaurants in a location
sumNumbersreadUse this function to sum two numbers
test-dataset-comprehensive-examplereadComprehensive test dataset
testToolreadTest tool
test_toolread
toolWithStringParamsreadTool with pre-stringified parameters
v4Toolreadv4 format tool
v5Toolreadv5 format tool
04

Trust audit

BLOCKgrade F · trust 48/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

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

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

CRITICALHard-coded secrets · secret.github · CWE-798, CWE-321
packages/sample-app/src/guardrails/guards_integration.ts:101
"Token: ghp_aBcDeFgHiJkLmNoPqRsTuVwXyZ123456789abc",
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/sample-app/src/conversations/sample_chatbot_interactive.ts:123
const result = eval(sanitized);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/sample-app/src/conversations/sample_conversation_id_config.ts:125
const result = eval(sanitized);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/sample-app/src/conversations/sample_with_conversation.ts:116
const result = eval(sanitized);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/instrumentation-anthropic/recordings/Test-Anthropic-instrumentation_3769946143/should-set-attributes-in-span-for-beta-messages-with-thinking_2020128547/recording.har:92
"text": "{\"id\":\"msg_018V3xGyrq6nc25GVuWiaKHx\",\"type\":\"message\",\"role\":\"assistant\",\"model\":\"claude-opus-4-1-20250805\",\"content\":[{\"type\":\"thinking\",\"thinking\":\"This is a very s
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/instrumentation-bedrock/recordings/Test-Amazon-Titan-with-AWS-Bedrock-Instrumentation_4093957746/should-set-request-and-response-attributes-in-span-for-given-prompt-with-streaming-result_3091204960/recording.har:64
"text": "AAAB+wAAAEtwlPWYCzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SnZkWFJ3ZFhSVVpYaDBJam9pWEc1VWFHVWdabTkxY2lCallYSmthVzVoYkN
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/instrumentation-bedrock/recordings/Test-Anthropic-with-AWS-Bedrock-Instrumentation_3427560822/should-set-request-and-response-attributes-in-span-for-given-prompt-with-streaming-result_3091204960/recording.har:64
"text": "AAAArwAAAEt2W082CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5SmpiMjF3YkdWMGFXOXVJam9pSUZSb1pTSXNJbk4wYjNCZmNtVmhjMjl1SWp
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/instrumentation-bedrock/recordings/Test-Cohere-with-AWS-Bedrock-Instrumentation_859624008/should-set-request-and-response-attributes-in-span-for-given-prompt-with-streaming-result_3091204960/recording.har:64
"text": "AAAFowAAAEvjZjOECzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5Sm5aVzVsY21GMGFXOXVjeUk2VzNzaVptbHVhWE5vWDNKbFlYTnZiaUk2SWt
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
packages/instrumentation-bedrock/recordings/Test-Meta-with-AWS-Bedrock-Instrumentation_2354778931/should-set-request-and-response-attributes-in-span-for-given-prompt-with-streaming-result_3091204960/recording.har:64
"text": "AAAA3wAAAEuPia/5CzpldmVudC10eXBlBwAFY2h1bmsNOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJieXRlcyI6ImV5Sm5aVzVsY21GMGFXOXVJam9pWEc0aUxDSndjbTl0Y0hSZmRHOXJaVzVmWTI
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
packages/ai-semantic-conventions/.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
packages/instrumentation-anthropic/.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
packages/instrumentation-bedrock/.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
packages/instrumentation-chromadb/.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/ai-semantic-conventions/eslint.config.cjs:2
const rootConfig = require("../../eslint.config.cjs");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/instrumentation-anthropic/eslint.config.cjs:2
const rootConfig = require("../../eslint.config.cjs");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/instrumentation-bedrock/eslint.config.cjs:2
const rootConfig = require("../../eslint.config.cjs");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/instrumentation-chromadb/eslint.config.cjs:2
const rootConfig = require("../../eslint.config.cjs");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/instrumentation-cohere/eslint.config.cjs:2
const rootConfig = require("../../eslint.config.cjs");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/instrumentation-qdrant/tests/instrumentation.test.ts:77
url: "http://127.0.0.1:6333",
LOWContainer / deploy · priv.container · CWE-250, CWE-16
.github/workflows/README:14
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@apidevtools/swagger-parser, @types/node, openapi-types, openapi-typescript, ts-node, @commitlint/cli, @commitlint/config-conventional, @eslint/eslintrc
Why it matters. 31 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/ai-semantic-conventions/package.json
@opentelemetry/api, @opentelemetry/semantic-conventions
Why it matters. 2 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/instrumentation-anthropic/package.json
@opentelemetry/api, @opentelemetry/core, @opentelemetry/instrumentation, @opentelemetry/semantic-conventions, tslib, @anthropic-ai/sdk, @opentelemetry/context-async-hooks, @opentelemetry/sdk-trace-nod
Why it matters. 15 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/instrumentation-bedrock/package.json
@opentelemetry/api, @opentelemetry/core, @opentelemetry/instrumentation, @opentelemetry/semantic-conventions, tslib, @aws-sdk/client-bedrock-runtime, @opentelemetry/context-async-hooks, @opentelemetry
Why it matters. 14 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 7509fa42b18bfull audit observations/trust-audit/mcp-server/traceloop__openllmetry-js.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-127509fa42b18bBLOCKF48first audit
06

Questions

What is the @traceloop/instrumentation-mcp MCP server?

Sister project to OpenLLMetry, but in Typescript. Open-source observability for your LLM application, based on OpenTelemetry

What tools does @traceloop/instrumentation-mcp expose?

23 in total: 22 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @traceloop/instrumentation-mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (48/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does @traceloop/instrumentation-mcp need?

It reads ANTHROPIC_API_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, COHERE_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, OPENAI_API_KEY, PINECONE_API_KEY, TOGETHER_API_KEY, TRACELOOP_API_KEY and TRACELOOP_ENRICH_TOKENS from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

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

Advertisement