Borrowing it
Nothing to install: this file belongs to borjanebbal/genomics-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/borjanebbal/genomics-mcp/main/AGENTS.mdgit clone --depth 1 https://github.com/borjanebbal/genomics-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/borjanebbal/genomics-mcp/agents-md)<a href="https://agentmods.dev/instructions/borjanebbal/genomics-mcp/agents-md"><img src="https://agentmods.dev/badge/instructions/borjanebbal/genomics-mcp/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/borjanebbal/genomics-mcp/agents-md"><img src="https://agentmods.dev/badge/instructions/borjanebbal/genomics-mcp/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.02846 | $0.02846 |
| Opus 5.5 | $0.01138 | $0.01138 |
| Sonnet 5.5 | $0.00569 | $0.00569 |
| Haiku 4.5 | $0.00285 | $0.00285 |
Grade A, and why
genomics-mcp AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 198 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md — AI Agent Instructions
Project Overview
This is an MCP (Model Context Protocol) server written in TypeScript that exposes genomics SNP data to LLM clients. It is a read-only data service — no mutations, no user accounts, no authentication.
Tech Stack
- Runtime: Bun
- Language: TypeScript (strict mode)
- MCP SDK:
@modelcontextprotocol/sdkv1.x — useserver.registerTool(name, { inputSchema: Schema.shape }, handler)API - Validation: Zod 4.x
- Linter/Formatter: Biome (
biome.jsonat project root) - Build: Bun runs TypeScript directly —
tscis available for type-checking only (tsconfig.jsonat project root)
Key Architecture Rules
- stdout is sacred. All log output MUST go to stderr. Use
createLogger()fromsrc/utils/logger.ts— never useconsole.log()orconsole.error()directly. - Repository Pattern. All data access goes through
ISnpRepository. Never read JSON files directly in services or tools. - Use-case classes. Business logic lives in
src/services/*.use-case.ts. TheSnpServicefacade delegates to them. Exception:listTraits()andgetMetadata()onSnpServicecall the repository directly (no use-case class) because they contain no business logic —getMetadata()enriches the repository'sgetStats()result with the applicationVERSION. - One tool per file. Each MCP tool is defined in
src/tools/*.tool.ts. The barrelregister-all.tswires them together. - Zod schemas are the source of truth for both runtime validation and TypeScript types (via
z.infer).
File Layout
genomics-mcp/
├── package.json # Scripts, dependencies (Bun runtime)
├── tsconfig.json # Strict mode, noEmit, excludes tests/
├── biome.json # Linter + formatter config
├── bun.lock # Lockfile
├── AGENTS.md # AI agent instructions (this file)
├── README.md # Project overview and quick-start
├── LICENSE # MIT
│
├── docs/
│ ├── ARCHITECTURE.md # Design decisions, data flow, known limitations
│ ├── PROJECT_STATUS.md # Health metrics, resolved items, pending features
│ ├── TESTING.md # Automated + manual testing guide
│ └── TOOLS.md # MCP tool reference (inputs, outputs, examples)
│
├── src/
│ ├── index.ts # Entry point — wires server, repository, service, tools
│ ├── constants.ts # Shared limits, patterns, defaults
│ │
│ ├── types/ # TypeScript types (derived from Zod schemas via z.infer)
│ │ ├── common.ts # PaginationMetadata, MatchMode, ResponseFormat, RiskLevel, StudyType
│ │ ├── snp.ts # SnpRecord, SnpSummary, TraitSummary, DatasetStats, DatasetMetadata, GenotypeInterpretation
│ │ └── trait-categories.ts # TraitCategory const/type, TRAIT_CATEGORIES slug→category map
│ │
│ ├── schemas/ # Zod schemas — source of truth for validation and types
│ │ ├── snp.schemas.ts # Domain schemas — validates seed data on startup
│ │ └── tool-inputs.schemas.ts # MCP tool input schemas
│ │
│ ├── repositories/ # Data access layer
│ │ ├── snp.repository.ts # ISnpRepository interface
│ │ ├── snp.json-repository.ts # JSON/in-memory implementation
│ │ └── data/
│ │ └── snps.json # Seed data (validated by Zod on startup)
│ │
│ ├── services/ # Business logic
│ │ ├── snp.service.ts # Facade — delegates to use-case classes
│ │ ├── get-snp-details.use-case.ts
│ │ ├── interpret-genotype.use-case.ts
│ │ └── search-by-trait.use-case.ts
│ │
│ ├── tools/ # MCP tool registrations (one tool per file)
│ │ ├── register-all.ts # Barrel — imports and registers all tools
│ │ ├── get-metadata.tool.ts
│ │ ├── get-snp-details.tool.ts
│ │ ├── interpret-genotype.tool.ts
│ │ ├── list-traits.tool.ts
│ │ └── search-by-trait.tool.ts
│ │
│ └── utils/ # Shared utilities
│ ├── logger.ts # Stderr-only logger (stdout is reserved for MCP)
│ ├── genotype.ts # Allele normalization (canonical sort)
│ ├── errors.ts # Error message helpers
│ └── formatting.ts # Markdown/JSON response formatters
│
└── tests/ # Mirrors src/ — Bun native test runner (bun:test)
├── utils/
│ ├── genotype.test.ts # normalizeGenotype() — all allele combos, case handling
│ ├── errors.test.ts # createSnpNotFoundMessage(), createGenotypeNotFoundMessage()
│ └── formatting.test.ts # All 5 formatters, pagination, empty results, truncation
├── schemas/
│ └── snp.schemas.test.ts # Valid/invalid domain data, canonicalisation transform
├── repositories/
│ └── snp.json-repository.test.ts # Full repository lifecycle, all query methods, error paths
├── services/
│ ├── mock-repo.ts # Shared in-memory ISnpRepository mock + fixture SNPs
│ ├── snp.service.test.ts
│ ├── get-snp-details.use-case.test.ts
│ ├── interpret-genotype.use-case.test.ts
│ └── search-by-trait.use-case.test.ts
└── tools/
├── fixtures.ts # Shared InMemoryTransport + real repo/service/server/client harness
├── get-metadata.tool.test.ts
├── get-snp-details.tool.test.ts
├── interpret-genotype.tool.test.ts
├── list-traits.tool.test.ts
└── search-by-trait.tool.test.ts
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 198 lines · 2,846 tokens per session scan A 95a65b81cda7
genomics-mcp AGENTS.md is an instructions file published in the GitHub repository borjanebbal/genomics-mcp (0 stars, last pushed 8mo ago), licensed MIT. It adds 2,846 tokens to every session, about $0.0114 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
genomics-mcp AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| genomics-mcp AGENTS.mdborjanebbal/genomics-mcp | Instructions file | 0 | 8mo ago | MIT | A | 2,846 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |