Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/bin/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ interface MCPServerInfo {
name: string
command: string
args?: string[]
transport?: 'stdio' | 'sse'
transport?: 'stdio' | 'sse' | 'http'
source?: 'local' | 'remote'
env?: Record<string, string>
status?: 'running' | 'stopped'
}
Expand Down
15 changes: 15 additions & 0 deletions src/components/mcp-server-source.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { styleText } from 'node:util'

export default function render (text: string) {
const formattedText = text.toUpperCase()

if (formattedText === 'LOCAL') {
return styleText(['gray'], formattedText)
}

if (formattedText === 'REMOTE') {
return styleText(['blue'], formattedText)
}

return formattedText
}
5 changes: 4 additions & 1 deletion src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ interface MCPServerInfo {
name: string
command: string
args?: string[]
transport?: 'stdio' | 'sse',
transport?: 'stdio' | 'sse' | 'http',
source?: 'local' | 'remote'
env?: Record<string, string>
status?: 'running' | 'stopped'
}
Expand Down Expand Up @@ -188,6 +189,7 @@ export class MCPFiles {
name: serverName,
command: serverConfigRaw.command || '',
args: serverConfigRaw.args,
url: serverConfigRaw.url,
transport: serverConfigRaw.transport,
env: serverConfigRaw.env
}
Expand All @@ -205,6 +207,7 @@ export class MCPFiles {
name: MCPServerManager.getName(),
command: MCPServerManager.getCmd(),
args: MCPServerManager.getArgs(),
source: MCPServerManager.getSource(),
transport: MCPServerManager.getTransport(),
env: MCPServerManager.getEnv(),
status: mcpServerProcess ? 'running' : 'stopped'
Expand Down
13 changes: 12 additions & 1 deletion src/services/mcp-server-manager-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ interface MCPServerConfig {
command: string
args?: string[]
transport?: 'stdio' | 'sse'
url?: string
env?: Record<string, string>
}

Expand All @@ -24,6 +25,7 @@ export class MCPServerManagerService {
private command: string
private args: string[]
private transport?: 'stdio' | 'sse'
private source?: 'local' | 'remote'
private env?: Record<string, string>
private running: boolean = false

Expand All @@ -32,6 +34,11 @@ export class MCPServerManagerService {
this.command = serverConfig.command
this.args = serverConfig.args || []
this.transport = serverConfig.transport || 'stdio'
if (serverConfig.url) {
this.source = 'remote'
} else {
this.source = 'local'
}
this.env = serverConfig.env || {}
}

Expand All @@ -47,10 +54,14 @@ export class MCPServerManagerService {
return this.args
}

getTransport (): 'stdio' | 'sse' | undefined {
getTransport (): 'stdio' | 'sse' | 'http' | undefined {
return this.transport
}

getSource (): 'local' | 'remote' | undefined {
return this.source
}

getEnv (): Record<string, string> | undefined {
return this.env
}
Expand Down
19 changes: 16 additions & 3 deletions src/services/render-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import TransportComponent from '../components/transport.js'
import ColumnNameComponent from '../components/column-name.js'
import MCPServerStatusComponent from '../components/mcp-server-status.js'
import MCPServerNameComponent from '../components/mcp-server-name.js'
import MCPServerSourceComponent from '../components/mcp-server-source.js'
import FilePathComponent from '../components/file-path.js'
import MCPServersConfigParsableComponent from '../components/mcp-servers-config-parsable.js'

Expand All @@ -27,9 +28,9 @@ export class RenderService {
static printMcpServers (data: any[]) {
if (data.length === 0) return

const headers = ['STATUS', 'NAME', 'TRANSPORT']
const keys = ['status', 'name', 'transport']
const centerColumns = [0, 2] // STATUS and TRANSPORT column indices
const headers = ['STATUS', 'NAME', 'SOURCE', 'TRANSPORT']
const keys = ['status', 'name', 'source', 'transport']
const centerColumns = [0, 2, 3] // STATUS and TRANSPORT column indices
const leftPadding = ' ' // 6 characters

// Calculate column widths accounting for styled text
Expand All @@ -42,9 +43,15 @@ export class RenderService {
if (keys[index] === 'transport') {
text = TransportComponent(text)
}

if (keys[index] === 'status') {
text = MCPServerStatusComponent(text)
}

if (keys[index] === 'source') {
text = MCPServerSourceComponent(text)
}

if (keys[index] === 'name') {
text = MCPServerNameComponent(text)
}
Expand Down Expand Up @@ -99,9 +106,15 @@ export class RenderService {
if (key === 'transport') {
text = TransportComponent(text)
}

if (key === 'status') {
text = MCPServerStatusComponent(text)
}

if (keys[index] === 'source') {
text = MCPServerSourceComponent(text)
}

if (key === 'name') {
text = MCPServerNameComponent(text)
}
Expand Down
Loading