Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@
"integrations/asana",
"integrations/better-stack",
"integrations/braintrust",
"integrations/circleci",
"integrations/elevenlabs",
"integrations/exa",
"integrations/grafana",
Expand Down
29 changes: 29 additions & 0 deletions apps/docs/integrations/circleci.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: CircleCI
description: Inspect CircleCI runs, logs, tests, and artifacts from Roomote tasks.
icon: 'https://api.iconify.design/simple-icons:circleci.svg?color=currentColor'
---

Connect CircleCI when tasks need CI run status, job details, logs, test results,
artifacts, or organization usage data.

## How setup works

A deployment operator connects CircleCI once from **Settings > Integrations**
using OAuth. CircleCI uses dynamic client registration and grants access based
on the projects available to the authorizing account.

This integration uses CircleCI's hosted MCP server. It does not install the
CircleCI CLI MCP, and it does not use CircleCI's deprecated local `npx` server.

## Safer defaults

Roomote enables diagnostic tools by default. Workflow reruns and cancellations
start disabled because they change shared CI state. An admin can opt in to
either tool from **Settings > Integrations > CircleCI > Manage tools**.

## Verify the connection

Start by listing recent runs or reading logs for a failed job. If a project is
missing, confirm that the connected CircleCI account can access it, then
reconnect if its permissions changed.
1 change: 1 addition & 0 deletions apps/docs/integrations/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ from [Personal Settings](/personal-settings).
| <IntegrationName href="/integrations/asana" icon="asana" name="Asana" /> | Project and task context from Asana | Admin connection once |
| <IntegrationName href="/integrations/better-stack" icon="betterstack" name="Better Stack" /> | Monitoring and incident context | Admin connection once |
| <IntegrationName href="/integrations/braintrust" icon="braintrust" name="Braintrust" /> | Prompts, runs, and evaluation context | Enable first, then teammates link accounts |
| <IntegrationName href="/integrations/circleci" icon="circleci" name="CircleCI" /> | CI runs, logs, tests, and artifacts | Admin connection once |
| <IntegrationName href="/integrations/elevenlabs" icon="elevenlabs" name="ElevenLabs" /> | Voice narration for feature-demo videos | Admin connection once |
| <IntegrationName href="/integrations/exa" icon="exa" name="Exa" /> | Keyless web search; optional Agent research | Admin enables; API key optional |
| <IntegrationName href="/integrations/grafana" icon="grafana" name="Grafana" /> | Dashboards, alerting, and monitoring context | Admin connection once |
Expand Down
2 changes: 2 additions & 0 deletions apps/web/src/components/settings/Integrations.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ const DEEP_LINK_ENABLE_DESCRIPTIONS: Record<string, string> = {
'Roomote will be able to inspect monitoring, incidents, and telemetry.',
braintrust:
'Roomote will be able to inspect prompts, evaluations, and AI run history.',
circleci:
'Roomote will be able to inspect CircleCI runs, workflows, jobs, logs, tests, and artifacts. Reruns and cancellations start disabled.',
grafana:
'Roomote will be able to inspect dashboards, alert rules, live alert state, annotations, and data sources.',
granola:
Expand Down
2 changes: 2 additions & 0 deletions apps/web/src/components/system/custom/logos/brand-icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
siAsana,
siBetterstack,
siBraintrust,
siCircleci,
siElevenlabs,
siDependabot,
siDatadog,
Expand Down Expand Up @@ -42,6 +43,7 @@ const SIMPLE_ICONS: Record<string, SimpleIcon> = {
asana: siAsana,
betterstack: siBetterstack,
braintrust: siBraintrust,
circleci: siCircleci,
elevenlabs: siElevenlabs,
dependabot: siDependabot,
datadog: siDatadog,
Expand Down
8 changes: 8 additions & 0 deletions apps/worker/src/mcp/roomote-mcp-server/integration-setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,14 @@ Sentry uses the workspace MCP integration:

Once connected, tasks can inspect Sentry issue and project context, and scheduled Sentry triage automation uses the same read-only MCP connection.

# CircleCI

CircleCI uses OAuth:
1. A deployment operator enables CircleCI from Settings > Integrations.
2. That operator connects CircleCI once for the deployment via OAuth.

Once connected, I can inspect runs, workflows, jobs, logs, tests, artifacts, and usage data for projects available to the connected account. Workflow reruns and cancellations stay disabled until an administrator enables those tools from Manage tools.

# Pylon

Pylon uses OAuth:
Expand Down
7 changes: 7 additions & 0 deletions packages/cloud-agents/src/server/mcp-self-setup/catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ export const MCP_SETUP_INTEGRATION_METADATA: Record<
string,
SetupMcpIntegrationMetadata
> = {
circleci: {
capabilities: [
'Inspect CircleCI runs, workflows, jobs, and step results',
'Read job logs, test results, artifacts, and usage exports',
'Opt in to workflow reruns and cancellations when needed',
],
},
asana: {
capabilities: [
'Inspect Asana workspaces, projects, and tasks',
Expand Down
2 changes: 2 additions & 0 deletions packages/slack/src/mcp-recommendations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ const SLACK_ENABLE_DESCRIPTIONS: Record<string, string> = {
'Roomote will be able to inspect and manage shared email infrastructure.',
braintrust:
'Roomote will be able to inspect prompts, evaluations, and AI run history.',
circleci:
'Roomote will be able to inspect CircleCI runs, workflows, jobs, logs, tests, and artifacts. Reruns and cancellations start disabled.',
linear:
'Roomote will be able to pull issue, project, and roadmap context into tasks.',
monday:
Expand Down
20 changes: 20 additions & 0 deletions packages/types/src/__tests__/mcp-oauth.test.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions packages/types/src/mcp-oauth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,11 @@ export const RESEND_DEFAULT_DISABLED_TOOL_NAMES = [
'update-webhook',
] as const;

export const CIRCLECI_DEFAULT_DISABLED_TOOL_NAMES = [
'rerun_workflow',
'cancel_workflow',
] as const;

/**
* Path prefixes of the API-hosted MCP proxy mounts. URL producers build proxy
* URLs from these, and consumers (e.g. the Fast integration broker) use the
Expand Down Expand Up @@ -652,6 +657,18 @@ export const MCP_INTEGRATIONS: McpIntegration[] = [
instructions:
'Sentry advertises only a few tools directly (find_organizations, find_projects, search_issues, search_events, get_sentry_resource). Reach everything else (issue details, event stack traces, breadcrumbs, tag values, issue events, releases, traces, replays, attachments, monitors, alert rules, docs) by calling search_sentry_tools with a short query, then execute_sentry_tool with the returned tool name and arguments. Which tools exist depends on the access the admin granted when connecting. Treat Sentry as read-only unless the request explicitly asks to change Sentry state: do not resolve, assign, ignore, or otherwise update issues, and do not create or modify projects, teams, DSNs, or monitors on your own initiative.',
},
{
id: 'circleci',
name: 'CircleCI',
url: 'https://mcp.circleci.com/v1/mcp',
description: `Inspect CircleCI runs, workflows, jobs, logs, tests, and artifacts from ${PRODUCT_NAME} tasks`,
icon: 'circleci',
connectionScope: 'deployment',
oauthResource: 'https://mcp.circleci.com/v1/mcp',
defaultDisabledTools: [...CIRCLECI_DEFAULT_DISABLED_TOOL_NAMES],
instructions:
'Use CircleCI to inspect runs, workflows, jobs, logs, tests, artifacts, and usage data. Workflow reruns and cancellations are disabled until an administrator enables them in Manage tools; when enabled, invoke them only for an explicit user request.',
},
{
id: 'pylon',
name: 'Pylon',
Expand Down
8 changes: 8 additions & 0 deletions packages/types/src/mcp-service-detection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@ const X_APP_PATH_REGEX =
/^\/(?:search|explore)(?:\/|$)|^\/i\/(?:lists|communities|spaces)\//;

export const SLACK_MCP_SETUP_SERVICES: SlackMcpSetupServiceDefinition[] = [
{
id: 'circleci',
name: 'CircleCI',
availabilityKind: 'curated_oauth',
hostSuffixes: ['app.circleci.com'],
deploymentSettingsPath: '/integrations',
userSettingsPath: '/settings/personal',
},
{
id: 'asana',
name: 'Asana',
Expand Down
Loading