A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
SDK for Copilot Agent Engines
NOTE: This is a library that is used internally for certain integrations. It is not a supported integration path, preview, or released product.
SDK for building engines on the GitHub Copilot agent platform.
The Copilot Engine SDK provides everything you need to build an engine that runs on the GitHub Copilot agent platform:
report_progress and reply_to_comment toolsUntil this package is published to a package registry, install it directly from GitHub:
{
"dependencies": {
"@github/copilot-engine-sdk": "github:github/copilot-engine-sdk#main"
}
}
Then run npm install.
For local development with a cloned copy of the SDK:
# In the SDK directory — register for linking and build
cd copilot-engine-sdk
npm link
# In your engine directory — link to local SDK
cd ../your-engine
npm link @github/copilot-engine-sdk
Changes to the SDK source are reflected immediately after running npm run build in the SDK directory.
import {
PlatformClient,
cloneRepo,
finalizeChanges,
createEngineMcpServer,
} from "@github/copilot-engine-sdk";
// Initialize the platform client for event reporting
const platform = new PlatformClient({
apiUrl: process.env.GITHUB_PLATFORM_API_URL!,
jobId: process.env.GITHUB_JOB_ID!,
token: process.env.GITHUB_PLATFORM_API_TOKEN!,
});
// Clone the target repository
const repoLocation = cloneRepo({
serverUrl: "https://github.com",
repository: "owner/repo",
gitToken: process.env.GITHUB_GIT_TOKEN!,
branchName: "copilot/fix-issue-123",
commitLogin: "copilot[bot]",
commitEmail: "copilot@github.com",
});
// Send events to the platform
await platform.sendAssistantMessage({
turn: 1,
callId: "call-123",
content: "I'll help you with that.",
toolCalls: [],
});
// Finalize and push any remaining changes
finalizeChanges(repoLocation, "Apply fixes");
The main client for communicating with the platform API. Handles event reporting, progress updates, and history persistence.
const platform = new PlatformClient({
apiUrl: string; // Platform API URL
jobId: string; // Job identifier
token: string; // API authentication token
nonce?: string; // Optional job nonce
});
Event Methods:
sendAssistantMessage(opts) — report an assistant response with optional tool callssendToolMessage(opts) — report a tool result messagesendToolExecution(opts) — report a tool call and its resultsendModelCallFailure(opts) — report a model invocation failuresendTruncation(opts) — report context truncationsendResponse(opts) — report a final responseProgress Methods:
sendReportProgress(opts) — update PR title and descriptionsendCommentReply(opts) — reply to a PR commentHistory Methods:
sendRawProgress(payloads) — send raw progress payloads (used for session history persistence)fetchProgress(opts) — retrieve previously stored progress recordsSecure git operations with credential handling via http.extraHeader (tokens never appear in URLs or process listings).
import { cloneRepo, commitAndPush, finalizeChanges } from "@github/copilot-engine-sdk";
// Clone a repository with branch setup
const repoPath = cloneRepo({
serverUrl: string; // e.g., "https://github.com"
repository: string; // "owner/repo"
gitToken: string; // installation token
branchName: string; // branch to checkout or create
commitLogin: string; // git author name
commitEmail: string; // git author email
cloneDir?: string; // default: "/tmp/workspace"
});
// Commit and push changes (force push for engine-owned branches)
const result = commitAndPush(repoPath, "commit message");
// Finalize: commit + push any remaining uncommitted changes (non-fatal)
finalizeChanges(repoPath, "final commit message");
Branch handling:
git ls-remote to distinguish "branch not found" from auth/network errorsThe SDK includes an MCP server that can be used with any LLM SDK that supports the Model Context Protocol.
Tools provided:
report_progress — commits changes and updates the PR description with a progress checklistreply_to_comment — replies to a PR review commentimport { createEngineMcpServer, startEngineMcpServer } from "@github/copilot-engine-sdk";
const server = createEngineMcpServer({
workingDir: "/path/to/repo",
push: true, // push commits to remote (default: true)
platformClient: platform, // optional: enables PR description updates
logFile: "/tmp/mcp.log", // optional: log file path (default: /tmp/mcp-server.log)
});
// Start as STDIO MCP server
await startEngineMcpServer(server);
Standalone usage (spawned as a child process):
node dist/mcp-server.js /path/to/working-directory
Discover user-configured MCP servers passed to the engine via the platform.
import { discoverMCPServers, isMCPProxyAvailable } from "@github/copilot-engine-sdk";
// Check if MCP proxy is available
if (isMCPProxyAvailable()) {
const servers = discoverMCPServers();
// Returns discovered MCP servers the user has configured
}
For advanced usage, create event objects directly:
import {
createAssistantMessageEvent,
createToolMessageEvent,
createToolExecutionEvent,
createModelCallFailureEvent,
createTruncationEvent,
createResponseEvent,
} from "@github/copilot-engine-sdk";
The SDK includes a CLI tool for testing engines locally without the full platform infrastructure. It simulates the platform API, clones a repo, and runs your engine command.
cd cli && go build ./cmd/engine-cli
engine-cli run "node dist/index.js" \
--repo https://github.com/owner/repo \
--problem-statement "Fix the bug in auth.ts" \
--action fix \
--timeout 5m
The CLI:
See engine-cli run --help for all options.
Engines receive these environment variables from the platform:
| Variable | Description |
|---|---|
GITHUB_JOB_ID | Unique job identifier |
GITHUB_PLATFORM_API_TOKEN | Token for platform API authentication |
GITHUB_PLATFORM_API_URL | Platform API base URL |
GITHUB_JOB_NONCE | Job nonce for request signing |
GITHUB_INFERENCE_TOKEN | Token for LLM inference calls |
GITHUB_INFERENCE_URL | Inference API endpoint |
GITHUB_GIT_TOKEN | Token for git operations |
See CONTRIBUTING.md for local setup, build commands, and pull request guidance.
See SUPPORT.md for how to ask questions or report bugs.
See SECURITY.md for how to report security vulnerabilities.
See LICENSE.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
MCP server integration for DaVinci Resolve Studio
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnos
Browser automation using accessibility snapshots instead of screenshots