# List Projects — GitLab

> List or search GitLab projects, optionally filtering by search term, membership, or ownership. Use this to discover projects (and their IDs) before acting on them with other GitLab actions. Supports ordering by name, path, creation/update…

- Key: `gitlab-list-projects`
- Type: Action (Read-only)
- Version: 0.0.3
- App: GitLab (`gitlab`) — https://pipedream.com/apps/gitlab.md
- This page (HTML): https://pipedream.com/apps/gitlab/actions/list-projects
- Hints: read-only · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/gitlab/actions/list-projects/list-projects.mjs

## Description

List or search GitLab projects, optionally filtering by search term, membership, or ownership. Use this to discover projects (and their IDs) before acting on them with other GitLab actions. Supports ordering by `name`, `path`, creation/update time, star count, last activity, or search `similarity`, plus pagination. The `similarity` order requires a `Search` term. [See the documentation](https://docs.gitlab.com/api/projects/#list-all-projects)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `search` | `string` | No | Return the list of projects with a path, name, or description matching the search criteria (case-insensitive, substring match) |
| `membership` | `boolean` | No | Limit by projects that the current user is a member of |
| `owned` | `boolean` | No | Limit by projects explicitly owned by the current user |
| `simple` | `boolean` | No | Return only limited fields for each project |
| `orderBy` | `string` | No | Order projects by the given field. Default is created_at. Must be similarity only when Search is provided |
| `sort` | `string` | No | Sort order. Default is desc. Must be one of: asc or desc |
| `perPage` | `integer` | No | Number of projects to return per page (max 100) |
| `page` | `integer` | No | The page of results to retrieve |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "gitlab",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "gitlab-list-projects",
  arguments: {
    search: "Search",
    membership: true,
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "gitlab-list-projects",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    gitlab: { authProvisionId: "apn_xxxxxxx" },
    search: "Search",
    membership: true,
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "gitlab-list-projects",
    "configured_props": {
      "gitlab": { "authProvisionId": "apn_xxxxxxx" },
      "search": "Search",
      "membership": true
    }
  }'
```

---

- App: https://pipedream.com/apps/gitlab.md · All apps: https://pipedream.com/apps
