Multi-Provider MCP Server

by matheusleite

167 downloads Not rated yet GPL-3.0 license

About

Custom MCP Server to integrate with tools and run inside a n8n instance

Details

License
GPL-3.0 license

Explore

- 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

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

Start the server in development mode:

npm run dev

Or in production:

npm start

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!"}'

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.