Skip to content

Commit 7330b42

Browse files
committed
feat: tell MCP which porject it should use
1 parent f9e0eb5 commit 7330b42

2 files changed

Lines changed: 18 additions & 5 deletions

File tree

apps/twig/src/main/services/agent/service.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -347,12 +347,20 @@ export class AgentService extends TypedEventEmitter<AgentServiceEvents> {
347347
return servers;
348348
}
349349

350+
private buildPostHogSystemPrompt(credentials: Credentials): {
351+
append: string;
352+
} {
353+
return {
354+
append: `PostHog context: use project ${credentials.projectId} on ${credentials.apiHost}. When using PostHog MCP tools, operate only on this project.`,
355+
};
356+
}
357+
350358
private getPostHogMcpUrl(apiHost: string): string {
351-
if (
352-
apiHost.includes("localhost") ||
353-
apiHost.includes("127.0.0.1") ||
354-
!app.isPackaged
355-
) {
359+
const overrideUrl = process.env.POSTHOG_MCP_URL;
360+
if (overrideUrl) {
361+
return overrideUrl;
362+
}
363+
if (apiHost.includes("localhost") || apiHost.includes("127.0.0.1")) {
356364
return "http://localhost:8787/mcp";
357365
}
358366
return "https://mcp.posthog.com/mcp";
@@ -475,6 +483,7 @@ export class AgentService extends TypedEventEmitter<AgentServiceEvents> {
475483
let currentModelId: string | undefined;
476484

477485
if (isReconnect) {
486+
const systemPrompt = this.buildPostHogSystemPrompt(credentials);
478487
const resumeResponse = await connection.extMethod(
479488
"_posthog/session/resume",
480489
{
@@ -486,6 +495,7 @@ export class AgentService extends TypedEventEmitter<AgentServiceEvents> {
486495
persistence: { taskId, runId: taskRunId, logUrl },
487496
}),
488497
...(sdkSessionId && { sdkSessionId }),
498+
systemPrompt,
489499
...(additionalDirectories?.length && {
490500
claudeCode: {
491501
options: { additionalDirectories },
@@ -505,12 +515,14 @@ export class AgentService extends TypedEventEmitter<AgentServiceEvents> {
505515
availableModels = resumeMeta?.models?.availableModels;
506516
currentModelId = resumeMeta?.models?.currentModelId;
507517
} else {
518+
const systemPrompt = this.buildPostHogSystemPrompt(credentials);
508519
const newSessionResponse = await connection.newSession({
509520
cwd: repoPath,
510521
mcpServers,
511522
_meta: {
512523
sessionId: taskRunId,
513524
model,
525+
systemPrompt,
514526
...(executionMode && { initialModeId: executionMode }),
515527
...(additionalDirectories?.length && {
516528
claudeCode: {

packages/agent/src/adapters/claude/claude-agent.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
207207
cwd: params.cwd,
208208
permissionMode: "default",
209209
mcpServers,
210+
systemPrompt: buildSystemPrompt(meta?.systemPrompt),
210211
userProvidedOptions: meta?.claudeCode?.options,
211212
sdkSessionId: meta?.sdkSessionId,
212213
additionalDirectories: meta?.claudeCode?.options?.additionalDirectories,

0 commit comments

Comments
 (0)