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