关于 Since.dev
Since.dev 是托管服务,其远程 MCP 服务让 Agent 监控依赖项和公开来源、核验记忆中的事实,并读取共享仓库与 Grant 数据。持久游标让 Agent 可从已确认的变更位置继续处理,而不必反复轮询。
主要功能
- 01监控依赖项与公开来源
- 02通过持久游标追踪变更
- 03依据观测核验记忆事实
- 04查看共享仓库与修复信息
- 05读取 Grant 团队状态和发现
适用场景
- 01跟踪依赖版本发布和来源变更
- 02Agent 重新连接后继续处理变更
- 03行动前核验记忆中的软件包信息
- 04审查共享仓库影响和拟议修复
MCP 相关
远程 MCP 服务通过 Streamable HTTP 连接,提供 World State、仓库、Grant 和账户用量相关的 20 个工具。访问需要工作区凭据,且权限需单独授予。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.since.dev/mcpclaude mcp add --transport http since-dev https://api.since.dev/mcp{"mcpServers":{"since-dev":{"type":"http","url":"https://api.since.dev/mcp"}}}在 Cursor 中打开{"servers":{"since-dev":{"type":"http","url":"https://api.since.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"since-dev":{"type":"http","url":"https://api.since.dev/mcp"}}}{"mcpServers":{"since-dev":{"serverUrl":"https://api.since.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Since.dev MCP
让 Grant(你的首席运营官)和他的 AI 团队为你提供实时解答、团队状态与决策,以及 World State。
Since.dev 是一项托管服务,这里是它的远程 MCP 服务。它为 AI Agent 提供三类工具:
- **Grant:**查看你的 AI 首席运营官 Grant 及其团队正在处理的工作,阅读发现和运行记录,向 Grant 提问,停止正在运行的工作,并记录发现相关的决策。
- **World State:**监控代码所依赖的公开内容(软件包、代码仓库、服务状态页面、网页和公告目录),使用持久游标查看自 Agent 上次检查以来的所有变更,并在采取行动前检查已记住的事实。
- **代码仓库与修复:**读取与 Agent 共享的代码仓库、依赖项影响和建议的修复方案。
此代码仓库仅包含连接文件:本 README、客户端配置示例和 Gemini CLI 扩展。无需安装或运行服务器代码。
目录
要求
- **Since.dev 账户。**使用电子邮件、GitHub 或 Google 创建账户。每次登录都会包含一个 Free 工作区。
- **该工作区的凭据:**API 密钥,或在支持此功能的客户端中通过浏览器登录(OAuth)。服务不支持匿名访问,凭据只能访问其所属的工作区。
- **包含所用工具的套餐。**所有套餐均可使用 World State、代码仓库和用量工具(包括 Grant Free),但受套餐限额限制;调用
get_usage查看这些工具。Grant 工具需要付费套餐(Grant Pro 或 Grant Studio);在 Grant Free 套餐中调用时会返回plan_required。请参阅定价。
获取 API 密钥
- 在 https://app.since.dev 登录,并选择 Agent 应使用的工作区。
- 打开 Connections → External agents(https://app.since.dev/connections/agents)。
- 选择 New connection,输入连接名称(例如
release-bot),然后选择 Create connection。 - 复制密钥。密钥以
sc_live_开头,且仅显示一次。如果丢失,可在连接的 Manage 中生成新密钥。 - 将密钥保存为
SINCE_API_KEY环境变量,或保存到客户端的密钥设置中。切勿提交 API 密钥。
任何工作区成员都可以创建连接。每个连接都是工作区中的独立 Agent,拥有自己的密钥。它可以读取通过 subscribe 创建的监控项变更;若要向其提供已有监控项,请在连接中选择 Connect watches,或调用 attach_to_set。代码仓库访问权限和 Grant 访问权限需单独授予。
若要跳过 API 密钥,请使用浏览器登录:Claude、Codex 和 Cursor 等支持远程 MCP 登录的客户端可以添加服务 URL,并在提示时登录。工作区所有者或管理员会在登录期间批准工作区、项目和权限。
连接
使用 Streamable HTTP 将服务添加到 MCP 客户端:
https://api.since.dev/mcp
- **OAuth:**客户端支持时,通过浏览器登录。
- **API 密钥:**在
Authorization标头中以 Bearer 令牌形式发送工作区 API 密钥。
使用 mcpServers 文件的客户端
配置来自 examples/mcp.json:
{
"mcpServers": {
"since": {
"url": "https://api.since.dev/mcp",
"headers": {
"Authorization": "Bearer ${SINCE_API_KEY}"
}
}
}
}
此示例会从环境中读取 SINCE_API_KEY。如果客户端不会展开环境变量,请改用其密钥设置。
VS Code
配置来自 examples/vscode-mcp.json,用于工作区的 .vscode/mcp.json。VS Code 会提示输入密钥,并将其作为机密输入保存:
{
"servers": {
"since": {
"type": "http",
"url": "https://api.since.dev/mcp",
"headers": {
"Authorization": "Bearer ${input:since-key}"
}
}
},
"inputs": [
{
"id": "since-key",
"type": "promptString",
"description": "Since.dev API key",
"password": true
}
]
}
Gemini CLI
gemini extensions install https://github.com/since-dev/mcp
在安装程序的机密提示中输入你的 Since.dev 工作区 API 密钥。
授予访问权限
新凭据不会自动获得「授予访问权限」。工作区所有者或管理员可打开 Connections → External agents,在相应连接上选择 Manage,然后在 Grant access 下选择与其共享的项目及允许的操作:读取、提问、调查、决策和控制。
- 首先调用
grant_team_status。它会显示你获准访问的项目、权限和 Grant 团队;如果所有者授予了访问权限,也会显示授予访问权限的所有者。 - 省略
applicationIds即可涵盖所有获准访问的项目。 grant_question最多等待 55 秒。如果 Grant 仍在工作,请使用相同的requestKey再次调用,以继续等待。提问使用与应用相同的工作区模型和额度。- World State 和仓库工具拥有各自的访问授权,即使没有 Grant 访问权限也可使用。
工具
该服务提供 20 个工具,tools/list 会返回每个工具完整的输入架构。使用浏览器登录的连接会列出其获准权限允许使用的 Grant 工具。
Grant
Grant 工具需要付费套餐,且连接已获授 Grant 访问权限(请参阅授予访问权限)。每个工具都通过 input 对象接收参数,还可选用 applicationIds 数组来缩小项目范围。未提供 applicationIds 时,调用涵盖连接获准访问的所有项目。input 中的可空字段仍为必填项:不适用时请传入 null。
| 工具 | 功能 | 关键输入 |
|---|---|---|
grant_team_status | 首先调用此工具。显示你获准访问的项目、权限和 Grant 团队:每位队友的角色、来源、状态、当前工作和最新简报。传入 runIds 可读取指定运行的状态。 | input.runIds:最多 20 个运行 ID;传入 null 可查看概览 |
grant_read | 按 ID 读取一条已保存的调查结果(含证据和决策)、一次运行(含其简报)或一段对话,或列出一页调查结果。 | input.type(finding、run、conversation 或 findings)、input.id、input.cursor、input.severity、input.disposition |
grant_question | 向 Grant 询问你获准访问的项目。Grant 会根据已保存的调查结果和简报作答,也可实时咨询其团队;这同样需要 investigate 权限。最多等待 waitSeconds 秒以获取答案;如果 Grant 仍在工作,请使用相同的 requestKey 再次调用,以继续等待。 | input.content(最多 12,000 个字符)、input.conversationId(新对话传入 null)、input.waitSeconds(0 到 55)、requestKey(8 到 160 个字符) |
grant_stop | 停止 Grant 或队友正在进行的工作。已保存的结果会保留。 | input.runId |
grant_record_decision | 为某条调查结果记录处置方式、备注、负责人或跟进日期。此操作会记录一项决策,但不能证明问题已修复。 | input.id、input.expectedVersion、input.disposition(open、accepted、deferred、addressed 或 dismissed)、input.note;可选的 input.ownerId、input.revisitAt |
世界状态
世界状态工具适用于所有套餐,但受套餐限制。连接会读取其创建的监控,以及与其共享的监控或集合的变更。
| 工具 | 功能 | 关键输入 |
|---|---|---|
check_coverage | 在据此开展工作前,询问某项内容是否可以监控。返回覆盖级别(good、partial 或 none)、数据来源、检查频率和规范主题键。 | subjectType、subject、aspect |
subscribe | 创建监控,让变更主动送达,无需轮询。可使用类型化形式创建一个监控,或用自然语言陈述指定最多十个监控。 | subjectType、aspect,以及 subject 或 canonicalKey 之一;或 statement。可选的 threshold(0 到 1) |
what_changed_since | Agent 恢复工作时的首次调用。返回自已确认游标以来监控的所有变更,按顺序排列并去重;每项均包含字段变更、来源证据和评估。 | 可选的 since(游标;省略则从已确认的位置继续)、limit(默认 50,最大 200) |
acknowledge_changes | 处理完完整的 what_changed_since 响应后,推进持久游标。可安全重试;游标不会倒退。 | 来自该响应的 cursor |
verify_facts | 在采取行动前,根据当前观测到的状态检查 Agent 记忆中的事实。每条事实返回 valid、changed 或 unknown;unknown 表示没有观测记录,并不代表没有发生变化。计入套餐每月的验证调用次数。 | facts:最多 100 条,每条包含 subjectKey、aspect、fieldPath、expectedValue |
subject_history | 提供某个主题的已观测变更时间线和总数,供 Agent 选择合适的重新检查频率。 | subjectKey;可选的 limit |
list_watches | 列出此连接可见的已保存监控,每页 50 个。 | 可选的 status(active、needs_attention、paused、closed 或 expired)、offset |
inspect_watch | 查看一个已保存监控及其覆盖情况和来源健康状况。不会检查来源或确认变更。 | id |
list_sets | 列出工作区的订阅集合(已命名的监控组),以及此连接是否已加入每个集合。 | 无 |
attach_to_set | 加入订阅集合,以便从现在起接收其中的变更。不会重放之前的变更;如需查看之前的变更,请使用 subject_history。 | 来自 list_sets 的 setId |
仓库与修复
这些工具只读取工作区所有者或管理员在仓库的 Settings → Agent access 中与此连接共享的仓库。它们不授予写入权限。
| 工具 | 功能 | 关键输入 |
|---|---|---|
list_maintained_repositories | 列出与此连接共享的仓库。 | 无 |
inspect_repository | 查看已保存的仓库及其依赖项和影响状态。 | id;可选的 impactOffset |
list_repairs | 查看共享仓库的影响和修复状态。 | 可选的 repositoryId、review(open、attention、completed 或 all)、offset |
inspect_repair | 查看某项修复记录的证据、受影响代码、补丁版本、CI 检查和决策。检查通过并不能证明在生产环境中安全。 | id;可选的 includeCurrentPr,用于包含当前 GitHub 拉取请求的差异 |
账户
| 工具 | 功能 | 关键输入 |
|---|---|---|
get_usage | 查看工作区的套餐和当前用量。只读。 | 无 |
示例:监视依赖项并获取变更
一个使用 React 维护项目的 Agent 希望及时了解 React 新版本,而不必轮询 npm。每个步骤都展示 Agent 在 tools/call 请求中发送的 name 和 arguments。
-
监视依赖项。若要先检查某个来源是否受支持,请使用相同的三个字段调用
check_coverage。{ "name": "subscribe", "arguments": { "subjectType": "package", "subject": "npm:react", "aspect": "versions" } }结果会返回新建的监视项及其
id、status、coverage和cadenceMinutes。首次检查会记录基线,之后的变更会发送到此连接。 -
Agent 恢复工作时,应先调用
what_changed_since。省略since,即可从上次确认的位置继续。{ "name": "what_changed_since", "arguments": { "limit": 50 } }精简示例结果:
{ "changes": [ { "change": { "seq": 84219, "idempotencyKey": "a3f1c9...", "subject": { "key": "package:npm:react", "type": "package", "name": "react" }, "aspect": "versions", "fieldChanges": [{ "path": "version", "label": "Latest version", "from": "19.1.0", "to": "19.2.0" }], ... }, "context": { ... } } ], "cursor": 84219, "hasMore": false, ... }每个
change块都包含字段变更、来源和检测时间。其context包含证据和评估。 -
处理完响应中的所有变更后,确认其游标:
{ "name": "acknowledge_changes", "arguments": { "cursor": 84219 } }如果
hasMore为 true,请再次调用what_changed_since。未确认过的页面会再次返回,因此至少会投递一次:请根据idempotencyKey去重。 -
在根据 Agent 记住的版本采取行动之前,先检查该版本:
{ "name": "verify_facts", "arguments": { "facts": [ { "subjectKey": "package:npm:react", "aspect": "versions", "fieldPath": "version", "expectedValue": "19.2.0" } ] } }每项事实都会返回
valid、changed或unknown。将unknown视为“没有观测结果”,绝不能视为“未发生变化”。
支持
- 文档:https://since.dev/docs,包括 MCP 参考
- 有关此连接的问题:提交问题
- 电子邮件:[email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。