mcp: traverse named GraphQL fragments in checkForSecrets
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
Direzione di ricerca
Start in internal/mcp/tools/graphql.go with checkForSecrets and validateGraphQLQuery, then trace how parsed documents expose named fragments and how selections are checked against forbiddenTypes. Add coverage for a named fragment with a forbidden field and for fragment spreads, including cycle handling if spreads are resolved recursively. Done when such queries are rejected while safe fragments still pass.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
In internal/mcp/tools/graphql.go, checkForSecrets inspects inline fragments and nested field selections against forbiddenTypes, but only checks whether a *ast.FragmentSpread name contains "secret":
case *ast.FragmentSpread:
// Fragment spreads would need fragment definitions to be fully validated
// For now, we flag any fragment that has "secret" in its name as a heuristic
if strings.Contains(strings.ToLower(sel.Name), "secret") {
return true, fmt.Sprintf("MCP security policy: fragment '%s' may access sensitive data that cannot be accessed via this interface", sel.Name)
}
A query that defines a named fragment (e.g. fragment TeamFields on Team { deploymentKey { key } }) and spreads ...TeamFields passes validateGraphQLQuery and is forwarded by execute_graphql.
Expected behavior
validateGraphQLQuery / checkForSecrets should also inspect doc.Fragments (or resolve *ast.FragmentSpread against doc.Fragments.ForName(sel.Name) with cycle detection) and reject any fragment whose TypeCondition or SelectionSet references forbiddenTypes.
- Lingua principale
- Go
- Stelle
- 2
- Fork
- 5
- Merge medio
- 18h 44m
- PR unite (30g)
- 22
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nais/cli
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
nais/cli#679 · 4 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Billionmail/BillionMail#389 ·
-
good first issue help wanted v3
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
oras-project/oras-go#1621 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
kaimahi-agents/kaimahi#570 ·
I maintainer di solito rispondono entro 1 giorno