core: improve MCP reliability and add status monitoring

- Added 5-second timeout to MCP client verification to prevent hanging connections
- New GET /mcp endpoint to monitor server connection status
- Automatically removes unresponsive MCP clients during initialization
This commit is contained in:
Dax Raad
2025-10-07 04:04:19 -04:00
parent 27c211ef86
commit a440e09cfe
4 changed files with 82 additions and 1 deletions

View File

@@ -82,6 +82,8 @@ import type {
AppLogResponses,
AppAgentsData,
AppAgentsResponses,
McpStatusData,
McpStatusResponses,
TuiAppendPromptData,
TuiAppendPromptResponses,
TuiOpenHelpData,
@@ -567,6 +569,18 @@ class App extends _HeyApiClient {
}
}
class Mcp extends _HeyApiClient {
/**
* Get MCP server status
*/
public status<ThrowOnError extends boolean = false>(options?: Options<McpStatusData, ThrowOnError>) {
return (options?.client ?? this._client).get<McpStatusResponses, unknown, ThrowOnError>({
url: "/mcp",
...options,
})
}
}
class Tui extends _HeyApiClient {
/**
* Append prompt to the TUI
@@ -724,6 +738,7 @@ export class OpencodeClient extends _HeyApiClient {
find = new Find({ client: this._client })
file = new File({ client: this._client })
app = new App({ client: this._client })
mcp = new Mcp({ client: this._client })
tui = new Tui({ client: this._client })
auth = new Auth({ client: this._client })
event = new Event({ client: this._client })

View File

@@ -2070,6 +2070,22 @@ export type AppAgentsResponses = {
export type AppAgentsResponse = AppAgentsResponses[keyof AppAgentsResponses]
export type McpStatusData = {
body?: never
path?: never
query?: {
directory?: string
}
url: "/mcp"
}
export type McpStatusResponses = {
/**
* MCP server status
*/
200: unknown
}
export type TuiAppendPromptData = {
body?: {
text: string