ts#mcp-server
Gerador de Servidor MCP em TypeScript
Gere um servidor Model Context Protocol (MCP) em TypeScript para fornecer contexto a Modelos de Linguagem de Grande Porte (LLMs).
O que é MCP?
O Model Context Protocol (MCP) é um padrão aberto que permite assistentes de IA interagirem com ferramentas e recursos externos. Ele fornece uma maneira consistente para LLMs:
- Executarem ferramentas (funções) que realizam ações ou recuperam informações
- Acessarem recursos que fornecem contexto ou dados
Utilização
Gerar um Servidor MCP
Você pode gerar um servidor MCP em TypeScript de duas formas:
- Instale o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)
na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - ts#mcp-server
- Preencha os parâmetros obrigatórios
- Clique em
Generate
pnpm nx g @aws/nx-plugin:ts#mcp-server
yarn nx g @aws/nx-plugin:ts#mcp-server
npx nx g @aws/nx-plugin:ts#mcp-server
bunx nx g @aws/nx-plugin:ts#mcp-server
Você também pode realizar uma execução simulada para ver quais arquivos seriam alterados
pnpm nx g @aws/nx-plugin:ts#mcp-server --dry-run
yarn nx g @aws/nx-plugin:ts#mcp-server --dry-run
npx nx g @aws/nx-plugin:ts#mcp-server --dry-run
bunx nx g @aws/nx-plugin:ts#mcp-server --dry-run
Opções
Parâmetro | Tipo | Padrão | Descrição |
---|---|---|---|
name Obrigatório | string | - | MCP server project name. |
directory | string | packages | Parent directory where the MCP server is placed. |
subDirectory | string | - | The sub directory the MCP server is placed in. By default this is the MCP server project name. |
Saída do Gerador
O gerador criará os seguintes arquivos do projeto:
Directorypackages/<nome>/
- README.md Documentação do servidor MCP com instruções de uso
- project.json Configuração do projeto Nx com targets de build, bundle e dev
Directorysrc/
- index.ts Ponto de entrada do servidor MCP
- server.ts Definição principal do servidor, declarando ferramentas e recursos
- global.d.ts Declarações de tipos TypeScript para importar arquivos markdown
Directoryresources/
- example-context.md Arquivo markdown de exemplo usado como recurso pelo servidor MCP
Trabalhando com Seu Servidor MCP
Adicionando Ferramentas
Ferramentas são funções que o assistente de IA pode chamar para realizar ações. Você pode adicionar novas ferramentas no arquivo server.ts
:
server.tool("toolName", { param1: z.string(), param2: z.number() }, // Esquema de entrada usando Zod async ({ param1, param2 }) => { // Implementação da ferramenta return { content: [{ type: "text", text: "Result" }] }; });
Adicionando Recursos
Recursos fornecem contexto ao assistente de IA. Você pode adicionar recursos estáticos de arquivos ou recursos dinâmicos:
// Recurso estático de um arquivoimport exampleContext from './resources/example-context.md';
server.resource('resource-name', 'example://resource', async (uri) => ({ contents: [{ uri: uri.href, text: exampleContext }],}));
// Recurso dinâmicoserver.resource('dynamic-resource', 'dynamic://resource', async (uri) => { const data = await fetchSomeData(); return { contents: [{ uri: uri.href, text: data }], };});
Configuração com Assistentes de IA
Para usar seu servidor MCP com assistentes de IA, você precisa gerar o bundle primeiro:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx nx run your-mcp-server:bundle
Isso cria uma versão empacotada em dist/packages/your-mcp-server/bundle/index.js
(o caminho pode variar conforme suas configurações de diretório).
Arquivos de Configuração
A maioria dos assistentes de IA que suportam MCP usa uma abordagem de configuração similar. Você precisará criar ou atualizar um arquivo de configuração com os detalhes do seu servidor MCP:
{ "mcpServers": { "your-mcp-server": { "command": "node", "args": [ "/path/to/workspace/dist/packages/your-mcp-server/bundle/index.js" ], "transportType": "stdio" } }}
Substitua /path/to/workspace/dist/packages/your-mcp-server/bundle/index.js
pelo caminho real para o bundle do seu servidor MCP.
Configurações Específicas por Assistente
Consulte a documentação a seguir para configurar o MCP com assistentes específicos:
Fluxo de Desenvolvimento
Targets de Build
O gerador é baseado no gerador de projetos TypeScript e herda seus targets, além de adicionar os seguintes targets:
Bundle
O target bundle
usa esbuild para criar um único arquivo JavaScript empacotado que pode ser usado com assistentes de IA:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx nx run your-mcp-server:bundle
Isso cria uma versão empacotada em dist/packages/your-mcp-server/bundle/index.js
(o caminho pode variar conforme suas configurações de diretório).
Dev
O target dev
monitora alterações no seu projeto e reconstrói o bundle automaticamente:
pnpm nx run your-mcp-server:dev
yarn nx run your-mcp-server:dev
npx nx run your-mcp-server:dev
bunx nx run your-mcp-server:dev
Isso é particularmente útil durante o desenvolvimento, garantindo que seu assistente de IA utilize a versão mais recente do servidor MCP.