@@ -58,8 +58,9 @@ import {
5858 setMainSession ,
5959 getMainSessionID ,
6060} from "./features/claude-code-session-state" ;
61- import { builtinTools , createCallOmoAgent , createBackgroundTools , createLookAt , createSkillTool , interactive_bash , getTmuxPath } from "./tools" ;
61+ import { builtinTools , createCallOmoAgent , createBackgroundTools , createLookAt , createSkillTool , createSkillMcpTool , interactive_bash , getTmuxPath } from "./tools" ;
6262import { BackgroundManager } from "./features/background-agent" ;
63+ import { SkillMcpManager } from "./features/skill-mcp-manager" ;
6364import { createBuiltinMcps } from "./mcp" ;
6465import { OhMyOpenCodeConfigSchema , type OhMyOpenCodeConfig , type HookName } from "./config" ;
6566import { log , deepMerge , getUserConfigDir , addConfigLoadError , parseJsonc , detectConfigFile , migrateConfigFile } from "./shared" ;
@@ -292,7 +293,18 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => {
292293 includeClaudeSkills ? discoverProjectClaudeSkills ( ) : [ ] ,
293294 discoverOpencodeProjectSkills ( ) ,
294295 ) ;
295- const skillTool = createSkillTool ( { skills : mergedSkills } ) ;
296+ const skillMcpManager = new SkillMcpManager ( ) ;
297+ const getSessionIDForMcp = ( ) => getMainSessionID ( ) || "" ;
298+ const skillTool = createSkillTool ( {
299+ skills : mergedSkills ,
300+ mcpManager : skillMcpManager ,
301+ getSessionID : getSessionIDForMcp ,
302+ } ) ;
303+ const skillMcpTool = createSkillMcpTool ( {
304+ manager : skillMcpManager ,
305+ getLoadedSkills : ( ) => mergedSkills ,
306+ getSessionID : getSessionIDForMcp ,
307+ } ) ;
296308
297309 const googleAuthHooks = pluginConfig . google_auth !== false
298310 ? await createGoogleAntigravityAuthPlugin ( ctx )
@@ -309,6 +321,7 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => {
309321 call_omo_agent : callOmoAgent ,
310322 look_at : lookAt ,
311323 skill : skillTool ,
324+ skill_mcp : skillMcpTool ,
312325 ...( tmuxAvailable ? { interactive_bash } : { } ) ,
313326 } ,
314327
@@ -593,6 +606,9 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => {
593606 if ( sessionInfo ?. id === getMainSessionID ( ) ) {
594607 setMainSession ( undefined ) ;
595608 }
609+ if ( sessionInfo ?. id ) {
610+ await skillMcpManager . disconnectSession ( sessionInfo . id ) ;
611+ }
596612 }
597613
598614 if ( event . type === "session.error" ) {
0 commit comments