返回市场
朱尔斯-MCP服务器

朱尔斯-MCP服务器

作者:CodeAgentBridge12 星标更新:2025-10-16

项目介绍

Jules MCP Server (jules-mcp)

这是一个通过FastMCP暴露Google Jules Agent操作的MCP(模型上下文协议)服务器。

此服务器允许MCP兼容客户端(以及Python代码)列出Jules源,创建和管理会话,并使用官方jules-agent-sdk检查活动。

  • 服务器框架:FastMCP
  • SDK:jules-agent-sdk
  • Python版本:3.13+
  • 许可证:Apache-2.0

功能

通过MCP服务器暴露的工具(按区域分组):

    • get_source(source_id)
    • list_sources(filter_str=None, page_size=None, page_token=None)
    • get_all_sources(filter_str=None)
  • 会话
    • create_session(prompt, source, starting_branch=None, title=None, require_plan_approval=False)
    • get_session(session_id)
    • list_sessions(page_size=None, page_token=None)
    • approve_session_plan(session_id)
    • send_session_message(session_id, prompt)
    • wait_for_session_completion(session_id, poll_interval=5, timeout=600)
  • 活动
    • get_activity(session_id, activity_id)
    • list_activities(session_id, page_size=None, page_token=None)
    • list_all_activities(session_id)

请参阅jules_mcp/jules_mcp.py中的签名和内联文档字符串。

安装

选项A — 从本地检出:

# 在仓库根目录下
pip install -e .

选项B — 使用uv(开发期间推荐):

# 在仓库根目录下
uv sync

该项目针对Python 3.13+。

配置

通过环境变量设置您的Jules API密钥:

  • Windows PowerShell
    $Env:JULES_API_KEY = "<your_api_key_here>"
    
  • Unix shell(bash/zsh)
    export JULES_API_KEY="<your_api_key_here>"
    

如果您不向jules()提供参数,SDK会自动读取JULES_API_KEY。

运行MCP服务器

有两种常见的运行服务器的方法。

  1. 使用FastMCP客户端进行程序化运行(进程内)——适用于测试或嵌入:
import asyncio
from fastmcp import Client
from jules_mcp import mcp

async def main():
    async with Client(mcp) as client:
        # 示例:列出所有源(自动分页)
        result = await client.call_tool("get_all_sources")
        print(result)

asyncio.run(main())
  1. 作为独立的MCP服务器可执行文件供外部MCP客户端使用:
  • 直接使用uv和FastMCP

    uv run fastmcp run jules_mcp/jules_mcp.py:mcp
    

    这将在标准输入输出上启动MCP服务器。

  • 使用提供的配置文件

    • MCP.json:适用于MCP感知主机的命令配置样本。
    • fastmcp.json:FastMCP运行时/环境配置。

如果您使用不同的检出位置,请调整MCP.json中的路径。

您也可以通过模块入口点运行:

python -m jules_mcp

这会调用start_mcp(),该函数使用包中定义的“mcp”实例调用FastMMCP.run()。

使用说明和示例

  • 列出并过滤源
import asyncio
from fastmcp import Client
from jules_mcp import mcp

async def main():
    async with Client(mcp) as client:
        # 过滤语法遵循Jules支持的AIP-160过滤规则
        res = await client.call_tool(
            "list_sources",
            {"filter_str": "name=sources/source1 OR name=sources/source2", "page_size": 10}
        )
        print(res)

asyncio.run(main())
  • 创建会话并等待完成
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": "分析存储库并提出改进意见",
                "source": "sources/abc123",
                "require_plan_approval": True,
            },
        )

        # 可选地批准计划
        await client.call_tool("approve_session_plan", {"session_id": session["name"]})

        # 等待完成
        final = await client.call_tool(
            "wait_for_session_completion",
            {"session_id": session["name"], "poll_interval": 5, "timeout": 600}
        )
        print(final)

asyncio.run(run_session())
  • 检查活动
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"))

开发

  • 创建虚拟环境并安装开发依赖项

    uv sync
    # 或:pip install -e .[dev]
    
  • 运行测试(注意:某些工具可能会访问Jules API并需要JULES_API_KEY)

    uv run pytest -q
    
  • 代码风格检查/格式化:请使用您偏好的工具;此仓库默认不包含代码风格检查器。

项目元数据

  • 包名:jules-mcp
  • 版本:0.1.0
  • 入口点:
    • Python模块:python -m jules_mcp
    • FastMCP源:jules_mcp/jules_mcp.py:mcp

许可证

Apache许可证2.0。详情请参见LICENSE文件。

致谢