SSWConsulting / SSWConsulting/TimePro.Tools
Upgrade ModelContextProtocol SDK to 2.x (MCP 2026-07-28)
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 3
- Forks
- 0
- Avg merge
- 29m
- Merged PRs (30d)
- 28
Description
Scope
Directory.Packages.props pins ModelContextProtocol 1.4.0. The current stable is 2.2.0 (matches the 2026-07-28 protocol revision). Upgrade after the CLI/MCP unification epic (#38) lands, as a standalone dependency PR.
What we use, and expected impact
An API audit of the 2.2.0 package against this repo found no source-breaking change for our surface:
| Used here | Status in 2.x |
|---|---|
[McpServerToolType], [McpServerTool] with ReadOnly/Destructive/Idempotent |
retained |
AddMcpServer(), WithStdioServerTransport(), WithTools<T>() |
retained |
Task<string> tools with [Description] and injected CancellationToken |
retained |
| HTTP/SSE transport, Roots, Sampling, MCP Logging, Tasks, raw JSON-RPC | not used, so their breaking changes do not apply |
This is an inspection result, not a compile. 2.2.0 requires Microsoft.Extensions 10.0.10 abstractions and Microsoft.Extensions.AI.Abstractions 10.8.3; the repo pins Microsoft.Extensions 10.0.9, so a restore conflict is possible and must be checked.
Client impact
- Stdio config for Claude Code, Codex CLI, Claude Desktop and VS Code stays the same (
tp mcp ...). No HTTP, port, or OAuth change. - 2.x keeps down-level interoperability: legacy clients still do
initializeversion negotiation, 2026-07-28 clients use discovery. Upgrading the server does not drop older clients, but each client must be tested at a recorded version. - Keep
--tenant,--env, accounting gating, and stderr-only logging.
New capabilities to adopt afterwards, each in its own PR
- Structured output:
UseStructuredContent = truewith typed result records (already available in 1.4.x), keeping JSON text for older consumers. - Tool annotations: mark reads
ReadOnly, mark update/delete/cancel/import destructive.GetSuggestedTimesheetsrefreshes server state, so it is not read-only. RevisitIdempotent = trueon import. - Elicitation for confirmations on destructive tools, with a fallback for clients that do not support it.
Acceptance
- Restore, build, unit, integration and NuGet audit green on 2.2.0
- Stdio initialize (legacy) and discovery (new) both work;
tools/listshows 18 default / 47 with accounting - Reads, errors, cancellation and shutdown exercised; writes only against fakes or staging
- Four named clients tested and versions recorded in the PR
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
After CLI/MCP unification epic #38 lands, update the ModelContextProtocol pin in Directory.Packages.props from 1.4.0 to 2.2.0 and begin with restore to check the Microsoft.Extensions version conflict. Run the unit, integration, build, and NuGet audit checks, then exercise legacy initialize and new discovery over stdio with the four named clients; done means all acceptance checks pass and client versions are recorded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- cli, devtools
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100