Jules MCP Server
This server lets MCP clients (like Claude) programmatically manage Google Jules AI coding sessions and interact with connected repositories.
Create coding sessions with a prompt, target repository, optional title, plan approval requirement, and auto-PR mode
List, retrieve details, and delete coding sessions
Send messages to active sessions to provide feedback or change instructions
Approve pending plans when a session requires plan approval
List and inspect session activities, including plan generation, messages, code diffs, and command outputs
List and get details of connected GitHub repositories, including available branches
Support both markdown and JSON output formats for most tools
Connect via stdio or HTTP transport
Allows listing and inspecting connected GitHub repositories, and creating, managing, and monitoring coding sessions on those repositories via the Jules API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Jules MCP Server Create a Jules session to implement caching for the API"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-jules
MCP (Model Context Protocol) server for Google Jules - the AI coding agent. This server enables LLMs like Claude to interact with Jules API, creating and managing coding sessions programmatically.
Unofficial project. This is an independent, community-built client for the Jules API. It is not affiliated with, sponsored by, or endorsed by Google LLC. "Google" and "Jules" are trademarks of Google LLC. The Jules API is an alpha release and its specifications may change without notice.
Table of Contents
Related MCP server: Jules MCP Server
Architecture
The Jules MCP Server acts as a bridge between MCP-compatible clients and the Jules REST API.
┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ MCP Client │ │ Jules MCP Server │ │ Jules REST API │
│ (Claude, etc)│ ◄──► │ (stdio/HTTP) │ ◄──► │ (googleapis.com) │
└──────────────┘ └──────────────────┘ └──────────────────┘MCP Client: An application like Claude Desktop that supports the Model Context Protocol.
Jules MCP Server: This project, which exposes Jules's capabilities as MCP tools and translates them to Jules API calls.
Jules REST API: The underlying Google API that powers Jules's coding capabilities.
Features
Session Management: Create, list, get, and delete coding sessions
Interactive Communication: Send messages to active sessions and approve plans
Activity Monitoring: Track progress through session activities
Source Management: List and inspect connected GitHub repositories
Dual Transport: Supports both stdio and HTTP transports
Hardened HTTP Transport: Loopback-by-default bind, Host/Origin validation (DNS-rebinding protection), and optional bearer-token authentication
Prerequisites
Node.js 18+
Jules API Key (get from jules.google.com/settings)
Connected GitHub repositories in Jules
Installation
mcp-jules is published on npm as mcp-jules
and installs a mcp-jules command.
# Install globally
npm install -g mcp-jules
# Or run it without installing (recommended for MCP clients)
npx -y mcp-jules --helpThe package requires Node.js 18 or newer and declares no post-install
scripts. npx -y is the most common way to run it, because MCP clients start the
server as a child process.
From source
git clone https://github.com/cipansor/mcp-jules
cd mcp-jules
npm install
npm run build
node dist/index.js --helpQuick Start
Three steps from zero to a working server:
Get an API key. Create one at jules.google.com/settings and make sure at least one GitHub repository is connected to Jules in the Jules web UI.
Export the key. The server refuses to start without it:
export JULES_API_KEY="your-api-key-here"Register the server with your MCP client. For Claude Desktop, add the
mcpServersentry shown in Usage.
Then ask your client to call jules_list_sources - if it returns your
repositories, the wiring works.
Configuration
Environment variables
Variable | Required | Default | Description |
| Yes | - | Jules API key. The server exits with an error when it is missing. |
| No | stdio | Set to |
| No |
| HTTP bind address. Only used by the HTTP transport. |
| No |
| HTTP port. Only used by the HTTP transport. Invalid values are rejected. |
Set the key as an environment variable:
export JULES_API_KEY="your-api-key-here"The key is sent to the Jules API in the x-goog-api-key header and is never
written to disk by this server.
HTTP security variables
These apply only to the HTTP transport. See HTTP transport hardening for how they interact.
Variable | Default | Description |
| unset | When set, |
| unset | Comma-separated |
| loopback origins | Comma-separated |
| unset | Set to |
Security
Manage your JULES_API_KEY with care:
Environment Variables: Always use environment variables to provide the API key. Avoid hardcoding it in source code or configuration files.
No Commits: Never commit your API key or
.envfiles containing keys to version control. The.gitignorefile is configured to ignore.envfiles.Least Privilege: The Jules API key provides full access to your Jules sessions and connected repositories. Keep it secure and rotate it if you suspect it has been compromised.
CI/CD: When using in CI/CD environments (like GitHub Actions), use Secrets to store and inject the API key.
HTTP transport hardening
The HTTP transport can drive mutating Jules tools with your API key, so it is locked down by default:
Loopback by default: the server binds
127.0.0.1. It refuses to bind a non-loopback address unlessMCP_AUTH_TOKENis set andALLOWED_HOSTSlists the hostnames clients will use.ALLOW_INSECURE_HTTP=trueoverrides this refusal and is not recommended.DNS-rebinding protection: the
Hostheader is validated against the allowed hostnames, and the MCP transport rejects requests from origins outsideALLOWED_ORIGINS.Optional authentication: set
MCP_AUTH_TOKENto requireAuthorization: Bearer <token>on/mcp./healthstays unauthenticated.
For example, to expose the server on a trusted LAN:
JULES_API_KEY=your-key \
HOST=0.0.0.0 \
MCP_AUTH_TOKEN=a-long-random-token \
ALLOWED_HOSTS=mcp.internal \
ALLOWED_ORIGINS=https://mcp.internal \
npx mcp-jules --httpALLOWED_ORIGINS must include the origin each browser client sends. If your
clients run on https://app.example.com, add it to the comma-separated list;
requests from origins that are not listed receive 403.
If you deploy behind a reverse proxy, terminate TLS at the proxy and keep
ALLOWED_ORIGINS restricted to the exact origins of your MCP clients.
Do not set ALLOWED_HOSTS to a name that resolves elsewhere while binding
loopback without a token: a tokenless listener only accepts hostnames that
resolve to the local machine.
See GHSA-rgh8-8cv7-4rj9 for the advisory that prompted these controls.
Usage
With Claude Desktop (stdio transport)
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"jules": {
"command": "npx",
"args": ["-y", "mcp-jules"],
"env": {
"JULES_API_KEY": "your-api-key-here"
}
}
}
}With Claude Code (CLI)
You can add this server to Claude Code by running:
claude mcp add jules --env JULES_API_KEY=your-api-key-here -- npx -y mcp-julesCommand Line
# Run with stdio transport
JULES_API_KEY=your-key npx mcp-jules
# Run with HTTP transport (binds 127.0.0.1 by default)
JULES_API_KEY=your-key npx mcp-jules --http
# Custom port for HTTP
JULES_API_KEY=your-key PORT=8080 npx mcp-jules --http
# Expose on a trusted LAN (token + explicit host allowlist required)
JULES_API_KEY=your-key HOST=0.0.0.0 MCP_AUTH_TOKEN=your-token \
ALLOWED_HOSTS=mcp.internal ALLOWED_ORIGINS=https://mcp.internal \
npx mcp-jules --http
# Show help
npx mcp-jules --helpSee HTTP transport hardening for the full list of security-related environment variables.
HTTP Endpoints
The HTTP transport exposes exactly two routes:
Route | Method | Auth | Description |
| POST | Bearer token if | MCP streamable-HTTP endpoint. This is what MCP clients connect to. |
| GET | none | Liveness probe. Returns |
The version in /health is read from package.json at runtime, so it always
matches the published npm version. /health is intentionally unauthenticated so
a container orchestrator can probe it without a token; it exposes no session data.
# Start the HTTP transport
JULES_API_KEY=your-key npx mcp-jules --http
# Probe liveness
curl http://127.0.0.1:3000/healthTool Reference
The server exposes ten tools across three groups. Inputs are validated with a strict schema, so an unknown argument is rejected rather than ignored.
Tool | Group |
| Paginated |
| Sessions | yes | no |
| Sessions | yes | yes |
| Sessions | yes | no |
| Sessions | no | no |
| Sessions | no | no |
| Sessions | no | no |
| Activities | yes | yes |
| Activities | yes | no |
| Sources | yes | yes |
| Sources | yes | no |
Every tool that accepts response_format defaults to markdown and also
accepts json. Paginated tools accept pageSize (1-100, default 20) and
pageToken, and report whether more results are available. In markdown output,
jules_get_activity truncates long artifact bodies — git patches at 5,000
characters and bash output at 2,000 characters — appending ... [truncated].
JSON output is never truncated.
Session Tools
jules_create_session
Creates a new coding session where Jules executes a task on a repository.
Arguments:
prompt(string, required): Task description. Max 10,000 characters.sourceContext(object, required): Repository info (e.g.,{ "source": "sources/github-owner-repo", "githubRepoContext": { "startingBranch": "main" } }).githubRepoContextis optional.title(string, optional): Session title. Max 200 characters.requirePlanApproval(boolean, optional): If Jules should wait for plan approval.automationMode(string, optional): UseAUTO_CREATE_PRto automatically create a PR on completion.response_format(string, optional): Response format, eithermarkdown(default) orjson.
Example Response (Markdown):
## Session: Add auth tests **ID:** 1234567 **State:** ⏳ QUEUED **Prompt:** Add unit tests for the authentication module **URL:** https://jules.google/session/1234567
jules_list_sessions
Lists all your coding sessions.
Arguments:
pageSize(number, optional): Max results per page (1-100, default: 20).pageToken(string, optional): Token for the next page.response_format(string, optional): Format for the response output.
Example Response (JSON):
{ "sessions": [ { "id": "1234567", "title": "Add auth tests", "state": "IN_PROGRESS", "createTime": "2023-10-27T10:00:00Z" } ], "total": 1, "hasMore": false }
jules_get_session
Retrieves full details for a specific session, including current state, URL, and outputs (like PR links) if completed.
Arguments:
sessionId(string, required): The ID of the session.response_format(string, optional): 'markdown' (default) or 'json'.
Example Response (Markdown):
## Session: Add auth tests **ID:** 1234567 **State:** ✅ COMPLETED **Prompt:** Add unit tests for the authentication module **URL:** https://jules.google/session/1234567 **Created:** Oct 27, 2023, 10:00 AM **Updated:** Oct 27, 2023, 10:45 AM ### Outputs **Pull Request:** [Add auth unit tests](https://github.com/myorg/myrepo/pull/42) > This PR adds comprehensive unit tests for the auth module.Example Response (JSON):
{ "id": "1234567", "title": "Add auth tests", "prompt": "Add unit tests for the authentication module", "state": "COMPLETED", "url": "https://jules.google/session/1234567", "outputs": [ { "pullRequest": { "title": "Add auth unit tests", "url": "https://github.com/myorg/myrepo/pull/42", "description": "This PR adds comprehensive unit tests for the auth module." } } ], "createTime": "2023-10-27T10:00:00Z", "updateTime": "2023-10-27T10:45:00Z" }
jules_delete_session
Deletes a coding session. This cannot be undone.
Arguments:
sessionId(string, required): The ID of the session.
jules_send_message
Sends a message to an active session. Use this to provide feedback, answer Jules's questions, or change instructions mid-session.
Arguments:
sessionId(string, required): The ID of the session.prompt(string, required): Your message.
jules_approve_plan
Approves a pending plan. Required if requirePlanApproval was set to true during session creation. Once approved, Jules begins execution.
Arguments:
sessionId(string, required): The ID of the session.
Activity Tools
jules_list_activities
Lists all activities (events, plan generation, code changes, messages) for a session.
Arguments:
sessionId(string, required): The ID of the session.pageSize(number, optional): Results per page. Must be between1and100. Defaults to the schema-defined default when omitted.pageToken(string, optional): Pagination token.response_format(string, optional): Response format for the returned activities.
jules_get_activity
Gets detailed information about a specific activity. This is how you view code diffs (changeSet), bash outputs, or full plan details.
Arguments:
sessionId(string, required): The ID of the session.activityId(string, required): The activity ID.response_format(string, optional): Controls the format of the returned activity details.
Note: in markdown output, a git patch is truncated to 5,000 characters and bash output to 2,000 characters, each ending with
... [truncated]. Useresponse_format: "json"to receive the full, untruncated payload.
Source Tools
jules_list_sources
Lists GitHub repositories connected to your Jules account via the Jules web UI.
Arguments:
filter(string, optional): Filter by name (e.g.,name=sources/github-owner-repo).pageSize(number, optional): Results per page.pageToken(string, optional): Pagination token.response_format(string, optional): Response format for the returned data.
jules_get_source
Gets details about a specific connected repository, including all available branches.
Arguments:
sourceId(string, required): The source ID (e.g.,github-owner-repo). This is not thesources/...resource name used bysourceContext.source.response_format(string, optional): Controls the response format returned by the tool.
Real-World Examples
Complete Workflow: Implementing a Feature
Find the repository ID:
jules_list_sources()-> returnssources/github-acme-webapp.Start the session:
jules_create_session(prompt="Add a search bar to the header", sourceContext={"source": "sources/github-acme-webapp"}, requirePlanApproval=true)-> returns sessionId7890.Check for a plan:
jules_list_activities(sessionId="7890"). Look for an activity with "Plan Generated".Review and approve:
jules_get_activity(sessionId="7890", activityId="plan_activity_id"). If the plan looks good:jules_approve_plan(sessionId="7890").Monitor progress: Periodically call
jules_get_session(sessionId="7890")to checkstateorjules_list_activitiesto see recent actions.Review the result: Once state is
COMPLETED, checkjules_get_sessionfor the Pull Request URL.
Session States
State | Description |
| Session created, waiting for processing. |
| Jules is analyzing the codebase and creating a plan. |
| Plan is ready and requires your approval to proceed. |
| Jules has a question or needs more information. |
| Jules is executing the task/plan. |
| Execution has been temporarily halted. |
| Task finished successfully (check for PR link). |
| Task failed. Check activities for error details. |
Troubleshooting
Error / Symptom | Meaning | Resolution |
| Missing API key | Export |
401 Unauthorized | Invalid API Key | Check your |
403 Forbidden | Permission Denied | Ensure your API key has access to the requested resource or repository. |
404 Not Found | Resource Missing | Verify the |
429 Too Many Requests | Rate Limited | You've exceeded the API rate limit. Wait a few minutes before retrying. |
500 / 503 | Jules API Error | The Jules service is experiencing issues. Try again later or check Jules Status. |
| DNS / connectivity | Check your internet connection, DNS, or proxy settings. |
| Transport failure | Usually a timeout ( |
| A markdown artifact body exceeded its limit (5,000 chars for a git patch, 2,000 for bash output) | Re-run |
| Origin not allowed | Add the client origin to |
Refuses to bind a non-loopback | Hardening guardrail | Set both |
Server exits with an invalid | Bad configuration |
|
Errors are returned to the MCP client as tool errors; the original Jules API
status code is preserved in the message as Jules API Error (<status>): ....
Development
# Install dependencies
npm install
# Build (emits dist/ from src/)
npm run build
# Type-check without emitting files
npm run check
# Lint source files
npm run lint
# Check formatting
npm run format:check
# Run the test suite (Node's built-in test runner)
npm test
# Development mode (watch)
npm run devThe build compiles TypeScript to dist/, which is what the mcp-jules bin and
the npm tarball ship. dist/ is generated, so edit files under src/ only. The
CI workflow runs the format check, lint, type-check and tests on every push and
pull request.
Contributing
We welcome contributions! See CONTRIBUTING.md for more details.
Check Issues: Look for existing issues or open a new one to discuss your proposed change.
Local Setup: Follow the Installation steps.
Topic Branches: Always work on a new branch (
git checkout -b feature/my-feature).Testing: If adding a tool, ensure it's tested. Run
npm run checkandnpm run lint.Documentation: Update the README if you change tool behavior or add new features.
Pull Requests: Submit a PR with a clear description of the changes.
Project hygiene and community documents:
Releasing
Releases are driven by a git tag. The tag, the package.json version and the
npm version must all agree, so the version is bumped first and the tag is pushed
at the merge commit:
Bump the version:
npm version <major.minor.patch> --no-git-tag-version.Merge to
main, then tag the merge commitv<version>and push the tag.
Pushing a v*.*.* tag runs the release workflow,
which verifies the tag matches package.json, builds, attaches the tarball to a
GitHub release, and publishes to npm with provenance via Trusted Publishing.
One-time npm setup
Publishing uses Trusted Publishing,
so the release workflow authenticates with a short-lived OIDC token and no
NPM_TOKEN secret is stored in the repository. Trusted publishing can only be
attached to a package that already exists in the registry, so the package was
created once with a staged publish before the first tag-driven release.
1. Bootstrap the package (already done for mcp-jules). A brand-new package
is created with staged publishing,
which needs npm CLI >= 11.15.0 and Node >= 22.14.0:
npm stage publish --access public # uploads the tarball to the stage queue
npm stage list # wait for status: staged, then copy the id
npm stage approve <stage-id> # needs 2FAStaging a package that does not exist yet creates a 0.0.0-stage placeholder so
the name is reserved and the trusted publisher can be attached; the real version
goes live only after npm stage approve. Staging itself does not need 2FA,
which is why this path works from a token that cannot bypass 2FA - the
proof-of-presence is deferred to the interactive approve step. A direct
npm publish instead fails with
403 ... Two-factor authentication or granular access token with bypass 2fa enabled is required to publish packages.
Bootstrap with a throwaway version (for example 0.0.1) and leave the release
you want CI to ship unpublished: a published version cannot be published again,
so bootstrapping 0.2.0 would make the v0.2.0 tag fail in the publish job.
2. Add the trusted publisher. On npmjs.com, open the mcp-jules package,
then Settings → Trusted Publisher → GitHub Actions and enter:
Organization or user:
cipansorRepository:
mcp-julesWorkflow filename:
release.yml(the filename only, not the full path)Environment name: leave blank
Allowed actions: enable direct
npm publish, not stage-only. The release workflow runsnpm publish, so a stage-only connection makes the publish job fail.
The identity fields are exact-match, so a wrong repository or workflow filename
is the usual cause of an ENEEDAUTH or 404 failure in the publish job. These
fields cannot be edited after the connection is created; delete and recreate the
connection to change them.
While you are there, set Publishing access to Require two-factor authentication and disallow bypass 2fa tokens. Trusted publishers keep working under that setting, because CI authenticates with OIDC rather than a long-lived token.
API Reference
Based on Jules REST API:
Base URL:
https://jules.googleapis.com/v1alphaAuthentication:
x-goog-api-keyheaderFull documentation: jules.google/docs/api/reference
License
Apache-2.0. See LICENSE and NOTICE.
Copyright 2026 Yayasan Pesantren Cipansor and the mcp-jules contributors.
This is an independent project, not affiliated with, sponsored by, or endorsed by Google LLC. "Google" and "Jules" are trademarks of Google LLC, used here only to describe what this software interoperates with.
Available Tools
10 toolsjules_approve_planApprove Jules Session PlanAIdempotent
Approve a pending plan in a Jules session.
Only needed when the session was created with requirePlanApproval=true. After approval, Jules will execute the planned steps.
Args:
sessionId (string, required): The session ID with pending plan
Returns: Confirmation that the plan was approved.
Note: Check session state is 'AWAITING_PLAN_APPROVAL' before calling.
Inputs: sessionId (required).
jules_create_sessionCreate Jules SessionA
Create a new coding session with Jules AI coding agent.
A session represents a unit of work where Jules executes a coding task on your repository.
Args:
prompt (string, required): The task description for Jules to execute
title (string, optional): Title for the session
sourceContext (object, required): Repository context with:
source (string): Resource name like 'sources/github-owner-repo'
githubRepoContext (object, optional): { startingBranch: string }
requirePlanApproval (boolean, optional): If true, plans need approval
automationMode (string, optional): 'AUTO_CREATE_PR' to auto-create PRs
response_format ('markdown' | 'json'): Output format
Returns: The created session with ID, state, and URL.
Examples:
"Add unit tests for auth module" with source "sources/github-myorg-myrepo"
Set requirePlanApproval=true to review plans before execution
Inputs: prompt (required), sourceContext (required), title, automationMode, +2 more.
jules_delete_sessionDelete Jules SessionADestructiveIdempotent
Delete a coding session.
Args:
sessionId (string, required): The session ID to delete
Returns: Confirmation of deletion.
Note: This action cannot be undone.
Inputs: sessionId (required).
jules_get_activityGet Session ActivityARead-onlyIdempotent
Get details of a specific activity in a Jules session.
Retrieves full details including artifacts like code changes, bash output, or media files.
Args:
sessionId (string, required): The session ID
activityId (string, required): The activity ID
response_format ('markdown' | 'json'): Output format
Returns: Full activity details including:
Event type (plan generated, message, progress, etc.)
Artifacts (code changes, command output, media)
Timestamps
Examples:
Get plan details: activity with planGenerated
Get code diff: activity with changeSet artifact
Inputs: sessionId (required), activityId (required), response_format.
jules_get_sessionGet Jules SessionARead-onlyIdempotent
Get details of a specific coding session.
Args:
sessionId (string, required): The session ID
response_format ('markdown' | 'json'): Output format
Returns: Full session details including:
State and progress
Source context
Outputs (pull requests if completed)
Examples:
Get session details: sessionId="1234567"
Inputs: sessionId (required), response_format.
jules_get_sourceGet Source DetailsARead-onlyIdempotent
Get details of a specific repository source.
Retrieves full information about a connected GitHub repository including all available branches.
Args:
sourceId (string, required): The source ID (e.g., 'github-owner-repo')
response_format ('markdown' | 'json'): Output format
Returns: Full source details:
Repository owner and name
Public/private status
Default branch
All available branches
Examples:
Get repo details: sourceId="github-myorg-myrepo"
Inputs: sourceId (required), response_format.
jules_list_activitiesList Session ActivitiesARead-onlyIdempotent
List all activities for a Jules coding session.
Activities track everything that happens during a session:
Plan generation and approval
User and agent messages
Progress updates
Completion or failure events
Code changes and artifacts
Args:
sessionId (string, required): The session ID
pageSize (number, optional): Results per page (1-100, default: 20)
pageToken (string, optional): Token for pagination
response_format ('markdown' | 'json'): Output format
Returns: List of activities with type, description, and timestamps.
Examples:
Monitor session progress: provide sessionId
Get full history: paginate through all activities
Inputs: sessionId (required), pageSize, pageToken, response_format.
jules_list_sessionsList Jules SessionsARead-onlyIdempotent
List all coding sessions for the authenticated user.
Args:
pageSize (number, optional): Results per page (1-100, default: 20)
pageToken (string, optional): Token for pagination
response_format ('markdown' | 'json'): Output format
Returns: List of sessions with ID, title, state, and timestamps. Includes nextPageToken if more results exist.
Examples:
List recent sessions: no params needed
Paginate: use pageToken from previous response
Inputs: pageSize, pageToken, response_format.
jules_list_sourcesList Connected SourcesARead-onlyIdempotent
List all repository sources connected to Jules.
Sources are GitHub repositories that Jules can work with. Sources are connected through the Jules web interface.
Args:
pageSize (number, optional): Results per page (1-100, default: 20)
pageToken (string, optional): Token for pagination
filter (string, optional): Filter expression (e.g., 'name=sources/github-owner-repo')
response_format ('markdown' | 'json'): Output format
Returns: List of sources with repository details:
Owner and repo name
Public/private status
Available branches
Examples:
List all repos: no params needed
Filter by name: filter="name=sources/github-myorg-myrepo"
Inputs: filter, pageSize, pageToken, response_format.
jules_send_messageSend Message to Jules SessionA
Send a message to an active Jules session.
Use this to provide feedback, answer questions, or give additional instructions while Jules is working on a task.
Args:
sessionId (string, required): The session ID
prompt (string, required): The message to send
Returns: Confirmation that the message was sent.
Examples:
"Please also add integration tests"
"Use TypeScript instead of JavaScript"
Answer a clarifying question from Jules
Inputs: prompt (required), sessionId (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct resource-action pair: sessions (create/get/list/delete/send/approve), activities (list/get), and sources (list/get). No two tools overlap in purpose, and descriptions clearly indicate which resource each operates on.
All tool names follow the consistent jules_<verb>_<noun> pattern in snake_case, with verbs like get, list, create, delete, send, and approve. This makes the API highly predictable and easy to navigate.
With 10 tools, the server is well-scoped for its purpose of managing AI coding sessions. Each tool has a clear, non-redundant role, covering session lifecycle, activity monitoring, and source context without unnecessary bloat.
The session lifecycle is well covered: create, read, list, delete, message, and plan approval. Activity and source listing/retrieval support monitoring and context. The only notable gap is a dedicated cancel/stop session tool, though sending a message could serve that purpose.
Maintenance
Related MCP Connectors
Start and manage Reason cloud coding agents, projects and sessions from any MCP client.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Capture coding-agent sessions and resume them in any other agent: Claude Code, Codex, Cursor, more.
Persistent cloud workspaces for AI agents: run commands, edit files, use git and a browser.
Related MCP Servers
- -licenseAqualityNot gradedmaintenanceEnables automation of Google Jules AI coding assistant through task creation, code review automation, repository management, and AI-powered development workflows. Supports multiple session modes including cloud deployment with persistent authentication.13-
- FlicenseAqualityDmaintenanceEnables LLM applications to interact with Google's Jules AI coding assistant to manage repositories, coding sessions, and pull requests. It allows users to programmatically create tasks, approve plans, and communicate with the assistant during active coding sessions.9-
- AlicenseBqualityNot gradedmaintenanceExposes Google Jules AI capabilities for automated coding tasks, including session management, code reviews, and unified diff handling. It enables users to create sessions, approve plans, and synchronize AI-generated code changes with GitHub repositories.2610 npmMIT
- AlicenseAqualityDmaintenanceEnables interaction with Google Jules API to automate software development tasks, such as managing sources, sessions, and activities for AI-powered coding assistance.913 npm6MIT