Install
$ agentstack add mcp-codeagentbridge-jules-mcp-server β scanned Β· β verified β works with Claude Code, Cursor, and more.
Security review
β PassedNo issues found. Passed automated security review. Β· v0.1.0 How review works β
- β Prompt-injection patterns
- β Secret / credential exfiltration
- β Dangerous shell & filesystem operations
- β Untrusted network calls
- β Known-malicious package signatures
What it can access
- β Network access No
- β Filesystem access No
- β Shell / process execution No
- β Environment & secrets No
- β Dynamic code execution No
From automated source analysis of v0.1.0. βUsedβ means the capability is present in the source β more access means more to trust, not that itβs unsafe.
About
Jules MCP Server (jules-mcp)
An MCP (Model Context Protocol) server that exposes Google Jules Agent operations via FastMCP.
This server lets MCP-compatible clients (and Python code) list Jules sources, create and manage sessions, and inspect activities using the official jules-agent-sdk.
- Server framework: FastMCP
- SDK: jules-agent-sdk
- Python: 3.13+
- License: Apache-2.0
Features
Tools exposed via the MCP server (grouped by area):
- Sources
- getsource(sourceid)
- listsources(filterstr=None, pagesize=None, pagetoken=None)
- getallsources(filter_str=None)
- Sessions
- createsession(prompt, source, startingbranch=None, title=None, requireplanapproval=False)
- getsession(sessionid)
- listsessions(pagesize=None, page_token=None)
- approvesessionplan(session_id)
- sendsessionmessage(session_id, prompt)
- waitforsessioncompletion(sessionid, poll_interval=5, timeout=600)
- Activities
- getactivity(sessionid, activity_id)
- listactivities(sessionid, pagesize=None, pagetoken=None)
- listallactivities(session_id)
See julesmcp/julesmcp.py for signatures and inline docstrings.
Installation
Option A β from a local checkout:
# from the repository root
pip install -e .
Option B β using uv (recommended during development):
# from the repository root
uv sync
The project targets Python 3.13+.
Configuration
Set your Jules API key via environment variable:
- Windows PowerShell
``powershell $Env:JULES_API_KEY = "" ``
- Unix shells (bash/zsh)
``bash export JULES_API_KEY="" ``
If you do not provide an argument to jules(), the SDK reads JULESAPIKEY automatically.
Running the MCP server
There are two common ways to run the server.
1) Programmatic run (in-process) using FastMCP Client β useful for testing or embedding:
import asyncio
from fastmcp import Client
from jules_mcp import mcp
async def main():
async with Client(mcp) as client:
# Example: list all sources (auto-paginated)
result = await client.call_tool("get_all_sources")
print(result)
asyncio.run(main())
2) As a standalone MCP server executable for external MCP clients:
- Using uv and FastMCP directly
``bash uv run fastmcp run jules_mcp/jules_mcp.py:mcp `` This starts the MCP server over stdio.
- Using the provided configuration files
- MCP.json: a sample command configuration for MCP-aware hosts.
- fastmcp.json: FastMCP runtime/environment configuration.
Adjust paths in MCP.json if you use a different checkout location.
You can also run via the module entry point:
python -m jules_mcp
This calls start_mcp() which invokes FastMCP.run() using the "mcp" instance defined in the package.
Usage notes and examples
- Listing and filtering sources
import asyncio
from fastmcp import Client
from jules_mcp import mcp
async def main():
async with Client(mcp) as client:
# Filter syntax follows AIP-160 filtering rules supported by Jules
res = await client.call_tool(
"list_sources",
{"filter_str": "name=sources/source1 OR name=sources/source2", "page_size": 10}
)
print(res)
asyncio.run(main())
- Creating a session and waiting for completion
import asyncio
from fastmcp import Client
from jules_mcp import mcp
async def run_session():
async with Client(mcp) as client:
session = await client.call_tool(
"create_session",
{
"prompt": "Analyze the repository and propose improvements",
"source": "sources/abc123",
"require_plan_approval": True,
},
)
# Optionally approve plan
await client.call_tool("approve_session_plan", {"session_id": session["name"]})
# Wait for completion
final = await client.call_tool(
"wait_for_session_completion",
{"session_id": session["name"], "poll_interval": 5, "timeout": 600}
)
print(final)
asyncio.run(run_session())
- Inspecting activities
import asyncio
from fastmcp import Client
from jules_mcp import mcp
async def list_acts(session_id: str):
async with Client(mcp) as client:
acts = await client.call_tool("list_all_activities", {"session_id": session_id})
for a in acts:
print(a)
asyncio.run(list_acts("sessions/abc123"))
Development
- Create a virtual environment and install dev dependencies
``bash uv sync # or: pip install -e .[dev] ``
- Run tests (note: some tools may reach the Jules API and require JULESAPIKEY)
``bash uv run pytest -q ``
- Linting/formatting: follow your preferred tools; this repo does not include linters by default.
Project metadata
- Package name: jules-mcp
- Version: 0.1.0
- Entry points:
- Python module: python -m jules_mcp
- FastMCP source: julesmcp/julesmcp.py:mcp
License
Apache License 2.0. See the LICENSE file for details.
Acknowledgements
- FastMCP β https://gofastmcp.com/
- Model Context Protocol β https://modelcontextprotocol.io/
- jules-agent-sdk β unofficial/official SDK used by this server
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source β we do not rehost the code.
- Author: CodeAgentBridge
- Source: CodeAgentBridge/jules-mcp-server
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet β be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.