* feat(auth): add cimd support for SEP-991 add cimd support for url-based client ids Signed-off-by: tanish111 <tanishdesai37@gmail.com> * test(auth): add unit tests for is_https_url helper Add test coverage for is_https_url helper to validate HTTPS scheme, non-root paths, and reject http, javascript, data schemes, and invalid inputs per SEP-991 requirements. Signed-off-by: tanish111 <tanishdesai37@gmail.com> * feat(example): add CIMD OAuth server for SEP-991 testing Implements a new server example (servers_cimd_auth_streamhttp) that demonstrates CIMD (Client ID Metadata Document) support for URL-based client IDs. The server validates client_id URLs, fetches and validates client metadata documents, and provides OAuth 2.0 authorization endpoints with MCP integration for end-to-end testing. Signed-off-by: tanish111 <tanishdesai37@gmail.com> * fix(oauth): add CORS headers to token endpoint Add CORS headers to token endpoint to allow cross-origin requests from browsers during OAuth authorization code exchange flow. Signed-off-by: tanish111 <tanishdesai37@gmail.com> * refactor: improve is_https_url function and consolidate tests - Improve is_https_url function formatting and readability - Merge all test cases into single test_is_https_url_scenarios function - Add missing test case for "https://" URL Signed-off-by: tanish111 <tanishdesai37@gmail.com> * refactor: use map_err instead of match for error handling in auth.rs Replace the verbose match statement with map_err for more idiomatic Signed-off-by: tanish111 <tanishdesai37@gmail.com> * feat: add client-metadata.json Add client metadata file for SEP-991 CIMD authentication support Signed-off-by: tanish111 <tanishdesai37@gmail.com> --------- Signed-off-by: tanish111 <tanishdesai37@gmail.com>
107 lines
2.3 KiB
TOML
107 lines
2.3 KiB
TOML
[package]
|
|
name = "mcp-server-examples"
|
|
version = "0.1.5"
|
|
edition = "2024"
|
|
publish = false
|
|
|
|
[dependencies]
|
|
rmcp = { workspace = true, features = [
|
|
"server",
|
|
"macros",
|
|
"client",
|
|
"transport-io",
|
|
"transport-streamable-http-server",
|
|
"auth",
|
|
"elicitation",
|
|
"schemars",
|
|
] }
|
|
tokio = { version = "1", features = [
|
|
"macros",
|
|
"rt",
|
|
"rt-multi-thread",
|
|
"io-std",
|
|
"signal",
|
|
] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
anyhow = "1.0"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = [
|
|
"env-filter",
|
|
"std",
|
|
"fmt",
|
|
] }
|
|
futures = "0.3"
|
|
rand = { version = "0.9", features = ["std"] }
|
|
axum = { version = "0.8", features = ["macros"] }
|
|
schemars = "1.0"
|
|
reqwest = { version = "0.12", features = ["json"] }
|
|
chrono = "0.4"
|
|
uuid = { version = "1.6", features = ["v4", "serde"] }
|
|
serde_urlencoded = "0.7"
|
|
askama = { version = "0.14" }
|
|
tower-http = { version = "0.6", features = ["cors"] }
|
|
hyper = { version = "1" }
|
|
hyper-util = { version = "0", features = ["server"] }
|
|
tokio-util = { version = "0.7" }
|
|
url = "2.5"
|
|
|
|
[dev-dependencies]
|
|
tokio-stream = { version = "0.1" }
|
|
tokio-util = { version = "0.7", features = ["codec"] }
|
|
|
|
[[example]]
|
|
name = "servers_counter_stdio"
|
|
path = "src/counter_stdio.rs"
|
|
|
|
[[example]]
|
|
name = "servers_memory_stdio"
|
|
path = "src/memory_stdio.rs"
|
|
|
|
[[example]]
|
|
name = "servers_counter_streamhttp"
|
|
path = "src/counter_streamhttp.rs"
|
|
|
|
[[example]]
|
|
name = "servers_prompt_stdio"
|
|
path = "src/prompt_stdio.rs"
|
|
|
|
[[example]]
|
|
name = "counter_hyper_streamable_http"
|
|
path = "src/counter_hyper_streamable_http.rs"
|
|
|
|
[[example]]
|
|
name = "servers_sampling_stdio"
|
|
path = "src/sampling_stdio.rs"
|
|
|
|
[[example]]
|
|
name = "servers_structured_output"
|
|
path = "src/structured_output.rs"
|
|
|
|
[[example]]
|
|
name = "servers_elicitation_stdio"
|
|
path = "src/elicitation_stdio.rs"
|
|
|
|
[[example]]
|
|
name = "servers_completion_stdio"
|
|
path = "src/completion_stdio.rs"
|
|
|
|
[[example]]
|
|
name = "servers_progress_demo"
|
|
path = "src/progress_demo.rs"
|
|
|
|
[[example]]
|
|
name = "servers_simple_auth_streamhttp"
|
|
path = "src/simple_auth_streamhttp.rs"
|
|
|
|
[[example]]
|
|
name = "servers_complex_auth_streamhttp"
|
|
path = "src/complex_auth_streamhttp.rs"
|
|
|
|
[[example]]
|
|
name = "servers_cimd_auth_streamhttp"
|
|
path = "src/cimd_auth_streamhttp.rs"
|
|
|
|
[[example]]
|
|
name = "servers_calculator_stdio"
|
|
path = "src/calculator_stdio.rs"
|