mcp: traverse named GraphQL fragments in checkForSecrets
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Go
- Estrellas
- 2
- Forks
- 5
- Merge medio
- 18 h 44 min
- PR fusionados (30 d)
- 22
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de nais/cli
-
Dificultad 4/5 3-5 días Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
nais/cli#679 · 4 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
Issues similares
-
test(fabric): load the TestLoad fixture through config.Service instead of a raw koanf decodeAbiertocleanup hacktoberfest priority: low skill: good first issue testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
hyperledger-labs/fabric-smart-client#2197 ·
Los mantenedores suelen responder en 1 día
-
NTR: [tRNA kinase activity]AbiertoNew term request
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
geneontology/go-ontology#32791 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
aws/amazon-ecs-agent#5177 ·
Los mantenedores suelen responder en 2 días
-
release-followup
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día