Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Synthesize Bio MCP server

Vendor MCP
Open markdown

The Synthesize Bio MCP connector routes your AI agent's tool calls to Synthesize Bio's own MCP server through Scalekit. Each user signs in to Synthesize Bio once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 5 tools.

Tools
5
What they doRead · write · destructive
4 · 0 · 14 read0 write1 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Synthesize Bio MCP connection

    In AgentKit > Connections, create a Synthesize Bio MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Synthesize Bio MCP server, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'synthesizebiomcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Synthesize Bio MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'synthesizebiomcp_get_metadata_schema',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • synthesizebiomcp_get_analysis_resultsPoll the status and results of a running gene expression analysis job.Read-only

    Get Analysis Results

    Poll the status and results of a running gene expression analysis job.

    Inputs

    job_idstringrequired
    The job_id returned by analyze_gene_expression.
  • synthesizebiomcp_get_counts_data_urlRetrieve a presigned download URL for the raw gene expression counts data produced by a completed analysis job.Read-only

    Get Counts Data Url

    Retrieve a presigned download URL for the raw gene expression counts data produced by a completed analysis job.

    Inputs

    job_idstringrequired
    The job_id returned by analyze_gene_expression.
  • synthesizebiomcp_get_metadata_schemaRetrieve the structured-metadata schema used to turn a natural-language experiment description into the sample groups required by resolve_sample_metadata.Read-only

    Get Metadata Schema

    Retrieve the structured-metadata schema used to turn a natural-language experiment description into the sample groups required by resolve_sample_metadata.

    Inputs

    modalitystring
    Sequencing modality. Defaults to "bulk".one of bulksingleCell
  • synthesizebiomcp_resolve_sample_metadataResolve a natural-language experiment description into structured sample groups using Synthesize Bio's AI metadata extraction.Read-only

    Resolve Sample Metadata

    Resolve a natural-language experiment description into structured sample groups using Synthesize Bio's AI metadata extraction.

    Inputs

    modalitystring
    Sequencing modality. Defaults to "bulk".one of bulksingleCell
    promptstring
    Natural language description of the experiment, e.g. "heart vs liver cells" or "KRAS knockout vs control in lung adenocarcinoma". Required unless `resolution_id` is provided to poll a previously-started resolution.
    resolution_idstring
    Resolution identifier from a previous response with status 'resolving'. When provided, polls that in-flight resolution and `prompt` may be omitted.
  • synthesizebiomcp_analyze_gene_expressionStart a differential gene expression analysis using Synthesize Bio's AI platform, returning a job ID to track progress.Destructive

    Analyze Gene Expression

    Start a differential gene expression analysis using Synthesize Bio's AI platform, returning a job ID to track progress.

    Inputs

    resolution_idstringrequired
    The completed resolution_id returned by resolve_sample_metadata.