openhive-mcp-server 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +82 -1
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -53,7 +53,7 @@ async function apiRequest(path, options = {}) {
|
|
|
53
53
|
return data.data;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
const server = new McpServer({ name: 'openhive', version: '1.
|
|
56
|
+
const server = new McpServer({ name: 'openhive', version: '1.4.0' });
|
|
57
57
|
|
|
58
58
|
// ── Posts ──
|
|
59
59
|
|
|
@@ -681,6 +681,87 @@ server.tool(
|
|
|
681
681
|
}
|
|
682
682
|
);
|
|
683
683
|
|
|
684
|
+
// ── Design Systems (visual inspirations library) ──
|
|
685
|
+
|
|
686
|
+
server.tool(
|
|
687
|
+
'list_design_systems',
|
|
688
|
+
'Lista a biblioteca de 58 design systems de marcas conhecidas (Stripe, Linear, Apple, Notion, etc) que podem ser usados como inspiracao visual para criar brands. Cada item retorna nome, vibe, categoria, paleta principal e mood keywords. Use isso quando o usuario pedir ajuda para criar um brand do zero ou refinar a identidade visual',
|
|
689
|
+
{
|
|
690
|
+
category: z.enum(['fintech', 'productivity', 'dev-tools', 'ai', 'luxury', 'automotive', 'social', 'media', 'other']).optional().describe('Filtrar por categoria'),
|
|
691
|
+
search: z.string().optional().describe('Buscar por nome, vibe ou mood keyword (ex: warm, dark, minimal)'),
|
|
692
|
+
limit: z.number().optional().describe('Quantidade maxima a retornar'),
|
|
693
|
+
},
|
|
694
|
+
async (input) => {
|
|
695
|
+
const params = new URLSearchParams();
|
|
696
|
+
if (input.category) params.set('category', input.category);
|
|
697
|
+
if (input.search) params.set('search', input.search);
|
|
698
|
+
if (input.limit) params.set('limit', String(input.limit));
|
|
699
|
+
const qs = params.toString();
|
|
700
|
+
const result = await apiRequest(`/api/design-systems${qs ? '?' + qs : ''}`);
|
|
701
|
+
return {
|
|
702
|
+
content: [{
|
|
703
|
+
type: 'text',
|
|
704
|
+
text: JSON.stringify({
|
|
705
|
+
total_in_library: result.totalAvailable,
|
|
706
|
+
returned: result.total,
|
|
707
|
+
design_systems: result.items.map((d) => ({
|
|
708
|
+
id: d.id,
|
|
709
|
+
name: d.name,
|
|
710
|
+
vibe: d.vibe,
|
|
711
|
+
category: d.category,
|
|
712
|
+
mood_keywords: d.moodKeywords,
|
|
713
|
+
primary_color: d.colors.primary,
|
|
714
|
+
secondary_color: d.colors.secondary,
|
|
715
|
+
})),
|
|
716
|
+
}, null, 2),
|
|
717
|
+
}],
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
);
|
|
721
|
+
|
|
722
|
+
server.tool(
|
|
723
|
+
'get_design_system',
|
|
724
|
+
'Retorna detalhes completos de um design system especifico (todas as cores, tipografia, principios). Use depois de list_design_systems quando o usuario escolher uma inspiracao',
|
|
725
|
+
{
|
|
726
|
+
design_system_id: z.string().describe('ID do design system (ex: stripe, linear, apple)'),
|
|
727
|
+
},
|
|
728
|
+
async (input) => {
|
|
729
|
+
const result = await apiRequest(`/api/design-systems/${input.design_system_id}`);
|
|
730
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
731
|
+
}
|
|
732
|
+
);
|
|
733
|
+
|
|
734
|
+
server.tool(
|
|
735
|
+
'list_design_system_categories',
|
|
736
|
+
'Retorna as categorias disponiveis na biblioteca de design systems com a quantidade em cada (fintech, dev-tools, ai, etc)',
|
|
737
|
+
{},
|
|
738
|
+
async () => {
|
|
739
|
+
const result = await apiRequest('/api/design-systems/categories');
|
|
740
|
+
return { content: [{ type: 'text', text: JSON.stringify({ categories: result }, null, 2) }] };
|
|
741
|
+
}
|
|
742
|
+
);
|
|
743
|
+
|
|
744
|
+
server.tool(
|
|
745
|
+
'suggest_brand_from_inspirations',
|
|
746
|
+
'Combina 1-5 design systems da biblioteca em uma sugestao de brand. Retorna paleta de cores, fonte, tom de voz e descricao. NAO salva nada - apenas sugere. Para salvar use create_brand depois que o usuario aprovar',
|
|
747
|
+
{
|
|
748
|
+
inspiration_ids: z.array(z.string()).min(1).max(5).describe('IDs dos design systems para combinar (ex: ["stripe", "linear"])'),
|
|
749
|
+
business_name: z.string().optional().describe('Nome do negocio do usuario'),
|
|
750
|
+
business_type: z.string().optional().describe('Tipo de negocio (ex: "AI startup", "fintech")'),
|
|
751
|
+
},
|
|
752
|
+
async (input) => {
|
|
753
|
+
const result = await apiRequest('/api/design-systems/suggest', {
|
|
754
|
+
method: 'POST',
|
|
755
|
+
body: JSON.stringify({
|
|
756
|
+
inspirationIds: input.inspiration_ids,
|
|
757
|
+
businessName: input.business_name,
|
|
758
|
+
businessType: input.business_type,
|
|
759
|
+
}),
|
|
760
|
+
});
|
|
761
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
762
|
+
}
|
|
763
|
+
);
|
|
764
|
+
|
|
684
765
|
// ── Brands ──
|
|
685
766
|
|
|
686
767
|
server.tool('list_brands', 'Lista todos os brands cadastrados (identidade visual: logo, cores, produtos, tom de voz). Use ANTES de criar qualquer post visual para perguntar ao usuario qual brand aplicar', {}, async () => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openhive-mcp-server",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "OpenHive AI MCP Server - Connect Claude, Antigravity, Cursor and other IDEs to your OpenHive instance.
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "OpenHive AI MCP Server - Connect Claude, Antigravity, Cursor and other IDEs to your OpenHive instance. 39 tools including Design Systems library (58 brand inspirations), Brands, Mixed Carousel.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"openhive-mcp": "./index.js"
|