feat: easy vibe_kanban MCP config (#26)

* inject project_id into prompt; remove create_project tool

* path hack for vibe-kanban mcp button

* update mcp name

* update mcp configuration

* merge stderr into stdout for mcp process

* add -y to mcp server config

* fmt

* fmt

* revert reversion of cli.js

* rename mcp server to vibe-kanban

* improve tool descriptions
This commit is contained in:
Gabriel Gordon-Hall
2025-07-07 10:39:12 +01:00
committed by GitHub
parent 17ed214c62
commit 8037946500
9 changed files with 105 additions and 563 deletions

View File

@@ -134,6 +134,49 @@ export function McpServers() {
}
};
const handleConfigureVibeKanban = async () => {
if (!selectedMcpExecutor) return;
try {
// Parse existing configuration
const existingConfig = mcpServers.trim() ? JSON.parse(mcpServers) : {};
// Always use production MCP installation instructions
const vibeKanbanConfig = {
command: 'npx',
args: ['-y', 'vibe-kanban', '--mcp'],
};
// Add vibe_kanban to the existing configuration
let updatedConfig;
if (selectedMcpExecutor === 'amp') {
updatedConfig = {
...existingConfig,
'amp.mcpServers': {
...(existingConfig['amp.mcpServers'] || {}),
vibe_kanban: vibeKanbanConfig,
},
};
} else {
updatedConfig = {
...existingConfig,
mcpServers: {
...(existingConfig.mcpServers || {}),
vibe_kanban: vibeKanbanConfig,
},
};
}
// Update the textarea with the new configuration
const configJson = JSON.stringify(updatedConfig, null, 2);
setMcpServers(configJson);
setMcpError(null);
} catch (err) {
setMcpError('Failed to configure vibe-kanban MCP server');
console.error('Error configuring vibe-kanban:', err);
}
};
const handleApplyMcpServers = async () => {
if (!selectedMcpExecutor) return;
@@ -329,6 +372,19 @@ export function McpServers() {
</span>
)}
</div>
<div className="pt-4">
<Button
onClick={handleConfigureVibeKanban}
disabled={mcpApplying || mcpLoading || !selectedMcpExecutor}
className="w-64"
>
Add Vibe-Kanban MCP
</Button>
<p className="text-sm text-muted-foreground mt-2">
Automatically adds the Vibe-Kanban MCP server.
</p>
</div>
</div>
)}
</CardContent>