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
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.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.
No tools match.