GitHub ACTION
Get Repository Content
Read a file's contents or list a directory in a repository. For a file, the base64 payload is decoded for you and returned as plain text in the
content field. For a directory, returns the list of entries (name, path, type). Provide the repository as an owner/repo string and the path to the file or directory (omit path for the repo root). Use Get Repository first if you need to know the default branch. See the documentation- Action
- Read only
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's GitHub account once, then configure and run Get Repository Content from your backend or agent.
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: "github-get-repository-content",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
github: { authProvisionId: "apn_xxxxxxx" },
repoFullname: "Repository",
path: "Path",
},
})
console.log(result)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": "github-get-repository-content",
"configured_props": {
"github": { "authProvisionId": "apn_xxxxxxx" },
"repoFullname": "Repository",
"path": "Path"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{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": "github",
},
},
},
)
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: "github-get-repository-content",
arguments: {
repoFullname: "Repository",
path: "Path",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
repoFullname Repository | string | The repository in owner/repo format, for example PipedreamHQ/pipedream (not case sensitive). If you pass just a repository name with no owner (e.g. my-repo), the authenticated user is assumed as the owner — convenient for "my repo" requests. Do NOT repeat the repository name as the owner (e.g. my-repo/my-repo); if you don't know the owner, pass only the name or run List Repositories to find it. Required |
path Path | string | The file path or directory to retrieve, e.g. src/index.js or docs/. Defaults to the repository's root directory. Optional |
ref Ref | string | The branch name, tag, or commit SHA to read from. Defaults to the repository's default branch (usually main or master). Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- github-get-repository-content
- Version
- 1.0.3
- App
- GitHub
- Authentication
- OAuth
- Read-only
- Yes
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗