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
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>Create the Synthesize Bio MCP connection
In AgentKit > Connections, create a Synthesize Bio MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Synthesize Bio MCP server, so you don't need to register an OAuth app.
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.actionsconst connector = 'synthesizebiomcp'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'synthesizebiomcp_get_metadata_schema',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "synthesizebiomcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Synthesize Bio MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="synthesizebiomcp_get_metadata_schema",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolsynthesizebiomcp_get_analysis_resultsPoll the status and results of a running gene expression analysis job.Read-onlyGet 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-onlyGet 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-onlyGet 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-onlyResolve Sample Metadata
Resolve a natural-language experiment description into structured sample groups using Synthesize Bio's AI metadata extraction.
Inputs
groupsarray- Array of sample-group objects you extracted from the user's description, each matching get_metadata_schema's `group_schema` (one object per experimental condition, usually >= 2 for differential expression). Required unless `resolution_id` is provided to poll a previously-started resolution.
modalitystring- Sequencing modality. Defaults to "bulk".one of
bulksingleCell original_requeststring- The user's experiment request, VERBATIM — copy their exact wording. Do NOT paraphrase, summarize, translate, correct, or fill in gaps; if they wrote multiple messages, concatenate the relevant text as-is. This is required whenever you pass `groups` (omit it only when polling with `resolution_id`). It is NOT used for extraction (you already did that from get_metadata_schema) — it is stored so the Synthesize Bio team can see what was actually asked.
resolution_idstring- Resolution identifier from a previous response with status 'resolving'. When provided, polls that in-flight resolution and `groups` may be omitted.
workspace_idstring- Workspace that should own the generated dataset and metadata resolution. Omit when the account has zero or one workspace; required before metadata resolution when the account has multiple workspaces.
synthesizebiomcp_analyze_gene_expressionStart a differential gene expression analysis using Synthesize Bio's AI platform, returning a job ID to track progress.DestructiveAnalyze 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.
user_confirmed_metadatabooleanrequired- True when the human user has approved the resolved sample groups from resolve_sample_metadata. Required; missing or false yields failure_kind `user_confirmation_required`.
workspace_idstring- Override workspace ownership. Usually omitted — the workspace from resolve_sample_metadata is used automatically.
No tools match.