mcp_server

matheusleite/mcp_server

3.1

If you are the rightful owner of mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A robust and extensible Model Context Protocol (MCP) server that supports multiple tool providers.

Multi-Provider MCP Server

A robust and extensible Model Context Protocol (MCP) server that supports multiple tool providers. This server enables AI models to utilize tools from different service providers through a standardized interface.

Features

  • Modular architecture for easy extension with new providers
  • Centralized configuration management
  • Provider-specific tool implementations
  • CLI mode for direct tool testing
  • Comprehensive error handling and logging

Supported Providers

Currently, the server supports the following providers:

  • Evolution API: Tools for WhatsApp messaging and group management

Getting Started

Prerequisites

  • Node.js 14.x or higher
  • npm or yarn

Installation

  1. Clone the repository
  2. Install dependencies:
    npm install
    
  3. Create a .env file from the template:
    cp .env.example .env
    
  4. Configure your environment variables in the .env file

Running the Server

Start the server in development mode:

npm run dev

Or in production:

npm start

Using CLI Mode for Testing Tools

You can directly test any tool by running:

npm run tool <tool_name> '<json_args>'

Example:

npm run tool envia_mensagem '{"number":"5511999999999","mensagem":"Hello world!"}'

Adding a New Provider

  1. Create a new provider class in the src/providers directory, extending BaseProvider
  2. Implement the required tools and their handlers
  3. Register your provider in src/providers/index.js
  4. Add provider configuration in src/config/index.js
  5. Update .env.example with new variables

Provider Template

const BaseProvider = require('../core/BaseProvider');

class MyNewProvider extends BaseProvider {
  constructor(config) {
    super('provider-name', config);
    this._registerTools();
  }
  
  _registerTools() {
    // Register your tools here
  }
}

module.exports = MyNewProvider;

Architecture

โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ config/             # Configuration settings
โ”‚   โ”œโ”€โ”€ core/               # Core server functionality
โ”‚   โ”‚   โ”œโ”€โ”€ BaseProvider.js # Base class for providers
โ”‚   โ”‚   โ”œโ”€โ”€ MCPServer.js    # MCP server implementation
โ”‚   โ”‚   โ””โ”€โ”€ ProviderManager.js # Manages all providers
โ”‚   โ”œโ”€โ”€ providers/          # Provider implementations
โ”‚   โ”‚   โ”œโ”€โ”€ EvolutionProvider.js  # Evolution API provider
โ”‚   โ”‚   โ””โ”€โ”€ index.js        # Provider exports
โ”‚   โ”œโ”€โ”€ utils/              # Utility functions
โ”‚   โ”‚   โ”œโ”€โ”€ httpClient.js   # HTTP client wrapper
โ”‚   โ”‚   โ””โ”€โ”€ logger.js       # Logging utility
โ”‚   โ””โ”€โ”€ index.js            # Application entry point
โ”œโ”€โ”€ .env                    # Environment variables
โ”œโ”€โ”€ .env.example            # Environment variables template
โ””โ”€โ”€ package.json            # Project metadata

License

ISC