Strengthen mcp-csharp-test with prescriptive MCP-specific steps#940
Closed
leslierichardson95 wants to merge 1 commit into
Closed
Strengthen mcp-csharp-test with prescriptive MCP-specific steps#940leslierichardson95 wants to merge 1 commit into
leslierichardson95 wants to merge 1 commit into
Conversation
The cross-family eval (#889) rated mcp-csharp-test high-impact (0.65) but STRENGTHEN 0/5 — it misses frontier models because it 'assumes context they solve unaided' (generic xUnit testing). Add opinionated, MCP-specific steps that change behavior even for strong models, while keeping the skill token-efficient: - Default integration tests to the SDK's in-memory ClientServerTestBase; reserve process-spawning StdioClientTransport for one E2E smoke test (spawning dotnet run per fixture is the top cause of flaky/hanging tests) - Add an MCP-specific quality assertion: every tool must expose a non-empty Description (MCP clients rely on it to choose tools) - Add matching Validation checklist items Refs #889 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6a8ce111-58e5-48a7-9f7f-8de972bdc693
Contributor
Skill Coverage Report
Uncovered:
|
Contributor
There was a problem hiding this comment.
Pull request overview
Strengthens the mcp-csharp-test skill content to be more prescriptive and MCP-specific, aiming to improve skilled-run behavior (especially for stronger models) by emphasizing deterministic in-memory integration testing and adding a quality gate around tool descriptions.
Changes:
- Adds guidance to default integration tests to in-memory
ClientServerTestBaseand limitStdioClientTransportto a single E2E smoke test. - Adds an MCP-specific integration test assertion that every tool exposes a non-empty
Description. - Updates the Validation checklist to reflect the new testing guidance and description requirement.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+96
to
100
| Test the full MCP protocol through a real MCP client. | ||
|
|
||
| > **Default to in-memory testing.** Use the SDK's `ClientServerTestBase` (see [references/test-patterns.md](references/test-patterns.md)) — it wires client and server in-process, so tests are fast and deterministic with no spawned process. Reserve the process-spawning `StdioClientTransport` below for **one** end-to-end smoke test, not your whole suite — spawning `dotnet run` per fixture is the #1 cause of flaky, hanging integration tests. | ||
|
|
||
| ```csharp |
Comment on lines
+131
to
+132
| var tools = await _client.ListToolsAsync(); | ||
| tools.Should().OnlyContain(t => !string.IsNullOrWhiteSpace(t.Description)); |
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Strengthens
mcp-csharp-testwith prescriptive, MCP-specific guidance so it helps strong models, not just weak ones.Why
The cross-family skills-eval (#889) rated this skill high-impact (0.65) but STRENGTHEN 0/5 — it misses both frontier models because it "assumes context they solve unaided." The body largely showed generic xUnit patterns a frontier model already knows, so a skilled run tied with baseline.
Changes (kept lean — the skill is already token-efficient)
ClientServerTestBaseinstead of spawningdotnet runviaStdioClientTransport; reserve the process-spawning transport for a single end-to-end smoke test. (Per-fixture process spawning is the top cause of flaky/hanging integration tests — the skill's own Pitfalls section calls this out.)Description(MCP clients rely on descriptions to choose tools) — a check frontier models don't write by default.Verification
skill-validator checkruns in CI. Recommend a cross-family eval re-run (-f skills="mcp-csharp-test" -f executors="opus,gpt" -f runs=5; prioravgNwas ~2.8, so use more runs).Refs #889
Moved from fork branch to the primary dotnet/skills repo; supersedes #936.