Kontext-Dev SDK (Rust)
Rust SDK for authenticating MCP clients against Kontext and handling hosted integration-connect flows.
Install
[dependencies]
kontext-dev = "0.2.1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
Quickstart (PKCE + MCP Gateway Token)
use kontext_dev::{KontextDevClient, KontextDevConfig, DEFAULT_RESOURCE, DEFAULT_SCOPE, DEFAULT_SERVER_NAME};
#[tokio::main]
async fn main() -> Result<(), kontext_dev::KontextDevError> {
let client = KontextDevClient::new(KontextDevConfig {
server: Some("https://api.kontext.dev".to_string()),
mcp_url: None,
token_url: None,
client_id: "your-application-client-id".to_string(),
client_secret: None,
scope: DEFAULT_SCOPE.to_string(),
server_name: DEFAULT_SERVER_NAME.to_string(),
resource: DEFAULT_RESOURCE.to_string(),
integration_ui_url: Some("https://app.kontext.dev".to_string()),
integration_return_to: None,
open_connect_page_on_login: true,
auth_timeout_seconds: 300,
token_cache_path: None,
});
let session = client.authenticate_mcp().await?;
let mcp_url = client.mcp_url()?;
println!("MCP URL: {mcp_url}");
println!("Bearer {}", session.gateway_token.access_token);
Ok(())
}
Integration Connect URL
let url = client
.create_integration_connect_url(&session.gateway_token.access_token)
.await?;
println!("Open this URL to connect integrations: {url}");
What This SDK Provides
- Browser PKCE login for OAuth authorization code flow.
- RFC 8693 token exchange (
identity -> mcp-gateway by default).
- Token caching to avoid repeated browser logins.
- Hosted integration connect helpers:
POST /mcp/connect-session
POST /mcp/integrations/:id/oauth/init
GET /mcp/integrations/:id/oauth/connection
Legacy Compatibility
Legacy client-credentials helpers remain available for migration:
request_access_token
build_mcp_url (appends access_key=...)
New integrations should prefer bearer tokens with KontextDevClient::authenticate_mcp.