mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-05 00:03:08 +00:00
* feat: replace _TRUNC with hash-based MCP tool names (50 char limit) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: reduce MCP tool name limit from 50 to 40 chars Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: use path prefix filtering instead of separate DB query for hashed name resolution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: remove long path warning from MCP token creation (hashing handles long names) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: unify tool prefix parsing and fix extract_path_prefix_from_hashed for Hs- names - Replace `is_hashed_name` + `parse_hashed_name` with unified `parse_tool_prefix` that returns `(type_str, is_hub, is_hashed)` in one call - Fix `extract_path_prefix_from_hashed` to dynamically determine prefix length (3 for `Hs-`, 2 for `S-`/`F-`) instead of hardcoding index 2 - Simplify `reverse_transform` to reuse `parse_tool_prefix` - Add tests for invalid prefixes and `Hs-` prefix handling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: escape LIKE wildcards in MCP hashed name path prefix query Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: respect favorites scope in hashed tool name resolution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: deduplicate MCP tool name resolution and rename get_path_or_id - Extract `unescape_path` helper in transform.rs to deduplicate the 3-step placeholder unescape logic - Extract `find_matching_path` helper in runner.rs to deduplicate script/flow candidate matching via ToolableItem trait - Remove verbose tracing::info! logs from hashed tool resolution hot path - Fix doc comment referencing nonexistent `is_hashed_name` function - Rename `get_path_or_id` to `get_transformed_path` for clarity Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update stale doc comments to reflect MAX_PATH_LENGTH=40 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
49 lines
1.6 KiB
Rust
49 lines
1.6 KiB
Rust
//! Windmill MCP (Model Context Protocol) implementation
|
|
//!
|
|
//! This crate provides:
|
|
//! - MCP client for connecting to external MCP servers (used by AI agents)
|
|
//! - Common types and utilities for MCP implementations
|
|
//! - MCP server types (when `server` feature is enabled)
|
|
//! - OAuth support (when `auth` feature is enabled)
|
|
|
|
// Common types and utilities module
|
|
pub mod common;
|
|
|
|
// Client module
|
|
pub mod client;
|
|
|
|
// Re-export common types at crate root for convenience
|
|
pub use common::{
|
|
convert_schema_to_schema_type, is_resource_allowed, parse_mcp_scopes, transform_hub_path,
|
|
transform_path, FlowInfo, HubResponse, HubScriptInfo, ItemSchema, McpScopeConfig, ResourceInfo,
|
|
ResourceType, SchemaType, ScriptInfo, ToolableItem, WorkspaceId,
|
|
};
|
|
|
|
// Re-export client types at crate root for backward compatibility
|
|
pub use client::{McpClient, McpResource, McpToolSource};
|
|
|
|
// Re-export rmcp types for client usage
|
|
pub use rmcp::model::Tool as McpTool;
|
|
|
|
// Server module (when server feature is enabled)
|
|
#[cfg(feature = "server")]
|
|
pub mod server;
|
|
|
|
// MCP OAuth client registration (when auth feature is enabled)
|
|
#[cfg(feature = "auth")]
|
|
pub mod client_registration;
|
|
|
|
// Re-export rmcp auth types when auth feature is enabled
|
|
#[cfg(feature = "auth")]
|
|
pub mod oauth {
|
|
//! Re-exports of rmcp auth and oauth2 types for MCP OAuth implementations
|
|
|
|
pub use rmcp::transport::auth::AuthorizationManager;
|
|
|
|
// Re-export oauth2 types needed for MCP OAuth flow
|
|
pub use oauth2::{
|
|
basic::BasicClient, AuthUrl, ClientId, ClientSecret, CsrfToken, PkceCodeChallenge,
|
|
RedirectUrl, Scope, TokenUrl,
|
|
};
|
|
}
|