Neurosnap Model Context Protocol (MCP) Tutorial | The MCP Server For Bioinformatics
Written by Keaun Amani | Published 2026-5-26
Written by Keaun Amani | Published 2026-5-26
We are excited to announce the official release of the Neurosnap MCP server. MCP, short for Model Context Protocol, allows LLMs and agentic tools such as Codex, Claude, and other compatible clients to interact directly with the Neurosnap platform in a structured and secure way.
With the Neurosnap MCP server, bots can browse your jobs, inspect job data and files, submit new jobs, review pipelines, and access team and account information using the same Neurosnap account they already use today. This makes it much easier to build automated research workflows, agent-driven analysis pipelines, and AI-assisted lab tooling on top of Neurosnap.
Please keep in mind that this tutorial and the Neurosnap MCP server are designed to be used by those with at least a basic understanding of programming, APIs, and agent tooling.
To access the Neurosnap MCP server you will first need to generate an API key for your account. The same API key used for the Neurosnap HTTP API is also used to authenticate MCP access.
Generate API Key button.
The Neurosnap MCP server is available at:
https://neurosnap.ai/mcp
Authentication is performed using your Neurosnap API key. Most MCP clients should use the standard bearer token format:
Authorization: Bearer YOUR_API_KEY
Some tools may also support passing the key as an X-API-KEY header.
The easiest way to use the Neurosnap MCP server is with an MCP-compatible client.
The following example adds the Neurosnap MCP server to Codex locally:
export NEUROSNAP_API_KEY="YOUR_API_KEY"
codex mcp add neurosnap --url https://neurosnap.ai/mcp --bearer-token-env-var NEUROSNAP_API_KEY
codex
Once connected, Codex can list Neurosnap tools, browse resources, read job files, inspect pipelines, and submit jobs on your behalf.
If you want to inspect the server manually, the MCP Inspector is a good place to start:
npx -y @modelcontextprotocol/inspector
Then connect it to:
https://neurosnap.ai/mcp
and provide your API key as a bearer token.
The Neurosnap MCP server exposes three main primitive types:
Tools: actions that perform work, such as submitting a job.Resources: read-only data, such as jobs, pipelines, team members, and file contents.Prompts: reusable prompt templates that help MCP-compatible assistants perform common Neurosnap workflows.Most MCP clients follow the same general flow:
Below are some example JSON-RPC requests for working directly with the MCP endpoint.
import requests
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
}
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "example-client",
"version": "1.0"
}
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
Neurosnap MCP tools are primarily used to submit jobs. One MCP tool is exposed for each available Neurosnap service.
payload = {
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
The result will contain a list of available Neurosnap service tools such as:
{
"name": "submit_alphafold2",
"title": "AlphaFold2",
"description": "..."
}
To submit a job, call the appropriate service tool. Scalar inputs are supplied in inputs using the exact Neurosnap form field titles as keys. File uploads are supplied in files.
payload = {
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "submit_alphafold2",
"arguments": {
"note": "Example MCP submission",
"inputs": {
"Sequence": "MVLSPADKTNVKAAW"
}
}
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
# {
# "jsonrpc": "2.0",
# "id": 3,
# "result": {
# "structuredContent": {
# "job_id": "682f0d0f9f4b2d47b53e1234",
# "service": "AlphaFold2",
# "job_uri": "neurosnap://jobs/682f0d0f9f4b2d47b53e1234",
# "data_uri": "neurosnap://jobs/682f0d0f9f4b2d47b53e1234/data"
# }
# }
# }
For tools that require uploaded files, place them under files. Text-based files can be passed using content, while binary data should be passed using content_base64.
import base64
with open("input.fasta", "rb") as f:
fasta_b64 = base64.b64encode(f.read()).decode()
payload = {
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "submit_mafft_msa_generation",
"arguments": {
"inputs": {},
"files": {
"Input File": {
"name": "input.fasta",
"content_base64": fasta_b64
}
}
}
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
Resources provide structured, read-only access to Neurosnap account data, jobs, pipelines, and files.
payload = {
"jsonrpc": "2.0",
"id": 5,
"method": "resources/list",
"params": {}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
payload = {
"jsonrpc": "2.0",
"id": 6,
"method": "resources/templates/list",
"params": {}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
The Neurosnap MCP server currently exposes the following resources:
neurosnap://jobsLists your accessible Neurosnap jobs.
neurosnap://jobs/JOB_IDReturns metadata for a specific job.
neurosnap://jobs/JOB_ID/dataReturns the submission configuration and file inventory for a job.
neurosnap://jobs/JOB_ID/file/[in/out]/PATHReturns the contents of a specific input or output file from a job.
neurosnap://pipelinesLists your accessible pipelines.
neurosnap://pipelines/PIPELINE_IDReturns the current status of a specific pipeline, including jobs and pipeline errors.
neurosnap://account/creditsReturns information about your current personal credits and account plan.
neurosnap://team/membersReturns your team member list if you are part of a Neurosnap Team.
neurosnap://team/creditsReturns your team credit balance if you are part of a Neurosnap Team.
payload = {
"jsonrpc": "2.0",
"id": 7,
"method": "resources/read",
"params": {
"uri": "neurosnap://jobs"
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
payload = {
"jsonrpc": "2.0",
"id": 8,
"method": "resources/read",
"params": {
"uri": "neurosnap://jobs/682f0d0f9f4b2d47b53e1234/data"
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
payload = {
"jsonrpc": "2.0",
"id": 9,
"method": "resources/read",
"params": {
"uri": "neurosnap://jobs/682f0d0f9f4b2d47b53e1234/file/out/output.json"
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
payload = {
"jsonrpc": "2.0",
"id": 10,
"method": "resources/read",
"params": {
"uri": "neurosnap://pipelines"
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
payload = {
"jsonrpc": "2.0",
"id": 11,
"method": "resources/read",
"params": {
"uri": "neurosnap://pipelines/683010ae9f4b2d47b53e9876"
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
Prompts provide reusable instructions for MCP-compatible assistants. They are especially useful when working with agentic clients that can combine Neurosnap tools and resources automatically.
payload = {
"jsonrpc": "2.0",
"id": 12,
"method": "prompts/list",
"params": {}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
The Neurosnap MCP server currently includes prompts such as:
choose_tool_for_taskanalyze_job_resultssummarize_team_usagesubmit_job_with_toolpayload = {
"jsonrpc": "2.0",
"id": 13,
"method": "prompts/get",
"params": {
"name": "submit_job_with_tool",
"arguments": {
"tool_name": "submit_alphafold2",
"user_request": "Predict the structure of this protein: MVLSPADKTNVKAAW"
}
}
}
r = requests.post("https://neurosnap.ai/mcp", headers=headers, json=payload)
print(r.json())
Neurosnap MCP access is authenticated using the same API key as the Neurosnap HTTP API. Because of this, your API key should be treated as highly sensitive.
Please keep the following in mind:
For best practices, store your API key in an environment variable or your MCP client’s secret configuration system.
Congrats on making it this far! You should now have everything you need to start using the Neurosnap MCP server with compatible clients and agent frameworks.
The MCP server makes it much easier to connect LLM-powered workflows directly to Neurosnap, whether you want to automate job submission, inspect results, browse files, or build more advanced AI-assisted research tooling.
Please keep in mind that we have plans to continue expanding the capabilities of the Neurosnap MCP server and that changes to the available tools, prompts, and resources are certainly possible. Make sure to keep referencing this page for updates.
By Danial Gharaie Amirabadi
By Amélie Lagacé-O'Connor
By Danial Gharaie Amirabadi
By Keaun Amani
By Keaun Amani
By Keaun Amani
Register for free — upgrade anytime.
Interested in getting a license? Contact Sales.
Try Free