Skip to content

Conversation

@mzeng-openai
Copy link
Contributor

Auto install MCP dependencies when running skils with dependency specs.

.any(|entry| entry == MCP_DEPENDENCY_OPTION_INSTALL)
});

sess.record_mcp_dependency_prompted(missing.keys().cloned())
Copy link
Contributor Author

@mzeng-openai mzeng-openai Jan 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Save the mcps that are prompted so that we don't show the approval prompt for them again.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wondering if we should always show the prompt if it is still not set up?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can add that later, for the first version I'm trying to play safe and try not to annoy the users with repeating prompts

)
.await;

if let Err(err) = perform_oauth_login(
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automatically trigger OAuth if available.

&& seen.insert(name.clone())
&& let Some(skill) = skills.iter().find(|s| s.name == *name && s.path == *path)
&& !disabled_paths.contains(&skill.path)
match input {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extending the detection from CLI-specific logic, to actually matching $skill-name patterns.

pub(crate) history: ContextManager,
pub(crate) latest_rate_limits: Option<RateLimitSnapshot>,
pub(crate) server_reasoning_included: bool,
pub(crate) mcp_dependency_prompted: HashSet<String>,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keep track of which mcps have been prompted to be installed.

Arc::clone(&self.services.user_shell)
}

async fn refresh_mcp_servers_inner(
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extracted from below.

@mzeng-openai mzeng-openai marked this pull request as ready for review January 27, 2026 07:39
let mut seen: HashSet<String> = HashSet::new();

for input in inputs {
if let UserInput::Skill { name, path } = input
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually realized it would still be helpful for the CLI to use this, once we have connectors we need to include it's path which the CLI doesn't support display.

@mzeng-openai mzeng-openai merged commit 3bb8e69 into main Jan 28, 2026
36 of 38 checks passed
@mzeng-openai mzeng-openai deleted the dev/mzeng/auto_skill_deps_install branch January 28, 2026 03:02
@github-actions github-actions bot locked and limited conversation to collaborators Jan 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants