Commit graph swift-sdk/Sources/MCP/Server
Author SHA1 Message Date
yehorsobko
a0ae212ebf
Improvements and fixes (#223)
Some checks failed
CI / Test (macos-latest, Swift 6.1.0) (push) Has been cancelled
CI / Test (ubuntu-latest, Swift 6.1.0) (push) Has been cancelled
CI / MCP Conformance Tests (push) Has been cancelled
CI / Documentation (push) Has been cancelled
CI / Linux Static SDK Build (6.1.2 - ubuntu-latest) (push) Has been cancelled
* feat: added http transport context to the task local execution

* fix: added refresh_token to the grantTypes for DCR

* chore: updated documentation
2026-04-29 14:34:21 +03:00
yehorsobko
973b46b8f7
feat: 2025-11-25 review fixes (#201)
* 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
2026-03-03 17:33:28 +02:00
Maksym Mova
6112a3995a
V0.11.x (#199)
* 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>
2026-02-19 13:09:31 +02:00
Yifan Liu
fb6fffbecd
fix: allow description field to be absent from Tool (#159)
* 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>
2025-09-07 04:30:19 -07:00
Mattt
ac90e679cd
Make Tool.description optional (#160)
* Make Tool.description optional

* Make description parameter in Tool initializer optional
2025-09-07 04:24:38 -07:00
Glacio
e2afccdcaa
Add plumbing to set instructions on Server (#145)
* 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>
2025-08-10 05:52:28 -07:00
Sébastien Stormacq
9ad382d397
remove info level logging message and use debug instead (#132) 2025-08-10 05:40:56 -07:00
Mattt
f3b9ba4a59
Make Tool.inputSchema nonoptional (#123) 2025-08-10 05:34:47 -07:00
Mattt
7a76001187
Adjust logging level for frequent / low-level events (#130) 2025-06-05 05:36:37 -07:00
Carl Peaslee
609cdc709b
Add Client.listResourceTemplates method (#125)
* 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>
2025-05-30 12:35:34 -07:00
Mattt
14fddc44c4
Move Sampling from Server to Client directory (#121) 2025-05-26 06:36:23 -07:00
Mattt
3b505ee575
Improve ergonomics of prompt and sampling message initialization (#120)
* Improve ergonomics of prompt and sampling message initialization

* Deprecate previous / existing Message initializers
2025-05-26 05:25:02 -07:00
Mattt
fac4df6b1a
Add support for sampling (#119)
* Add UnitInterval type

* Add test coverage for UnitInterval

* Add support for sampling

* Add integration tests for sampling
2025-05-26 04:57:24 -07:00
Mattt
720a8102e9
Implement client protocol version negotiation in server initialization (#107)
* 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
2025-05-07 05:58:11 -07:00
Mattt
800131fb9c
Don't throw error if there's a protocol mismatch between client and server (#103) 2025-05-06 11:53:02 -07:00
Mattt
25dee3bb4c
Send initialized notification from client instead of server (#85) 2025-04-21 14:43:33 -07:00
Mattt
4143f35b41
Implement Tool.Annotations (#47) 2025-04-15 05:42:44 -07:00
Mattt
c748bc1549
Add support for audio content in prompts and tool results (#73) 2025-04-15 05:41:28 -07:00
Mattt
82f4fd29b3
Add support for JSON-RPC batching (#67)
* Update StdioTransport documentation comments to indicate support for JSON-RPC batches

* Add server support for JSON-RPC batching

* Add client support for JSON-RPC batching

* Fix bug that caused error messages to be wrapped unnecessarily
2025-04-10 12:13:41 -07:00
Mattt
09da2a1c01
Rename Error to MCPError (#44)
* Rename Error to MCPError

* Conform MCPError to Swift.Error

* Use unqualified Error instead of Swift.Error

* Use unqualified MCPError instead of MCP.MCPError

* Rename file back to Error.swift

* Introduce top-level MCP namespace with nested Error typealias to provide deprecation notice for existing usage of MCP.Error

* Fix markup for MCP enum warning
2025-04-03 05:25:00 -07:00
Mattt
a9bcbf9ad9
Update transports to send and receive data instead of strings (#42)
* Update transports to send and receive data instead of strings

* Rename MockTransport helper methods

* Adopt Task.sleep(for:...) instead of variant taking nanoseconds

* Update comment

* Revert inadvertant change to visibility of send method
2025-04-03 04:42:56 -07:00
Mattt
d55140bc46
Import System package when available (#34)
* Import System package when available

* Add isResourceTemporarilyUnavailable helper method to reduce number of imports of System / SystemPackage
2025-03-31 05:30:45 -07:00
Adam Wulf
97b756c0f4
Add waitUntilComplete() method to Server (#26)
* Add waitUntilComplete() method to Server

* Update Sources/MCP/Server/Server.swift

Co-authored-by: Mattt <mattt@me.com>

---------

Co-authored-by: Mattt <mattt@me.com>
2025-03-29 04:26:16 -07:00
Mattt
2510dda70e
Add server initialization hook (#19) 2025-03-18 09:47:54 -07:00
Mattt
e0186b5ad5
Configure JSON encoding format options (#21) 2025-03-18 09:44:44 -07:00
Mattt
59b6b755c0
Revert "Update capabilities to be expressible by Boolean literals (#16)" (#18)
This reverts commit 3e628db6d8.
2025-03-17 05:42:27 -07:00
Mattt
6f1f65a392
Allow params field to be omitted in requests for methods that don't require them (#17)
* Allow `params` field to be omitted in requests for methods with empty parameters

* Add ping request to roundtrip test

* Generalize decoding of non-required parameters
2025-03-17 05:26:47 -07:00
Mattt
3e628db6d8
Update capabilities to be expressible by Boolean literals (#16)
* Conform Server.Capabilities types to ExpressibleByBooleanLiteral

* Conform Client.Capabilities types to ExpressibleByBooleanLiteral

* Use Boolean literatls for capabilities in tests

* Update README
2025-03-17 04:35:03 -07:00
Mattt
a2a0044abb
Remove nonstandard read and list capabilities for resources (#15)
* Remove nonstandard read and list capabilities for server

* Update README
2025-03-17 04:17:23 -07:00
Mattt
a62e51a61c
Make CallTool.Result.isError optional (#11) 2025-03-14 06:24:46 -07:00
Mattt
893614e241
Update server to always send response to invalid messages (#6) 2025-03-04 06:25:40 -08:00
Mattt
1f5f8d64b9
Add configurable strict mode for MCP server initialization (#3)
Adds a Configuration struct to control server behavior around client initialization.
When strict mode is enabled, server enforces MCP spec requiring clients to initialize
before sending requests. Default mode is more permissive for non-compliant clients.
2025-03-04 06:02:43 -08:00
Mattt Zmuda
be1e9583f8
Initial implementation 2025-02-11 15:22:35 -08:00