Skip to main content
Glama

MCP Base - A Generic Model Context Protocol Framework

This folder contains a general-purpose base implementation of the Model Context Protocol (MCP) for building AI-powered applications. It provides a standardized way to create MCP servers and clients that can be used to integrate LLMs into your applications.

📋 Features

  • Standardized MCP Server: A base server implementation with support for HTTP and stdio transports

  • Generic MCP Client: A client for connecting to any MCP server

  • Ollama Integration: Ready-to-use services for generating embeddings and text with Ollama

  • Supabase Integration: Built-in support for Supabase vector database

  • Modular Design: Clearly organized structure for resources, tools, and prompts

  • Sample Templates: Example implementations to help you get started quickly

Related MCP server: FastAPI MCP Server

🛠️ Directory Structure

_mcp-base/
├── server.ts            # Main MCP server implementation
├── client.ts            # Generic MCP client
├── utils/               # Utility services
│   ├── ollama_embedding.ts    # Embedding generation with Ollama
│   └── ollama_text_generation.ts  # Text generation with Ollama
├── tools/               # Tool implementations
│   └── sample-tool.ts   # Example tool template
├── resources/           # Resource implementations
│   └── sample-resource.ts  # Example resource template
├── prompts/             # Prompt implementations
│   └── sample-prompt.ts # Example prompt template
└── README.md            # This documentation

🚀 Getting Started

Prerequisites

  • Node.js and npm/pnpm

  • Ollama for local embedding and text generation

  • Supabase account for vector storage

Environment Setup

Create a .env file with the following variables:

PORT=3000
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your-service-key
OLLAMA_URL=http://localhost:11434
OLLAMA_EMBED_MODEL=nomic-embed-text
OLLAMA_LLM_MODEL=llama3
SERVER_MODE=http  # 'http' or 'stdio'

Server Initialization

  1. Import the required modules

  2. Register your resources, tools, and prompts

  3. Start the server

// Import base server and utilities
import server from "./server";
import { registerSampleResources } from "./resources/sample-resource";
import { registerSampleTool } from "./tools/sample-tool";
import { registerSamplePrompts } from "./prompts/sample-prompt";

// Initialize database if needed
async function initializeDatabase() {
  // Your database initialization logic
}

// Register your components
registerSampleResources(server, supabase);
registerSampleTool(server, textGenerator, embeddings, supabase);
registerSamplePrompts(server, supabase);

// Start the server
startServer();

Client Usage

import MCPClient from "./client";

// Create a client instance
const client = new MCPClient({
  serverUrl: "http://localhost:3000",
});

// Example: Call a tool
async function callSampleTool() {
  const result = await client.callTool("sample-tool", {
    query: "example query",
    maxResults: 5,
  });
  console.log(result);
}

// Example: Read a resource
async function readResource() {
  const items = await client.readResource("items://all");
  console.log(items);
}

// Example: Get a prompt
async function getPrompt() {
  const prompt = await client.getPrompt("simple-prompt", {
    task: "Explain quantum computing",
  });
  console.log(prompt);
}

// Don't forget to disconnect when done
await client.disconnect();

📚 Extending the Framework

Creating a New Tool

  1. Create a new file in the tools/ directory

  2. Define your tool function and schema using Zod

  3. Implement your tool logic

  4. Register the tool in your server

Creating a New Resource

  1. Create a new file in the resources/ directory

  2. Define your resource endpoints and schemas

  3. Implement your resource logic

  4. Register the resource in your server

Creating a New Prompt

  1. Create a new file in the prompts/ directory

  2. Define your prompt schema and parameters

  3. Implement your prompt template

  4. Register the prompt in your server

📄 License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A high-performance Model Context Protocol (MCP) server designed for large language models, enabling real-time communication between AI models and applications with support for session management and intelligent tool registration.
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that bridges MCP clients with local LLM services, enabling seamless integration with MCP-compatible applications through standard tools like chat completion, model listing, and health checks.
    -