Jules Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Jules Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Model Context Protocol (MCP) server for Google's Jules AI coding agent. Enables AI assistants like Claude to create and manage asynchronous coding tasks through the Jules API.
Jules is Google's AI coding agent that executes development tasks in isolated cloud VMs. This MCP server exposes Jules functionality through 8 standardized tools that AI assistants can discover and invoke automatically.
What Jules can do:
Tasks run asynchronously and typically complete in 5-60 minutes depending on complexity.
cd jules-mcp-server
npm install
npm run buildCreate a .env file (never commit this):
cp .env.example .env
# Edit .env and add your Jules API keyOr pass the key directly in Claude Desktop config (recommended - see below).
Edit your Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonAdd this configuration:
{
"mcpServers": {
"jules": {
"command": "node",
"args": ["/absolute/path/to/jules-mcp-server/build/index.js"],
"env": {
"JULES_API_KEY": "your_actual_jules_api_key_here"
}
}
}
}Important:
build/index.js (not relative)your_actual_jules_api_key_here with your real API keyjules_list_sourcesList all GitHub repositories connected to Jules.
Example prompt: "Show me my Jules repositories"
jules_create_sessionStart a new asynchronous coding task.
Parameters:
repoOwner - GitHub repository owner/orgrepoName - Repository nameprompt - Detailed task descriptionbranch - Starting branch (default: "main")autoApprove - Auto-approve plan (default: true)autoCreatePR - Auto-create PR when done (default: false)Example prompt: "Create a Jules session for myorg/myrepo to add unit tests for the authentication module"
jules_list_sessionsList all your Jules sessions with their states.
Example prompt: "Show all my Jules sessions"
jules_get_statusCheck session status and recent activity. Use this to poll for completion.
Example prompt: "Check status of Jules session abc123"
jules_send_messageSend a follow-up message to a running session.
Example prompt: "Tell Jules session abc123 to also add error handling"
jules_list_activitiesGet detailed activity log including plan steps and progress updates.
Example prompt: "Show me the detailed activities for session abc123"
jules_approve_planApprove execution plan (only needed if autoApprove=false).
Example prompt: "Approve the plan for Jules session abc123"
jules_get_session_outputRetrieve final results and PR URL from completed session.
Example prompt: "Get the results from Jules session abc123"
You: "I need to add authentication tests to my project"
Claude: I'll help you create a Jules session for that.
[Uses jules_list_sources to find your repos]
[Uses jules_create_session with your requirements]
Claude: Session created! ID: ses_abc123. Jules is working on this task.
I'll check back in 30 seconds.
[Waits, then uses jules_get_status periodically]
Claude: Jules completed the task! Here's the pull request: [URL]You: "Create a Jules session to refactor the database layer, but I want to approve the plan first"
Claude: I'll create a session with manual approval.
[Uses jules_create_session with autoApprove=false]
Claude: Session created and waiting for plan approval.
[Uses jules_list_activities to show the plan]
You: "Looks good, approve it"
Claude: [Uses jules_approve_plan]
Plan approved! Jules is now executing.You: "Check on my Jules session ses_abc123"
Claude: [Uses jules_get_status]
Jules is working on adding tests. Currently implementing auth tests.
You: "Tell Jules to also add integration tests"
Claude: [Uses jules_send_message]
Message sent. Jules will incorporate this in the next steps.Jules enforces task quotas based on subscription tier:
Tasks count against your quota even if they fail. The quota resets on a rolling 24-hour window.
Jules sessions run asynchronously in cloud VMs. The typical workflow:
jules_get_statusjules_list_activitiesClaude handles this polling automatically when you ask to monitor a task.
build/index.js exists after running npm run buildenv object in config contains JULES_API_KEYnpm run dev # Watch mode - rebuilds on changesnpm run inspectorThis opens a web interface where you can test tools interactively without Claude Desktop.
jules-mcp-server/
├── src/
│ ├── index.ts # Main server and tool implementations
│ ├── client.ts # Jules API client helper
│ └── types.ts # TypeScript type definitions
├── build/ # Compiled JavaScript (git-ignored)
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── .env # API key (git-ignored, create from .env.example)src/types.tssrc/index.ts following the existing patternnpm run build.env or Claude Desktop config only.env and build/ are excludedUse absolute paths:
✅ "/Users/username/jules-mcp-server/build/index.js"
❌ "~/jules-mcp-server/build/index.js"
❌ "./jules-mcp-server/build/index.js"Multiple servers:
{
"mcpServers": {
"jules": { ... },
"other-server": { ... }
}
}Debug logging: Check Claude Desktop logs:
~/Library/Logs/Claude/%APPDATA%\Claude\logs\This server implements the Jules API v1alpha:
https://jules.googleapis.com/v1alphaX-Goog-Api-Key headerMIT
Contributions welcome! Please ensure:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.