MCPRS: Model Context Protocol para Rust
MCPRS é uma biblioteca Rust que implementa um protocolo padronizado (Model Context Protocol) para comunicação com diversos Large Language Models (LLMs) e serviços de IA. Ela fornece uma camada de abstração unificada que permite aos desenvolvedores interagir com diferentes APIs de IA (como OpenAI GPT, DeepSeek, etc.) de forma consistente e intercambiável.
Principais Características
- 🔄 Interface Unificada: Uma única API consistente para todos os modelos de IA
- 🌐 Múltiplos Provedores: Suporte integrado para OpenAI e DeepSeek (facilmente extensível)
- 🔌 Arquitetura Plugável: Adicione novos provedores de IA implementando a trait
AIAgent - 🔒 Autenticação: Sistema de autenticação baseado em tokens
- 💬 Gerenciamento de Conversas: Armazene e gerencie histórico de conversas
- 📊 Streaming: Suporte para respostas em streaming dos modelos
- 🧪 Testabilidade: Abstrações para facilitar testes com mocks
Instalação
Adicione MCPRS ao seu Cargo.toml:
[]
= "0.1.0"
Guia Rápido
Cliente Simples
use ;
use json;
async
Servidor Básico
use AgentRegistry;
use create_openai_agent;
use run_http_server;
use SocketAddr;
async
Servidor Avançado com Autenticação e Histórico
use AgentRegistry;
use create_openai_agent;
use AuthConfig;
use ConversationManager;
use run_http_server_with_auth;
use SocketAddr;
async
Conceitos Principais
Protocolo MCP
O Model Context Protocol (MCP) define um formato padronizado para mensagens trocadas entre clientes e servidores:
Agentes de IA
Os agentes implementam a trait AIAgent e encapsulam a comunicação com serviços específicos de IA:
Agentes disponíveis:
- DummyAgent: Para testes, apenas ecoa o payload recebido
- OpenAIAgent: Integra com a API do OpenAI (ChatGPT)
- DeepSeekAgent: Integra com a API DeepSeek
Documentação Detalhada
Cliente
O módulo client fornece funções para construir e enviar mensagens MCP:
// Criar uma mensagem MCP formatada corretamente
let message = create_mcp_message_for_agent;
// Enviar a mensagem para um servidor MCP
let response = send_mcp_request.await?;
Servidor
O módulo server implementa um servidor HTTP que pode receber e processar mensagens MCP:
// Versão básica do servidor
run_http_server.await;
// Versão avançada com autenticação e histórico
run_http_server_with_auth.await;
Autenticação
O módulo auth fornece um sistema de autenticação baseado em tokens:
// Configuração de tokens permitidos
let auth_config = new;
auth_config.add_token;
// No cliente (usando reqwest)
client.post.bearer_auth.json.send.await?;
Conversações
O módulo conversation implementa gerenciamento de histórico de conversações:
// Criar um gerenciador de conversas
let manager = new; // retenção de 24 horas
// Criar uma nova conversa
let conversation = manager.create_conversation?;
// Adicionar mensagens
manager.add_message_to_conversation?;
// Recuperar histórico
let history = manager.get_conversation;
Streaming
O módulo streaming fornece suporte para processamento de respostas em streaming:
// Processar um stream de bytes em tokens estruturados
let token_stream = .await?;
// Consumir os tokens
while let Some = token_stream.next.await
Implementando um Novo Agente
Para adicionar suporte a um novo serviço de IA, implemente a trait AIAgent:
Configuração de Ambiente
O projeto utiliza variáveis de ambiente para configurações sensíveis:
OPENAI_API_KEY- Chave de API para o agente OpenAIDEEPSEEK_API_KEY- Chave de API para o agente DeepSeekDEEPSEEK_ENDPOINT- URL do endpoint DeepSeek (padrão: https://api.deepseek.ai)DEEPSEEK_MODEL- Modelo DeepSeek a ser usado (padrão: deepseek-chat)
Exemplos
O repositório inclui exemplos completos:
- Client: Um cliente simples para enviar requisições
- Server: Um servidor completo com autenticação e histórico
- Demonstrate Agents: Exemplo que cria um servidor e envia requisições para testar
Testes
A biblioteca vem com uma suíte de testes automatizados:
# Executar todos os testes
# Executar testes específicos
Próximos Passos e Contribuições
Contribuições são bem-vindas! Áreas de melhoria incluem:
- Adicionar mais agentes de IA (Claude, Cohere, Mistral, etc.)
- Melhorar o sistema de streaming com tipagem específica por agente
- Implementar cache de respostas
- Adicionar ferramentas (tools) para processamento avançado
Licença
Este projeto está licenciado sob a Licença MIT.