* feat: improvement to oauth resources resolution
* feat: improvements to refreshToken procedure and updates to unit tests
* feat: improvements to documentation of clien_id
* fix: review fixes of the latest changes
* fix: updated unit tests
* chore: more conformance compliance improvements
* chore: reverted protocol changes
* chore: more compliance improvements
* chore: more conformance compliance improvements
* chore: improvements to the backcompat and updated to Tool unit tests
* chore: ci update
* Support 2025-06-18 Spec (#167)
* Support OpenAI _meta for Tool
* Update init
* Add title and outputSchema
* Concurreny issue
* General fields
* Add Generate Fields to Server elements
* 4 tab spacing
* Update Version
* Elicitation
* Format
* More tests and inits
* Elicitation in README
* Fix orphaned test
* Add title to more structs
* Public init
* Fix meta validation and make tests more generic
* Format and make Result properties public again
* Revert more visibility changes
* feat: 2025-11-25 phase 1, includes Version, Icon, Progress (#181)
* chore: fixed unit tests
* feat: added icon and progess base structs
* feat: added progress notification and meta to callTool
* feat: added tests
* feat: simplified RequestMeta encoding/decoding
* tests: added unit test to track progress
* chore: rebased v0.11.x
* feat: implemented cancellation
* feat: added overloaded callTool method
* fix: encoding Response _meta fix
* chore: added old version to the versions list
* feat: 2025-11-25 phase 2; added Logging and Completions (#196)
* feat: added Logging and Completions
* feat: updated EmbeddedResource for the latest spec
* chore: changed encoding of meta in Prompts to encodeIfPresent
* feat: compliance tests + http server transport (#197)
* feat: http server transport
* feat: added http server transport
* feat: removed unused files
* feat: added conformance tests
* feat: improved conformace testing
* chore: removed redundant files
* feat/2025-11-25: sampling, elicitation, roots (#198)
* feat: Roots implementation
* feat: added unit testing
* feat: improved unit tests and fixed NetworkTransport crash
* feat: implemented sampling and elicitation
* feat: improved sampling tests
* feat: improved elicitation tests
* feat: improved confirmance tests
* feat: improved Prompts unit tests
* feat: removed test code
* feat: updated conformance tests
* chore: removed redundant commas
* chore: removed 6.0.3 swift version from ci
* chore: improved unit tests a little bit
* chore: update README.md
* chore: add server progress tracking example to README.md
* chore: updated README.md
* chore: updated transports table formatting
* chore: updated MockNetworkConnection
---------
Co-authored-by: Austin Evans <austinjevans@me.com>
Co-authored-by: yehorsobko <yehorsobko@macpaw.com>
* fix: allow description field to be absent from `Tool`
* description field is not a requried field of Tool
* Apply suggestions from code review
* Update Tests/MCPTests/ToolTests.swift
---------
Co-authored-by: Mattt <mattt@me.com>
* Adopt strict concurrency for project
* Fix one warning related to that
* Add version-specific manifest for Swift 6.0
---------
Co-authored-by: Alexey Ivashko <a_ivashko@apple.com>
Co-authored-by: Mattt Zmuda <mattt@me.com>
* Add requestModifier property to HTTPClientTransport
Co-authored-by: Tim Wang <tim.wang@ing.com>
* Add test coverage
---------
Co-authored-by: Tim Wang <tim.wang@ing.com>
* Replace compile-time directives with target platform conditions
Use Package.swift target platform conditions instead of compile-time #if directives for EventSource dependency. This leverages Swift Package Manager's native dependency support for platform-specific targets at runtime rather than compile-time.
* Update reference for EventSource package
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mattt <mattt@me.com>
* Add plumbing to set instructions on Server
* Use instructions description from MCP schema
---------
Co-authored-by: Peter Liddle <development.peter@liddle.network>
Co-authored-by: Mattt <mattt@me.com>
* adds listResourceTemplates to client for #124
* add pagination to resources/templates/list
from @mattt
Co-authored-by: Mattt <mattt@loopwork.com>
* adds cursor functionality to ListResourceTemplates
* updates the client method to use the updated signature
---------
Co-authored-by: Mattt <mattt@loopwork.com>
* Improve NetworkTransport and add test coverage
* Remove the weakTransport check since actors have special memory management rules
* Use Task.sleep(for:) consistently
* Always start connection in connect
* Run NetworkTransportTests serially
* Implement client version negotiation in server initialization
* Add test coverage for version negotiation
* Make Version.supported and Version.negotiate() APIs internal to not create new surface area
* Expand README with more information about client and server usage
* Add discussion of initialize hook for server
* Add section about request batching
* Trim trailing whitespace
* Rename section to Request Batching
* Add example usage to HTTPClientTransport documentation comments
* Add documentation comments to NetworkTransport
* Improve documentation comments for StdioTransport
* Delay SSE GET connection until after session ID is established
- Add a signaling mechanism to ensure the SSE streaming task waits for the initial session ID to be set before attempting the GET connection.
- Use a TaskGroup to race between session ID signal and a 10-second timeout, logging the outcome.
- Trigger the signal when a session ID is received for the first time from any response.
- Add detailed logging for all code paths to aid debugging and clarify connection timing.
- Clean up signal resources on disconnect to prevent leaks.
This addresses the initialization timing issue where the SSE GET could be attempted before the session was established, as discussed in MCP PR #91.
* Update tests for SSE timing
* Use configurable timeout for acquiring session ID
* Remove Actor protocol conformance for HTTPClientTransport
* Configure shorter session ID timeout for tests
* Add documentation comments to HTTPClientTransport
* Rename sessionIDWaitTimeout to sseInitializationTimeout
* Add package dependency for github.com/loopwork-ai/EventSource
* Use EventSource for SSE implementation
* Refactor response stream and content type handling
Co-authored-by: Stephen Tallent <stallent@mercury.io>
* Conditionalize use of streaming for supported platforms
* Refactor conditional platform handling
* Conditionalize code and package dependency on Linux
---------
Co-authored-by: Stephen Tallent <stallent@mercury.io>
* Add test coverage for Client with HTTPClientTransport
* Configure HTTP client transport to stream by default
* Add example usage of streaming HTTP transport to README
* Explicitly set streaming to false in test
* support 405 response from servers that don’t support streaming
* Rephrase comment
---------
Co-authored-by: Stephen Tallent <stallent@mercury.io>
Co-authored-by: Mattt Zmuda <mattt@loopwork.com>