mcp-dev-agent

mcp-dev-agent

Provides AI agents with shell execution and file management capabilities on a development VM, including running commands and editing files via tools like run_command, read_file, and edit_file.

Category
访问服务器

README

mcp-dev-agent

Servidor MCP (Model Context Protocol) via Streamable HTTP que dá a um agente de IA — consumido por um agente do Microsoft Copilot Studio — as mesmas capacidades de desenvolvimento que um agente Claude Code tem nesta VM: executar comandos, editar/mover/listar arquivos e usar node, npm, gh, git, etc. O agente decide quais comandos rodar.

Documentação

  • docs/RECOMENDACAO.md — recomendações de arquitetura e próximos passos antes de produção.
  • docs/DEPLOY-CLOUDFLARE.md — expor via Cloudflare Tunnel (HTTPS público, sem abrir portas).
  • docs/CREDENCIAIS.local.mdsecreto, fora do versionamento (.gitignore): URL, token e dados do túnel em produção (mcp.criaelo.com).

Arquitetura

Copilot Studio (nuvem)
        │  HTTPS + Bearer token
        ▼
[ Reverse proxy / túnel com TLS ]   ← obrigatório: Copilot Studio exige HTTPS público
        │
        ▼
mcp-dev-agent  (Express + Streamable HTTP, porta 3000)
        │  child_process / fs
        ▼
  VM de desenvolvimento  (node, npm, gh, git, arquivos das aplicações)
  • Transporte: Streamable HTTP (endpoint único POST/GET/DELETE /mcp), que é o modo que o Copilot Studio consome MCP.
  • Auth (duas formas, ambas aceitas no /mcp):
    • Bearer token estático via header Authorization (variável MCP_AUTH_TOKEN) — usado pelo Copilot Studio.
    • OAuth 2.1 conforme a spec de autorização do MCP (Dynamic Client Registration, authorization code + PKCE, refresh token) — exigido pelo ChatGPT. Endpoints: /.well-known/oauth-authorization-server, /.well-known/oauth-protected-resource/mcp, /authorize, /token, /register, /revoke. A aprovação pede a senha OAUTH_APPROVAL_PASSWORD (fallback: MCP_AUTH_TOKEN). Clients e tokens ficam em data/oauth-state.json (fora do versionamento, chmod 600); implementação em src/oauth.ts.
  • Escopo de arquivos: sem restrição de path — o agente opera em qualquer caminho da VM (decisão de projeto). Resolve ~ e caminhos relativos.

Ferramentas expostas

Ferramenta O que faz
run_command Executa qualquer comando de shell (bash) com cwd e timeout opcionais. Cobre node, npm, npx, gh, git, build, testes. Retorna stdout/stderr/exit code.
read_file Lê um arquivo (opcionalmente uma faixa de linhas).
write_file Cria ou sobrescreve um arquivo (cria diretórios pais).
edit_file Substituição de texto exato (old_stringnew_string, com replace_all).
list_directory Lista entradas de um diretório com o tipo de cada uma.
move_file Move ou renomeia arquivo/diretório.
make_directory mkdir -p.
delete_path Exclui arquivo ou diretório (recursive para diretórios).

run_command sozinho já cobre tudo; as ferramentas de arquivo existem porque são mais confiáveis e legíveis para o agente do que montar comandos de shell.

Rodando

npm install
npm run build

# gere um token forte e exporte antes de iniciar
export MCP_AUTH_TOKEN=$(openssl rand -hex 32)
export PORT=3000
# producao: URL publica HTTPS (issuer OAuth) e senha da tela de aprovacao
export PUBLIC_URL=https://seu-host
export OAUTH_APPROVAL_PASSWORD=uma-senha-forte
npm start

Desenvolvimento com reload: npm run dev (também precisa de MCP_AUTH_TOKEN).

Health check (sem auth): GET /health{ "status": "ok", "tools": [...] }.

Teste rápido do handshake

curl -X POST http://127.0.0.1:3000/mcp \
  -H "Authorization: Bearer $MCP_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"c","version":"1"}}}'

O header de resposta Mcp-Session-Id deve ser reenviado nas chamadas seguintes (tools/list, tools/call).

Expondo com HTTPS (necessário para o Copilot Studio)

O Copilot Studio (nuvem) só alcança endpoints HTTPS públicos. Coloque o servidor atrás de TLS. Opções:

  • Reverse proxy (nginx/Caddy) com certificado, encaminhando para http://127.0.0.1:3000.
  • Túnel para expor rapidamente: cloudflared, ngrok, ou Azure Application Gateway / Front Door se a VM for Azure.

Mantenha o servidor MCP ouvindo em 127.0.0.1 quando houver proxy na frente, para não expor a porta HTTP crua.

Conectando no Copilot Studio

O Copilot Studio consome MCP através de uma tool/custom connector apontando para o endpoint Streamable HTTP:

  1. No Copilot Studio, abra seu agente → ToolsAdd a toolNew toolModel Context Protocol. (Alternativamente, Power Apps → Custom connectors e importe a spec abaixo.)
  2. Server URL: a URL HTTPS pública que aponta para /mcp (ex.: https://seu-host/mcp).
  3. Autenticação: tipo API Key / cabeçalho, com header Authorization e valor Bearer <seu MCP_AUTH_TOKEN>. Guarde o token no cofre/variável de ambiente do connector, nunca no prompt.
  4. Salve e publique o connector; adicione a tool ao agente.
  5. As 8 ferramentas aparecem para o agente, que passa a decidir sozinho quando chamar run_command, edit_file, etc.

Observação: o suporte a MCP no Copilot Studio evolui rápido. Se a UI não oferecer MCP nativo na sua região/licença, crie um custom connector com uma spec OpenAPI que descreva o endpoint /mcp (Streamable HTTP) e o header Authorization.

Conectando no ChatGPT

O ChatGPT exige OAuth (não aceita Bearer token estático) e requer developer mode (Plus/Pro) ou plano Business/Enterprise:

  1. Settings → Connectors → Create (com developer mode habilitado em Settings → Connectors → Advanced).
  2. MCP Server URL: https://seu-host/mcpAuthentication: OAuth.
  3. O ChatGPT descobre os endpoints via /.well-known/*, registra-se sozinho (DCR) e abre a tela de aprovação: informe a OAUTH_APPROVAL_PASSWORD.
  4. Pronto — access tokens duram 2 h e são renovados automaticamente via refresh token (30 dias, com rotação).

Para revogar o acesso do ChatGPT: apague data/oauth-state.json e reinicie o serviço (ou use /revoke).

Segurança — leia antes de produção

Este servidor executa comandos arbitrários na VM. Consequências:

  • Trate o MCP_AUTH_TOKEN como credencial de acesso root à VM. Rotacione-o periodicamente.
  • Rode o processo com um usuário de baixo privilégio dedicado ao desenvolvimento, não como root.
  • Prefira uma VM descartável/isolada por projeto; não aponte para máquinas com dados sensíveis de outros sistemas.
  • Sempre atrás de TLS; nunca exponha a porta HTTP crua na internet.
  • Considere logs de auditoria dos comandos recebidos se precisar de rastreabilidade.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选