Skills: Desenvolvimento de Ferramentas Personalizadas
Última atualização: 2026-08-31
Ferramentas integradas não são suficientes? Construa as suas — o protocolo MCP significa que capacidades de Skills não têm limites.
1. Básicos do Protocolo MCP
(1) O que é MCP
Model Context Protocol é o protocolo padrão para ferramentas de IA:
Arquitetura MCP
┌──────────┐ Protocolo MCP ┌──────────────┐
│ Cliente IA │ ←──────────────→ │ Servidor MCP │
│ (Claude) │ │ (Ferramenta) │
└──────────┘ └──────────────┘
↕
┌──────────────┐
│ Serviço │
│ Externo │
│ (DB/API/Arq) │
└──────────────┘
(2) Tipos de Ferramenta
| Tipo | Descrição | Exemplo |
|---|---|---|
| Ferramentas de recurso | Fornecem leitura de dados | Consultas de banco de dados, sistemas de arquivos |
| Ferramentas de ação | Executam operações | Enviar email, criar tickets |
| Ferramentas de prompt | Fornecem templates | Templates de relatório, checklists de revisão |
2. Desenvolvendo Ferramentas Personalizadas
(1) Análise de Requisitos
Fluxo de Desenvolvimento de Ferramenta Personalizada
1. Identificar necessidades que ferramentas integradas não atendem
2. Definir entrada/saída da ferramenta
3. Escolher implementação (Node.js / Python)
4. Implementar lógica da ferramenta
5. Configurar servidor MCP
6. Vincular e usar na Skill
(2) Implementação Mínima
// mcp-server-example/index.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new McpServer({ name: "db-query", version: "1.0.0" });
server.tool("query_database", { sql: { type: "string" } }, async ({ sql }) => {
const result = await executeQuery(sql);
return { content: [{ type: "text", text: JSON.stringify(result) }] };
});
const transport = new StdioServerTransport();
await server.connect(transport);
(3) Configuração e Integração
{
"mcpServers": {
"db-query": {
"command": "node",
"args": ["./mcp-servers/db-query/index.js"],
"env": {
"DATABASE_URL": "postgresql://localhost/mydb"
}
}
}
}
3. Princípios de Design de Ferramenta
(1) Responsabilidade Única
Cada ferramenta faz uma coisa:
| ✅ Bom Design | ❌ Mau Design |
|---|---|
query_database |
do_database_stuff |
send_email |
communicate |
search_logs |
find_stuff |
(2) Validação de Entrada
server.tool("query_database", {
sql: {
type: "string",
description: "Instrução SQL (somente SELECT)",
validate: (sql: string) => {
if (/^\s*(DROP|DELETE|UPDATE|INSERT|ALTER)/i.test(sql)) {
throw new Error("Somente consultas SELECT são permitidas");
}
}
}
}, handler);
(3) Tratamento de Erros
async ({ sql }) => {
try {
const result = await executeQuery(sql);
return { content: [{ type: "text", text: JSON.stringify(result) }] };
} catch (error) {
return {
content: [{ type: "text", text: `Consulta falhou: ${error.message}` }],
isError: true
};
}
};
4. Depuração e Publicação de Ferramenta
(1) Depuração Local
# Executar servidor MCP diretamente para teste
node ./mcp-servers/db-query/index.js
# Enviar requisição de teste
echo '{"method":"tools/list"}' | node ./mcp-servers/db-query/index.js
(2) Logging
// Adicionar middleware de logging
server.tool("query_database", { sql: { type: "string" } }, async ({ sql }) => {
console.error(`[DB-QUERY] SQL: ${sql}`);
const start = Date.now();
const result = await executeQuery(sql);
console.error(`[DB-QUERY] Duração: ${Date.now() - start}ms`);
return { content: [{ type: "text", text: JSON.stringify(result) }] };
});
(3) Publicação e Distribuição
Métodos de Publicação
├── Pacote npm: npm publish @your-org/mcp-server-xxx
├── Docker: docker build + docker push
├── Repo Git: Clonar e usar diretamente
└── Template de config: Fornecer template de configuração JSON
5. Prática de Ferramenta Personalizada
▶ Exemplo: Ferramenta de Busca de Logs
Alice desenvolveu uma ferramenta MCP de busca de logs:
---
name: log-analyzer
description: "Análise de logs: busca, filtragem, estatísticas"
tools:
- Read
- search_logs # Ferramenta MCP personalizada
---
Bob disse: "O valor das ferramentas personalizadas é conectar IA aos seus sistemas proprietários — onde ferramentas genéricas não alcançam, ferramentas personalizadas preenchem a lacuna."
❓ Perguntas Frequentes
P: Preciso usar TypeScript para ferramentas MCP? R: Não. O protocolo MCP é JSON-RPC; qualquer linguagem pode implementá-lo. SDKs oficiais fornecem versões TypeScript e Python. P: Ferramentas personalizadas têm riscos de segurança? R: Sim. Sempre faça validação de entrada e controle de acesso dentro da ferramenta; não deixe a segurança inteiramente por conta dos prompts da Skill. P: Um servidor MCP pode fornecer múltiplas ferramentas? R: Sim. Mas recomendamos no máximo 5 ferramentas por servidor para manter responsabilidade focada.
📖 Resumo
- Protocolo MCP: Protocolo de comunicação padrão entre clientes IA e ferramentas personalizadas
- Fluxo de desenvolvimento: Análise de requisitos → implementar → configurar → depurar → publicar
- Princípios de design: Responsabilidade única, validação de entrada, tratamento de erros
- Valor central: Conectar IA com sistemas proprietários, estender limites de capacidade de Skills
📝 Exercícios
- Básico (⭐): Use o MCP SDK para criar uma ferramenta simples Hello World e integrá-la com uma Skill.
- Intermediário (⭐⭐): Desenvolva uma ferramenta MCP de consulta de banco de dados com validação de entrada e tratamento de erros.
- Avançado (⭐⭐⭐): Desenvolva uma ferramenta MCP completa de análise de logs com suporte a busca, filtragem e estatísticas, com documentação de depuração e publicação.