From 72556af24c2bb73e610e2d1b85d75ab1642ba468 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Mon, 2 Mar 2026 12:53:11 +0100 Subject: [PATCH] fix(mcp): handle gitea api envelope responses and add safety checks --- packages/gitea-mcp/src/index.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/gitea-mcp/src/index.ts b/packages/gitea-mcp/src/index.ts index 1941657..1784ec8 100644 --- a/packages/gitea-mcp/src/index.ts +++ b/packages/gitea-mcp/src/index.ts @@ -90,17 +90,18 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { params: { limit }, }); - const runs = runsResponse.data; + const runs = (runsResponse.data.workflow_runs || []) as any[]; const enhancedRuns = await Promise.all( runs.map(async (run: any) => { try { const jobsResponse = await giteaClient.get(`/repos/${owner}/${repo}/actions/runs/${run.id}/jobs`); + const jobs = (jobsResponse.data.jobs || []) as any[]; return { id: run.id, name: run.name, status: run.status, created_at: run.created_at, - jobs: jobsResponse.data.map((job: any) => ({ + jobs: jobs.map((job: any) => ({ id: job.id, name: job.name, status: job.status, @@ -125,13 +126,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { const { owner, repo, run_id } = request.params.arguments as any; try { const jobsResponse = await giteaClient.get(`/repos/${owner}/${repo}/actions/runs/${run_id}/jobs`); - const jobs = jobsResponse.data; + const jobs = (jobsResponse.data.jobs || []) as any[]; const logs = jobs.map((job: any) => ({ job_id: job.id, job_name: job.name, status: job.status, conclusion: job.conclusion, - steps: job.steps.map((step: any) => ({ + steps: (job.steps || []).map((step: any) => ({ name: step.name, status: step.status, conclusion: step.conclusion