mcpField
B
benchling-integration

benchling-integration

github.com/k-dense-ai数据与数据库55.1k1.9k 次安装2 天前更新
代码仓库

关于 benchling-integration

benchling-integration 是一项使用 Benchling SDK 和 API 构建工作流的技能,面向处理研究记录、序列、库存和工作流任务的团队。它强调租户特定的架构与权限,以及写入后的读取核验和结果对账。

主要功能

  1. 01导入 DNA 序列
  2. 02查询和审计库存
  3. 03读取和更新 ELN 条目
  4. 04管理工作流任务
  5. 05处理分页和异步操作

适用场景

  1. 01将 FASTA 序列导入 Benchling
  2. 02审计某位置下的容器
  3. 03按架构导出序列
  4. 04对部分导入后的重试进行对账

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill benchling-integration

安装后在 Claude Code 中输入/benchling-integration确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api_endpoints.md
authentication.md
core_capabilities.md
eventbridge.md
sdk_reference.md

详细介绍

Benchling 集成

何时使用

在涉及 Benchling 注册实体、序列导入、库存、ELN 条目、 工作流任务、应用、事件驱动集成以及数据仓库分析时使用此技能。

审查日期 2026-09-30: 示例针对已发布的 benchling-sdk 1.25.0 及其 稳定的 v2 API 模型。当前身份验证指南 建议新开发使用 V3,而 V3 指南 仍描述特定端点的早期访问。迁移前请确认你的租户的 V3 可用性和 稳定性;这些 v2 SDK 示例不得机械地重写为 V3。

SDK 导入、模型序列化和请求构造已在本地对照 1.25.0 进行核对。依赖租户的示例是说明性的:未运行任何经过身份验证的请求、 变更、AWS 部署或数据仓库连接。

工作流

  1. 确定租户、API 版本、身份和权限。后台集成使用 OAuth 应用凭据; 以个人用户身份操作时使用委托授权。参见 身份验证。
  2. 阅读相关 schema 并解析实际的文件夹、注册表、状态和下拉菜单 ID。 保留序列字母表/拓扑结构和样本单位。有效的 Python 模型并不 意味着生物学正确性或满足租户的必填字段。
  3. 写入前先读取一小段经过筛选的分页数据。使用类型化的 SDK 方法并检查其 实际参数名;并非所有服务都共享相同的 CRUD 命名约定。
  4. 构造并序列化一个具有代表性的载荷。对于导入,保留外部 ID 和返回的 Benchling ID,以便重试时能在不产生重复的情况下协调部分运行。
  5. 执行请求的操作并回读结果。检查终态异步状态; 轮询完成仍可能意味着 FAILED。

设置与只读查询

uv pip install "benchling-sdk==1.25.0"
import os
from benchling_sdk.benchling import Benchling
from benchling_sdk.auth.client_credentials_oauth2 import ClientCredentialsOAuth2

tenant_url = os.environ["BENCHLING_TENANT_URL"].rstrip("/")
benchling = Benchling(
    url=tenant_url,
    auth_method=ClientCredentialsOAuth2(
        client_id=os.environ["BENCHLING_CLIENT_ID"],
        client_secret=os.environ["BENCHLING_CLIENT_SECRET"],
        token_url=f"{tenant_url}/oauth/token",
    ),
)
for page in benchling.dna_sequences.list(page_size=10, name_includes="plasmid"):
    for sequence in page:
        print(sequence.id, sequence.name)
    break  # deliberate first-page connectivity/permission check

成功返回的空分页是有效的连通性结果。它并不意味着可以访问 所有项目。没有文档记载的 v2 users/me 路由或 SDK users.get_me()。

重要的 SDK 约定

  • 从 benchling_sdk.helpers.serialization_helpers 导入 fields。其输入为 {"field_name": {"value": value}},包括内层的 value 映射。
  • DNA 更新使用 dna_sequence_id,工作流更新使用 workflow_task_id。 创建工作流任务需要 workflow_task_group_id。
  • 条目方法有 create_entry、get_entry_by_id、list_entries 和 update_entry。
  • list() 通常返回分页;需迭代两次才能到达对象。estimated_count 是一个可能引发 NotImplementedError 的属性,而不是方法或保证的计数。
  • 移动试管使用 ContainerUpdate(parent_storage_id=...)。物料转移是 一项单独的操作;它会改变内容和数量。
  • 创建时使用 registry_id 加上 entity_registry_id(一个人类可读的 注册表标识符)或 naming_strategy 进行注册。不要将这些与注册表自身的 ID 混淆。

常见用例

导入 FASTA 序列

需单独安装 Biopython(uv pip install biopython)。此说明性导入 会创建未注册的线性 DNA;运行前请选择拓扑结构并解决冲突。

from Bio import SeqIO
from benchling_sdk.models import DnaSequenceCreate

for record in SeqIO.parse("sequences.fasta", "fasta"):
    payload = DnaSequenceCreate(
        name=record.id,
        bases=str(record.seq),
        is_circular=False,
        folder_id="lib_example",
    )
    created = benchling.dna_sequences.create(payload)
    print(record.id, created.id)  # persist this mapping for restart/reconciliation
审计某位置下的库存
for page in benchling.containers.list(ancestor_storage_id="box_example"):
    for container in page:
        print(container.id, container.name, container.barcode)

ancestor_storage_id 包含后代。若只要直接子级,请检查 返回的父存储,或使用文档记载的存储内容服务。

为单个 schema 导出序列
import csv

with open("sequences.csv", "w", newline="", encoding="utf-8") as handle:
    writer = csv.DictWriter(handle, fieldnames=["id", "name", "bases", "length"])
    writer.writeheader()
    for page in benchling.dna_sequences.list(schema_id="ts_example"):
        for seq in page:
            writer.writerow({
                "id": seq.id, "name": seq.name,
                "bases": seq.bases, "length": len(seq.bases),
            })

参考资料

  • 核心能力:科学工作流与边界。
  • SDK 参考:经验证的构造函数、更新、清单、 条目、工作流任务、重试与异步处理。
  • REST 参考:端点路径、请求负载、过滤器、 响应封装、分页与速率限制。
  • 身份验证:应用凭证、个人密钥、 委托授权、旧版 OIDC 与 HTTP 客户端。
  • EventBridge:支持的事件类型、请求负载、设置 与恢复;webhook 差异。
  • 官方 SDK 1.25.0
  • 官方 REST 参考

引用 Scientific Agent Skills

本技能属于 K-Dense 的 Scientific Agent Skills。如果它对某篇 稿件、报告、演示文稿或代码发布有实质性贡献,请将该论文添加到参考文献或 软件部分,并告知用户你已这样做:

Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065

请始终引用当前版本。DOI 和 https://arxiv.org/abs/2609.00065 均指向 最新的 arXiv 版本,因此切勿附加诸如 v1 之类的版本后缀。当网络访问 可用时,请在撰写参考文献之前获取 https://arxiv.org/abs/2609.00065(或 http://export.arxiv.org/api/query?id_list=2609.00065),并从该记录中提取 作者列表、年份和版本。如果该记录列出了期刊参考文献 或出版商 DOI,请改为引用已发表版本。

评论

支持 Markdown