fg-tracker-mcp@0.49.1
CAUTION· startup onlyPublisher claims: "Servidor MCP (stdio) do FG Tracker: projetos, métricas, traces, issues com commits suspeitos, releases, monitores, provedores externos, logs, guia de instrumentação, identificação/transferência de infraestrutura AWS e roteiros de teste de carga para agent" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Startup only; authenticated tool behavior not tested.- Tested
- server startup over stdio (initialize sent) · every file read, file written and host contacted by what ran
- Not tested
- the tool list (the server exited before answering) · what the tools do when called with real credentials
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
AWS_ACCESS_KEY_IDAWS_SHARED_CREDENTIALS_FILEDATABASE_URLConfiguration, not credentials: AWS_CONFIG_FILE, AWS_DEFAULT_REGION, AWS_PROFILE, AWS_REGION, CDK_OUT, DOC_PATH, FG_TRACKER_ENV, FG_TRACKER_KEY, FG_TRACKER_RELEASE, FG_TRACKER_URL, GUARD_PATH, LOCK_PATH, MODE, NEXT_PUBLIC_API_URL, NEXT_PUBLIC_APP_ENV, NEXT_PUBLIC_FG_TRACKER_PUBLIC_KEY, NEXT_PUBLIC_FG_TRACKER_URL, NEXT_PUBLIC_RELEASE, PATCH_PATH, PLACEHOLDER_KEY, VITE_API_URL, VITE_FG_TRACKER_PUBLIC_KEY, VITE_FG_TRACKER_URL, VITE_RELEASE, WEB_ORIGINS- Where it talks to
- no vendor host named in the codeAlso fortground.com.br, exemplo.com, suaempresa.com.br, site.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- the tool list (the server exited before answering) · what the tools do when called with real credentials
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names fortground.com.br, exemplo.com, suaempresa.com.br, site.com as well as its own vendor. The guard injects AWS_ACCESS_KEY_ID, AWS_SHARED_CREDENTIALS_FILE, DATABASE_URL only into requests to the host you bind (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; startup only; authenticated tool behavior not tested) on 2026-11-14 and scored it 73/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 45 s · 2 scenarios · 0 deviationsStatic findings
* lê do ambiente e `tracker_write_env` a grava no .env sem passar pela conversa.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…own\` / \`onClose\`). 7. **Variáveis de ambiente.** As variáveis já estão no \`.env\` (passo 4). Acrescente só os nomes ao \`.env.example\`, sem valores. Para o CI…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Perfis de ~/.aws/config e ~/.aws/credentials (respeita AWS_CONFIG_FILE / AWS_SHARED_CREDENTIALS_FILE) + AWS_PROFILE. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ais locais)', description: 'Somente leitura e local: lista os perfis de ~/.aws/config e ~/.aws/credentials (+ AWS_PROFILE e a cadeia padrão), chama sts:GetCal…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Local bounded inspection: never read .env, credentials, lockfile contents or execute project code. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.: '# grave com tracker_write_env { projectId, projectPath, file: ".env" }: a chave não passa pela conversa';Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… description: 'Somente leitura e local: lista os perfis de ~/.aws/config e ~/.aws/credentials (+ AWS_PROFILE e a cadeia padrão), chama sts:GetCallerIdentity em cada um (até …Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…a conversa: \`tracker_write_env { projectId, projectPath, file }\` a grava no \`.env\` local (modo 0600, no \`.gitignore\`) e \`tracker_set_ci_secret\` no secret do…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…sar pela conversa.** Chame \`tracker_write_env { projectId, projectPath, file: ".env" }\` para cada app servidor: o MCP lê a chave de servidor \`fgsk_\` e grava \`F…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Perfis de ~/.aws/config e ~/.aws/credentials (respeita AWS_CONFIG_FILE / AWS_SHARED_CREDENTIALS_FILE) + AWS_PROFILE. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.return ['```bash', '# .env (fora do Git)', write, `FG_TRACKER_KEY=${PLACEHOLDER_KEY}`, `FG_TRACKER_URL=${input.endpoint}`, '```'].join('\n');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…. O código lê a chave de servidor de \`process.env.FG_TRACKER_KEY\`: grave-a no .env do app com \`tracker_write_env\` (exige papel owner/admin e, com token pessoal,…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.0. \`infra_detect_environments { profiles?, includeRegions? }\` — perfis do \`~/.aws\` → conta (STS), ambiente sugerido e regiões em uso (local, somente leitura).Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Local bounded inspection: never read .env, credentials, lockfile contents or execute project code. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.? `# grave com tracker_write_env { projectId: "${input.projectId}", projectPath, file: ".env" }: a chave não passa pela conversa`Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Perfis de ~/.aws/config e ~/.aws/credentials (respeita AWS_CONFIG_FILE / AWS_SHARED_CREDENTIALS_FILE) + AWS_PROFILE. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Perfis de ~/.aws/config e ~/.aws/credentials (respeita AWS_CONFIG_FILE / AWS_SHARED_CREDENTIALS_FILE) + AWS_PROFILE. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…e do SDK. Não executa o app: se não houver cdk.out, peça ao usuário para rodar `npx cdk synth` (ou rode com aprovação) e chame de novo.', inputSchema: { …Fix: Pin versions and sources; vendor anything fetched at install time.const envFiles = files.filter((file) => /^\.env(\.[A-Za-z0-9_-]+)*$/.test(basename(file))).slice(0, 20);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… order = await findOrder(request.params.id);', features.has('pino') ? " request.log.info({ orderId: request.params.id }, 'pedido consultado');" : logLine(features, ' ', 'request.params.id'), hasDatabase(features) ? " return order ?? reply.…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.path: '.env.production',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…vem do CloudFormation sintetizado; sem \`cdk.out\`, peça aprovação para rodar \`npx cdk synth\` (não implanta nada) e repita. 5. **Confirmar recursos** — proponha o qu…Fix: Pin versions and sources; vendor anything fetched at install time./** Quem carrega o `.env`: o SDK lê `process.env` quando o tracker é criado, no import. */Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…some((item) => item.gitignored === false) ? 'A chave de servidor fgsk_ está num .env fora do .gitignore.' : 'Chave de servidor fgsk_ no .env local, ignorado pelo Gi…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const key = p.apiKey ? `apiKey (browser-only stk_) ${p.apiKey}` : 'apiKey (browser-only) não devolvida; para servidor, tracker_write_env grava a fgsk_ no .env (owner/admin e ingest_key:read)';Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…CORS, ...NEXT_OPERATIONS], env: SERVER_ENV, envNote: 'O Next carrega o `.env*` sozinho em `next dev`, `next build` e `next start`. Em produção, defina `FG_T…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…, status: 'todo', tool: 'tracker_scan_repo', detail: 'Grave fg-tracker.inventory.json, revise achados e colisões e envie uma app com serviço/ambiente/release/revisão exatos (upload exige projects:write). Use o recibo em tracker_coverage_re…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.const NEXT_BROWSER_ENV_NOTE = 'O Next embute no build as variáveis `NEXT_PUBLIC_*` do `.env*` ou do ambiente do CI: o que estiver nelas é público.';Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* candidatos a produtores de artefato. Dos `.env`, só lê as linhas FG_TRACKER_* e devolveFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…Grava fg-tracker.inventory.json revisável. Não executa código do projeto nem lê .env; biblioteca no disco não comprova adapter ativo. Estático/heurístico nunca é co…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.profile: z.string().optional().describe('Perfil do ~/.aws (default: cadeia padrão de credenciais)'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.profile: z.string().min(1).optional().describe('Perfil do ~/.aws da conta (usado na detecção de regiões e no comando de deploy)'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.' run: npx fg-tracker-release deploy --release ${{ github.sha }}',Fix: Pin versions and sources; vendor anything fetched at install time.// .env: só as linhas FG_TRACKER_* (e chaves fgsk_ em variáveis públicas); nunca o valor.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ok. ${fw} ${proj} ## Plano 1. **Detectar framework e logger.** Leia \`package.json\` (dependências: express, @nestjs/core, next, fastify, koa; pino, winston; pg, postgres, drizzle-orm, kysely, knex) e o ponto de entrada (\`src/main.ts\`, \…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.profile: z.string().optional().describe('Perfil do ~/.aws para ler os outputs'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…) await tracker.shutdown(); // no SIGTERM \`\`\` No deploy: \`npx --yes -p ${pinned('fg-tracker-sdk')} fg-tracker-release --service minha-app --previou…Fix: Pin versions and sources; vendor anything fetched at install time.…timeout devolver o mesmo projeto. Nunca devolve a chave de servidor: grave-a no .env com tracker_write_env. Com token pessoal, exige "Projetos: criar e editar" e um…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.apiKeyIncluded: z.boolean().describe('Sempre false desde a 0.22: a chave de servidor vai para o .env por tracker_write_env'),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose./** Diretórios cdk.out conhecidos a partir do app (cdk.json `output`, padrão `cdk.out`). */Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.… return `\n\n> O npm tem versão mais nova: ${items}. ${mcp ? 'Atualize o MCP (`npx -y fg-tracker-mcp@latest`) para receber as receitas testadas com ela; até lá, ' : …Fix: Pin versions and sources; vendor anything fetched at install time.… (fg-tracker-release deploy --release <sha>), guard do CI, infra/fg-tracker.lock.json e README. Não escreve arquivos locais, mas chama uma rota POST da API (sessão de owner/admin): não é uma ferramenta somente leitura.', …Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…CDK', description: 'Lê o CloudFormation sintetizado do app CDK (manifest.json + *.template.json do `cdk.out`, inclusive `output` customizado no cdk.json) e envia ao FG Tracker os serviços e o fluxo entre eles: API Gateway → Lambda, SQS → L…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…> s.name).join(', ')}. No handover, o CI passa a construir artefatos e chamar \`npx fg-tracker-release deploy --release <sha>\`.`); for (const w of a.warnings) li…Fix: Pin versions and sources; vendor anything fetched at install time.export const CODE_DEPLOY_COMMAND = 'npx fg-tracker-release deploy --release <sha>';Fix: Pin versions and sources; vendor anything fetched at install time.'Antes do commit: revise o diff (`git diff`), rode `npx cdk ls`/`cdk synth` e os testes do repositório.',Fix: Pin versions and sources; vendor anything fetched at install time.'3. Confira: `npx cdk ls` não lista os stacks transferidos e `node scripts/fg-tracker-guard.mjs` passa.',Fix: Pin versions and sources; vendor anything fetched at install time.path: '.env',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ess/Fastify/Koa, Nest, Next, jobs, dependências e CI. Grava fg-tracker.inventory.json revisável. Não executa código do projeto nem lê .env; biblioteca no disco não comprova adapter ativo. Estático/heurístico nunca é confirmação runtime. Co…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.path: '.env.production',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… = 'O tracker lê `process.env` quando é criado, no primeiro import: carregue o `.env` antes do app, com `node --env-file=.env dist/server.js` (Node ≥ 20.6; no Nest,…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."build": "tsc -p tsconfig.json && chmod +x dist/cli.js",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.envNote: 'O Vite embute no build as variáveis `VITE_*` do `.env.production` ou do ambiente do CI: o que estiver nelas é público.',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…passa pela conversa. tracker_write_env e tracker_set_ci_secret a gravam direto (.env local, GitHub ou AWS) e devolvem só o fingerprint; não leia nem mostre .env, ch…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.….json).', analysis.cdkApps.length ? `Rode \`npx cdk synth\` em ${analysis.cdkApps.map((app) => `\`${app.dir || '.'}\``).join(', ')}…Fix: Pin versions and sources; vendor anything fetched at install time.…filtros). A chave de servidor fgsk_ não sai daqui: tracker_write_env a grava no .env.', inputSchema: { organizationId: z.string().regex(/^(none|…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.'Suba o app com o `.env` e faça algumas requisições reais (inclusive uma que consulte o banco, se houver).',Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for fg-tracker-mcp@0.49.1 as of 2 h ago. This is the package itself, not its dependencies.
What would make this Verified
7 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim fortground: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- References a credential file in the home directory≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.