Jules MCP服务器
 ](package.json)
MCP(模型上下文协议)服务器 谷歌朱尔斯 -AI编码代理。该服务器使像Claude这样的LLM能够与Jules API交互,以编程方式创建和管理编码会话。
建筑
Jules MCP服务器充当兼容MCP的客户端和Jules REST API之间的桥梁。
┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ MCP Client │ │ Jules MCP Server │ │ Jules REST API │
│ (Claude, etc)│ ◄──► │ (stdio/HTTP) │ ◄──► │ (googleapis.com) │
└──────────────┘ └──────────────────┘ └──────────────────┘- MCP客户端:像Claude Desktop这样的支持模型上下文协议的应用程序。
- Jules MCP服务器:该项目将Jules的功能公开为MCP工具,并将其转换为Jules API调用。
- Jules REST API:为Jules的编码功能提供动力的底层Google API。
特性
- 会话管理:创建、列出、获取和删除编码会话
- 互动的沟通:向活动会话发送消息并批准计划
- 活动监控:通过会议活动跟踪进展情况
- 来源管理:列出并检查连接的GitHub存储库
- 双重运输:支持stdio和HTTP传输
先决条件
- Node.js 18+
- Jules API密钥(从 jules.google.com/settings)
- Jules中的连接GitHub存储库
安装
# Clone or download the server
cd jules-mcp-server
# Install dependencies
npm install
# Build the TypeScript
npm run build配置
将Jules API密钥设置为环境变量:
export JULES_API_KEY="your-api-key-here"安全
管理您的 JULES_API_KEY 小心:
- 环境变量:始终使用环境变量来提供API密钥。避免在源代码或配置文件中硬编码它。
- 无承诺:永远不要提交API密钥或
.env包含版本控制密钥的文件。这.gitignore文件被配置为忽略.env文件夹。 - 最小权限:Jules API密钥提供对Jules会话和连接的存储库的完全访问。保持安全,如果你怀疑它已被破坏,请旋转它。
- CI/CD:在CI/CD环境中使用时(如GitHub Actions),请使用Secrets存储和注入API密钥。
用法
使用克劳德桌面(stdio传输)
添加到您的Claude Desktop配置(claude_desktop_config.json):
{
"mcpServers": {
"jules": {
"command": "node",
"args": ["/path/to/jules-mcp-server/dist/index.js"],
"env": {
"JULES_API_KEY": "your-api-key-here"
}
}
}
}使用克劳德代码(CLI)
您可以将此服务器添加到 克劳德代码 通过运行:
claude mcp add jules --env JULES_API_KEY=your-api-key-here -- node /path/to/jules-mcp-server/dist/index.js命令行
# Run with stdio transport
JULES_API_KEY=your-key node dist/index.js
# Run with HTTP transport
JULES_API_KEY=your-key node dist/index.js --http
# Custom port for HTTP
JULES_API_KEY=your-key PORT=8080 node dist/index.js --http
# Show help
node dist/index.js --help工具参考
服务器提供了一套与Jules交互的工具。一些工具支持 response_format 参数(markdown 或 json);参考每个工具的记录参数,看看它是否被接受。
会话工具
jules_create_session
创建一个新的编码会话,Jules在其中执行存储库上的任务。
- 参数:
- prompt (字符串,必填):任务描述。 - sourceContext (object,必填):存储库信息(例如。, { "source": "sources/github-owner-repo", "githubRepoContext": { "startingBranch": "main" } }). - title (字符串,可选):会话标题。 - requirePlanApproval (布尔值,可选):如果Jules应该等待计划批准。 - automationMode (字符串,可选):使用 AUTO_CREATE_PR 完成后自动创建PR。 - response_format (字符串,可选):响应格式,要么 markdown 或 json.
- 示例响应(Markdown):
## Session: Add auth tests
**ID:** 1234567
**State:** ⏳ QUEUED
**Prompt:** Add unit tests for the authentication module
**URL:** https://jules.google/session/1234567jules_list_sessions
列出您的所有编码会话。
- 参数:
- pageSize (数字,可选):每页最大结果数(1-100,默认值:20)。 - pageToken (字符串,可选):下一页的标记。 - response_format (字符串,可选):响应输出的格式。
- 示例响应(JSON):
{
"sessions": [
{
"id": "1234567",
"title": "Add auth tests",
"state": "IN_PROGRESS",
"createTime": "2023-10-27T10:00:00Z"
}
],
"total": 1,
"hasMore": false
}jules_get_session
检索特定会话的完整详细信息,包括当前状态、URL和输出(如PR链接)(如果已完成)。
- 参数:
- sessionId (string,必填):会话的ID。 - response_format (字符串,可选):“markdown”(默认)或“json”。
- 示例响应(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.- 示例响应(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
删除编码会话。这是无法撤消的。
- 参数:
- sessionId (string,必填):会话的ID。
jules_send_message
向活动会话发送消息。使用此功能提供反馈,回答Jules的问题,或在会议中途更改说明。
- 参数:
- sessionId (string,必填):会话的ID。 - prompt (string,必填):您的消息。
jules_approve_plan
批准一项待定的计划。如果需要 requirePlanApproval 已设置为 true 在会话创建期间。一旦获得批准,朱尔斯就开始执行死刑。
- 参数:
- sessionId (string,必填):会话的ID。
活动工具
jules_list_activities
列出会话的所有活动(事件、计划生成、代码更改、消息)。
- 参数:
- sessionId (string,必填):会话的ID。 - pageSize (数字,可选):每页结果。必须介于两者之间 1 和 100。省略时默认为架构定义的默认值。 - pageToken (字符串,可选):分页标记。 - response_format (字符串,可选):返回活动的响应格式。
jules_get_activity
获取特定活动的详细信息。这就是您查看代码差异的方式(changeSet)、bash输出或完整的计划详细信息。
- 参数:
- sessionId (string,必填):会话的ID。 - activityId (字符串,必填):活动ID。 - response_format (string,可选):控制返回的活动详细信息的格式。
源代码工具
jules_list_sources
列出通过Jules web UI连接到您的Jules帐户的GitHub存储库。
- 参数:
- filter (string,可选):按名称过滤(例如。, name=sources/github-owner-repo). - pageSize (数字,可选):每页结果。 - pageToken (字符串,可选):分页标记。 - response_format (字符串,可选):返回数据的响应格式。
jules_get_source
获取特定连接存储库的详细信息,包括所有可用分支。
- 参数:
- sourceId (string,必填):源ID(例如。, github-owner-repo).这不是 sources/... 使用的资源名称 sourceContext.source. - response_format (string,可选):控制工具返回的响应格式。
真实世界的例子
完整的工作流程:实现功能
- 查找存储库ID:
jules_list_sources() ->退货 sources/github-acme-webapp.
- 开始会话:
jules_create_session(prompt="Add a search bar to the header", sourceContext={"source": "sources/github-acme-webapp"}, requirePlanApproval=true) ->返回会话ID 7890.
- 检查计划:
jules_list_activities(sessionId="7890").查找带有“生成计划”的活动。
- 审查并批准:
jules_get_activity(sessionId="7890", activityId="plan_activity_id"). 如果计划看起来不错: jules_approve_plan(sessionId="7890").
- 监督进展:
定期致电 jules_get_session(sessionId="7890") 检查 state 或 jules_list_activities 看看最近的行动。
- 查看结果:
一旦国家 COMPLETED,检查 jules_get_session 对于Pull请求URL。
会话状态
| 状态 | 描述 |
|---|---|
QUEUED | 会话已创建,正在等待处理。 |
PLANNING | Jules正在分析代码库并制定计划。 |
AWAITING_PLAN_APPROVAL | 计划已准备就绪,需要您的批准才能继续。 |
AWAITING_USER_FEEDBACK | Jules有疑问或需要更多信息。 |
IN_PROGRESS | 朱尔斯正在执行任务/计划。 |
PAUSED | 执行已暂时停止。 |
COMPLETED | 任务已成功完成(检查PR链接)。 |
FAILED | 任务失败。检查活动以了解错误详细信息。 |
故障排除
| 错误 | 含义 | 解决方案 |
|---|---|---|
| 401未经授权 | 无效的API密钥 | 请检查您的 JULES_API_KEY 环境变量,并确保其有效性。 |
| 403禁止 | 权限被拒绝 | 请确保您的API密钥可以访问请求的资源或存储库。 |
| 404未找到 | 资源丢失 | 验证 sessionId, activityId,或 sourceId 是正确的。 |
| 429请求太多 | 价格限制 | 您已超过API价格限制。请等待几分钟,然后重试。 |
| 500 / 503 | Jules API错误 | Jules服务遇到问题。请稍后重试或检查 朱尔斯状态. |
| 连接被拒绝 | 网络错误 | 检查您的互联网连接或防火墙设置。 |
发展
# Install dependencies
npm install
# Build
npm run build
# Type-check without emitting files
npm run check
# Lint source files
npm run lint
# Check formatting
npm run format:check
# Development mode (watch)
npm run dev贡献
我们欢迎捐款!看 贡献.md 了解更多详情。
- 检查问题:查找现有问题或打开一个新问题来讨论您提出的更改。
- 本地设置:遵循 安装 步骤。
- 主题分支:总是在新的分支机构工作(
git checkout -b feature/my-feature). - 测试:如果添加工具,请确保它经过测试。跑
npm run check和npm run lint. - 文档:如果您更改了工具行为或添加了新功能,请更新README。
- 拉取请求:提交一份PR,明确说明变更。
项目卫生和社区文件:
API 参考
基于 Jules REST API:
- 基本URL:
https://jules.googleapis.com/v1alpha - 身份验证:
x-goog-api-key头球 - 完整文档: jules.google/docs/api/reference
许可证
麻省理工学院
