605854 - List pipelines MCP Tool
What does this MR do?
For MCP changes, we are removing the list action from manage_pipeline so list_pipelines take precedence
References
Closes #607881 (closed)
How to test locally (GDK)
-
Enable the MCP server and AI beta features (required for the
/api/v4/mcproute to respond) viarails console:ApplicationSetting.current.update!(mcp_server_enabled: true, instance_level_ai_beta_features_enabled: true) -
Create an OAuth token with the
mcpscope for a user that can read pipelines on a project:token = Doorkeeper::AccessToken.create!( resource_owner_id: User.find_by(username: 'root').id, scopes: 'mcp', expires_in: 2.hours, organization_id: Organizations::Organization.first.id ) puts token.plaintext_token -
Call
tools/listand confirmlist_pipelinesis present (andmanage_pipeline's schema no longer has alist/page/per_pageproperty):curl -s -X POST "http://gdk.test:3000/api/v4/mcp" \ -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":"1"}' | jq '.result.tools[] | select(.name=="list_pipelines")' -
Call
tools/callagainstlist_pipelines, with and without filters:curl -s -X POST "http://gdk.test:3000/api/v4/mcp" \ -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/call","id":"1","params":{"name":"list_pipelines","arguments":{"id":"<namespace/project>","status":"failed"}}}' | jq -
(Optional) Confirm the old path is gone — calling
manage_pipelinewithlist: truenow returns a validation error (list is invalid) instead of listing pipelines.
Alternatively, follow _index.md to connect a real MCP client (Cursor, Claude Desktop via mcp-remote, or the MCP Inspector) to the GDK MCP server and call list_pipelines interactively.