Refactor: Make MCP server discovery non-blocking (#716)

This commit is contained in:
N. Taylor Mullen 2025-06-02 23:37:02 -07:00 committed by GitHub
parent 8ab74ef1bb
commit 5f6f6a95a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 6 deletions

View File

@ -254,7 +254,7 @@ export function createServerConfig(params: ConfigParameters): Config {
});
}
export function createToolRegistry(config: Config): Promise<ToolRegistry> {
function createToolRegistry(config: Config): Promise<ToolRegistry> {
const registry = new ToolRegistry(config);
const targetDir = config.getTargetDir();
const tools = config.getCoreTools()
@ -281,8 +281,12 @@ export function createToolRegistry(config: Config): Promise<ToolRegistry> {
registerCoreTool(ShellTool, config);
registerCoreTool(MemoryTool);
registerCoreTool(WebSearchTool, config);
return (async () => {
await registry.discoverTools();
return registry;
})();
// This is async, but we can't wait for it to finish because when we register
// discovered tools, we need to see if existing tools already exist in order to
// avoid duplicates.
registry.discoverTools();
// Maintain an async registry return so it's easy in the future to add async behavior to this instantiation.
return Promise.resolve(registry);
}

View File

@ -132,7 +132,7 @@ You are running outside of a sandbox container, directly on the user's system. F
${(function () {
// note git repo can change so we need to check every time system prompt is generated
const gitRootCmd = 'git rev-parse --show-toplevel 2>/dev/null || true';
const gitRoot = execSync(gitRootCmd).toString().trim();
const gitRoot = execSync(gitRootCmd)?.toString()?.trim();
if (gitRoot) {
return `
# Git Repository