Skip to content

Commit 6112a39

Browse files
movetzajevans99yehorsobko-mac
authored
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>
1 parent 6fa1a97 commit 6112a39

52 files changed

Lines changed: 11854 additions & 828 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ jobs:
1717
matrix:
1818
os: [macos-latest, ubuntu-latest]
1919
swift-version:
20-
- 6.0.3
2120
- 6.1.0
2221

2322
runs-on: ${{ matrix.os }}
@@ -43,6 +42,58 @@ jobs:
4342
- name: Run tests
4443
run: swift test -v
4544

45+
conformance:
46+
timeout-minutes: 10
47+
runs-on: macos-latest
48+
name: MCP Conformance Tests
49+
50+
steps:
51+
- uses: actions/checkout@v4
52+
53+
- name: Setup Swift
54+
uses: swift-actions/setup-swift@v2
55+
with:
56+
swift-version: 6.1.0
57+
58+
- name: Setup Node.js
59+
uses: actions/setup-node@v4
60+
with:
61+
node-version: '20'
62+
63+
- name: Build Swift executables
64+
run: |
65+
swift build --product mcp-everything-client
66+
swift build --product mcp-everything-server
67+
68+
- name: Run client conformance tests
69+
uses: modelcontextprotocol/conformance@v0.1.11
70+
with:
71+
mode: client
72+
command: '.build/debug/mcp-everything-client'
73+
suite: 'core'
74+
expected-failures: './conformance-baseline.yml'
75+
76+
- name: Start server for testing
77+
run: |
78+
.build/debug/mcp-everything-server &
79+
echo "SERVER_PID=$!" >> $GITHUB_ENV
80+
sleep 3
81+
82+
- name: Run server conformance tests
83+
uses: modelcontextprotocol/conformance@v0.1.11
84+
with:
85+
mode: server
86+
url: 'http://localhost:3001/mcp'
87+
suite: 'core'
88+
expected-failures: './conformance-baseline.yml'
89+
90+
- name: Cleanup server
91+
if: always()
92+
run: |
93+
if [ -n "$SERVER_PID" ]; then
94+
kill $SERVER_PID 2>/dev/null || true
95+
fi
96+
4697
static-linux-sdk-build:
4798
name: Linux Static SDK Build (${{ matrix.swift-version }} - ${{ matrix.os }})
4899
strategy:

.vscode/settings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@
77
},
88
"[github-actions-workflow]": {
99
"editor.defaultFormatter": "esbenp.prettier-vscode"
10+
},
11+
"[swift]": {
12+
"editor.insertSpaces": true,
13+
"editor.tabSize": 4
1014
}
1115
}

Package.resolved

Lines changed: 38 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,22 @@ import PackageDescription
77
var dependencies: [Package.Dependency] = [
88
.package(url: "https://github.com/apple/swift-system.git", from: "1.0.0"),
99
.package(url: "https://github.com/apple/swift-log.git", from: "1.5.0"),
10+
.package(url: "https://github.com/apple/swift-async-algorithms.git", from: "1.0.0"),
1011
.package(url: "https://github.com/mattt/eventsource.git", from: "1.1.0"),
12+
.package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"),
1113
]
1214

1315
// Target dependencies needed on all platforms
1416
var targetDependencies: [Target.Dependency] = [
1517
.product(name: "SystemPackage", package: "swift-system"),
1618
.product(name: "Logging", package: "swift-log"),
19+
.product(name: "AsyncAlgorithms", package: "swift-async-algorithms"),
1720
.product(
1821
name: "EventSource", package: "eventsource",
1922
condition: .when(platforms: [.macOS, .iOS, .tvOS, .visionOS, .watchOS, .macCatalyst])),
23+
.product(name: "NIOCore", package: "swift-nio"),
24+
.product(name: "NIOPosix", package: "swift-nio"),
25+
.product(name: "NIOHTTP1", package: "swift-nio"),
2026
]
2127

2228
let package = Package(
@@ -33,7 +39,13 @@ let package = Package(
3339
// Products define the executables and libraries a package produces, making them visible to other packages.
3440
.library(
3541
name: "MCP",
36-
targets: ["MCP"])
42+
targets: ["MCP"]),
43+
.executable(
44+
name: "mcp-everything-server",
45+
targets: ["MCPConformanceServer"]),
46+
.executable(
47+
name: "mcp-everything-client",
48+
targets: ["MCPConformanceClient"])
3749
],
3850
dependencies: dependencies,
3951
targets: [
@@ -49,5 +61,13 @@ let package = Package(
4961
.testTarget(
5062
name: "MCPTests",
5163
dependencies: ["MCP"] + targetDependencies),
64+
.executableTarget(
65+
name: "MCPConformanceServer",
66+
dependencies: ["MCP"] + targetDependencies,
67+
path: "Sources/MCPConformance/Server"),
68+
.executableTarget(
69+
name: "MCPConformanceClient",
70+
dependencies: ["MCP"] + targetDependencies,
71+
path: "Sources/MCPConformance/Client")
5272
]
5373
)

0 commit comments

Comments
 (0)