routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+65
@@ -0,0 +1,65 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getAgentMcpCapabilities = getAgentMcpCapabilities;
|
||||
exports.agentSupportsMcp = agentSupportsMcp;
|
||||
exports.filterMcpConfigForAgent = filterMcpConfigForAgent;
|
||||
/**
|
||||
* Derives MCP capabilities for an agent
|
||||
*/
|
||||
function getAgentMcpCapabilities(agent) {
|
||||
return {
|
||||
supportsStdio: agent.supportsMcpStdio?.() ?? false,
|
||||
supportsRemote: agent.supportsMcpRemote?.() ?? false,
|
||||
};
|
||||
}
|
||||
/**
|
||||
* Checks if an agent supports any MCP functionality
|
||||
*/
|
||||
function agentSupportsMcp(agent) {
|
||||
const capabilities = getAgentMcpCapabilities(agent);
|
||||
return capabilities.supportsStdio || capabilities.supportsRemote;
|
||||
}
|
||||
/**
|
||||
* Filters MCP configuration based on agent capabilities
|
||||
*/
|
||||
function filterMcpConfigForAgent(mcpConfig, agent) {
|
||||
const capabilities = getAgentMcpCapabilities(agent);
|
||||
if (!agentSupportsMcp(agent)) {
|
||||
return null;
|
||||
}
|
||||
const servers = mcpConfig.mcpServers;
|
||||
if (!servers) {
|
||||
return null;
|
||||
}
|
||||
const filteredServers = {};
|
||||
for (const [serverName, serverConfig] of Object.entries(servers)) {
|
||||
const config = serverConfig;
|
||||
// Determine server type
|
||||
const hasCommand = 'command' in config;
|
||||
const hasUrl = 'url' in config;
|
||||
const isStdio = hasCommand && !hasUrl;
|
||||
const isRemote = hasUrl && !hasCommand;
|
||||
// Include server if agent supports its type
|
||||
if (isStdio && capabilities.supportsStdio) {
|
||||
filteredServers[serverName] = serverConfig;
|
||||
}
|
||||
else if (isRemote && capabilities.supportsRemote) {
|
||||
filteredServers[serverName] = serverConfig;
|
||||
}
|
||||
else if (isRemote &&
|
||||
!capabilities.supportsRemote &&
|
||||
capabilities.supportsStdio) {
|
||||
// Transform remote server to stdio server using mcp-remote
|
||||
const transformedConfig = {
|
||||
command: 'npx',
|
||||
args: ['-y', 'mcp-remote@latest', config.url],
|
||||
...Object.fromEntries(Object.entries(config).filter(([key]) => key !== 'url')),
|
||||
};
|
||||
filteredServers[serverName] = transformedConfig;
|
||||
}
|
||||
// Note: Mixed servers (both command and url) are excluded
|
||||
}
|
||||
return Object.keys(filteredServers).length > 0
|
||||
? { mcpServers: filteredServers }
|
||||
: null;
|
||||
}
|
||||
Reference in New Issue
Block a user