Skill
MCP Server Review Skill for GitHub Copilot
A GitHub Copilot custom skill that reviews MCP servers for protocol compliance, obsolete features, missing requirements, and security issues.

- Sample type
- Skill
- Products
- GitHub Copilot
- Created
- Updated
Sample documentation
How to use this sample
Summary
This skill teaches GitHub Copilot to review a Model Context Protocol (MCP) server against the 2026-07-28 protocol revision, and to report what is obsolete, what is missing, and what is a security requirement rather than a style preference.
The problem it addresses is specific. Revision 2026-07-28 removed the initialize handshake and the Mcp-Session-Id header and made MCP stateless. Server code written before that still compiles, still passes its own tests, and still reads correctly in review. It simply speaks a shape modern clients no longer send. There is no error that says "wrong protocol revision", so the symptom usually surfaces as a client that cannot connect for reasons nobody can localise.

Skill đĄ
The full skill definition is in SKILL.md. To use it, copy the SKILL.md file into your repository's .github/skills/mcp-server-review/ folder.
Trigger Phrases
Say any of these to GitHub Copilot to activate the skill:
- "Review this MCP server for spec compliance"
- "Which MCP protocol revision does this server implement?"
- "Audit my MCP server against 2026-07-28"
- "Upgrade this MCP server to the latest protocol revision"
- "My MCP client can't connect to this server, what's wrong?"
Description âšī¸
The skill walks Copilot through nine steps:
- Establishing the revision from evidence in the code rather than from an SDK version number, since SDK majors and protocol revisions move independently
- Finding removed features still present - the
initialize/initializedhandshake (SEP-2575),Mcp-Session-Id(SEP-2567), the GET stream endpoint,Last-Event-IDresumability, and server-initiated JSON-RPC requests on SSE - Checking the request metadata contract - the required
MCP-Protocol-Version,Mcp-MethodandMcp-Nameheaders for JSON-RPC requests, the exact_metakey names, and whether the server actually rejects header and body disagreement with error-32020 - Checking response handling - both valid response shapes,
202 Acceptedfor notifications, stream closure as cancellation - Checking the security requirements separately, preserving the specification's MUST level for
Originvalidation and SHOULD levels for localhost binding and authentication - Validating
x-mcp-headerannotations, including the rule thatnumberis not a permitted type and that a conforming client will exclude an entire tool whose annotations are invalid - Flagging deprecated features on the twelve month removal clock
- Noting what the revision added - stateless operation,
server/discover, cacheable list results, Multi Round-Trip Requests - Writing the review report with cited findings, explicit requirement levels, and a mandatory Not determined section
The design choice that matters
The report has a mandatory Not determined section, and the skill is explicit that a check which could not be evaluated must never be folded into "passed". A reviewer reading a clean report has to be able to tell the difference between "this is correct" and "this was not visible from the code provided".
The skill also instructs Copilot to cite the rule behind every finding, to separate MUST from SHOULD as the specification does, and to consult the specification rather than write the protocol from memory - which is the single most likely way to produce a confidently wrong review of a revision this new.
Prerequisites
Contributors đ¨âđģ
Version history
| Version | Date | Comments |
|---|---|---|
| 1.0 | August 15, 2026 | Initial release, covering protocol revision 2026-07-28 |
Instructions đ
- Copy
SKILL.mdinto your repository at.github/skills/mcp-server-review/SKILL.md - Open the MCP server repository or relevant server files in Visual Studio Code
- Open GitHub Copilot Chat
- Ask: "Review this MCP server for spec compliance"
- Provide the target protocol revision, transport, and backward compatibility requirements when prompted
Help
We do not support samples, but this community is always willing to help, and we want to improve these samples. We use GitHub to track issues, which makes it easy for community members to volunteer their time and help resolve issues.
You can try looking at issues related to this sample to see if anybody else is having the same issues.
If you encounter any issues using this sample, create a new issue.
Finally, if you have an idea for improvement, make a suggestion.
Disclaimer
THIS CODE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
Learn more
References
Background and supporting resources provided by the contributor.