mcp-dotnet-samples copilot-instructions.md

Repository-specific instructions for a set of independent .NET servers that use the Model Context Protocol (MCP) to expose tools and services.

In plain words
What is it for?
Use them when adding or changing MCP tools, prompts, resources, HTTP or command-line modes, shared libraries, or sample-specific code.
Why use it?
They help an agent follow the existing structure and conventions instead of inventing new patterns that may not fit the repository.

Instructions file for GitHub Copilot

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/microsoft/mcp-dotnet-samples/copilot-instructions
Clone the repo
git clone --depth 1 https://github.com/microsoft/mcp-dotnet-samples

Made for: GitHub Copilot.

Per session 1,021 This file is loaded in full into every session.
When invoked 1,021 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.01021 $0.01021
Opus 5 $0.00511 $0.00511
Sonnet 5 $0.00204 $0.00204
Haiku 4.5 $0.00102 $0.00102

Measured 2d ago against content hash 90aad4e049db, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

mcp-dotnet-samples copilot-instructions.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 2d 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.

.github/copilot-instructions.md · 57 lines

How it starts

The opening of the file, as written. The whole thing — 57 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Copilot Instructions (Concise) – MCP .NET Samples

Purpose: Make agents instantly productive. Follow ONLY patterns proven in this repo; don’t invent abstractions.

Architecture & Runtime

  • Mono-repo of independent Hybrid MCP servers: awesome-copilot/, markdown-to-html/, todo-list/, outlook-email/ + shared lib shared/McpSamples.Shared/.
  • Hybrid pattern: same Program.cs can run STDIO (default) or stateless HTTP when -- http (or env UseHttp=true). Selection via AppSettings.UseStreamableHttp(...); final wiring through BuildApp(useStreamableHttp).
  • Discovery: Tools / Prompts / Resources auto-registered by assembly scan (With*FromAssembly). New public attributed types in the entry assembly just work—avoid manual registration.
  • HTTP mode: single POST /mcp; some samples add dual OpenAPI docs (swagger 2.0 + openapi 3.0) via McpDocumentTransformer<T>.

Sample-Specific Nuance

  • awesome-copilot: Large metadata.json; reuse IMetadataService (don’t repeatedly load whole file). Tools: search & load instructions.
  • markdown-to-html: Extra switches -tc, -p, --tags only parsed AFTER -- delimiter.
  • todo-list: In‑memory SQLite kept alive by one singleton SqliteConnection; use EF Core set-based ops (ExecuteUpdateAsync/ExecuteDeleteAsync).
  • outlook-email: Supports auth parameters (--tenant-id/-t, --client-id/-c, --client-secret/-s) or user secrets; can also host via Azure Functions (see sample README). Only add auth handling inside this sample—do not leak to shared.

Core Conventions

  • Target: .NET 9; nullable + implicit usings enabled globally.
  • Entry project path pattern: ./<sample>/src/<PascalName>.HybridApp/.
  • Always preserve argument delimiter: dotnet run … -- --http <other-switches>.
  • JSON camelCase & case-insensitive (match existing config); prefer System.Text.Json.
  • Keep Dockerfiles minimal; expose port 8080 internally; local HTTP dev ports: ac=5250, todo=5240, html=5280, outlook=5260.

Adding / Modifying Tools

  • Create public class or method with [McpServerTool] (and [Description] for method + parameters). Return lightweight DTO / primitives; let host format.
  • For prompts use [McpServerPrompt]. No manual DI registration unless you need extra services—then add via builder.Services before BuildApp.

Read the full file on GitHub · 57 lines

Changes

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.

  1. 2d ago First seen · 57 lines · 1,021 tokens per session scan A 90aad4e049db

Subscribe to this mod's changes

mcp-dotnet-samples copilot-instructions.md is an instructions file published in the GitHub repository microsoft/mcp-dotnet-samples (196 stars, last pushed 6d ago), licensed MIT. It adds 1,021 tokens to every session, about $0.0051 per session on Opus 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-30.