Sponsored by Deepsite.site

Demo MCP Basic

Created By
bertrandgressier9 months ago
Demo of MCP server with HTTP SSE and a client
Content

Demo MCP Basic

This project demonstrates a fundamental client-server interaction using the Model Context Protocol (MCP). MCP allows AI models, like those accessed via the AI SDK (e.g., Google Gemini/Vertex AI), to securely discover and utilize external tools or resources provided by a separate server process.

In this example:

  • The Server (src/server/) acts as an MCP provider, offering simple calculation tools (addition, subtraction, etc.).
  • The Client (src/client/) uses the AI SDK to interact with a Google AI model and connects to the MCP server to make the server's tools available to the AI during generation.

This setup illustrates how you can extend the capabilities of AI models by giving them access to custom functionalities hosted on an MCP server.

Prerequisites

  • Node.js (Version >=23.0.0 as specified in package.json)
  • npm (comes with Node.js)
  • A Google AI (Gemini) API Key. You can obtain one from Google AI Studio. (Required for using Gemini models).

Setup

  1. Clone the repository:

    git clone git@github.com:bertrandgressier/demo-ts-mcp-client-server.git
    cd demo-mcp-basic
    
  2. Install dependencies:

    npm install
    
  3. Create Environment File: Copy the example environment file .env.example to a new file named .env:

    cp .env.example .env
    

    Then, edit the .env file to add your actual API keys and configuration. The required and optional variables are:

    # Required for Google Studio Models (Gemini)
    GOOGLE_API_KEY=YOUR_GOOGLE_API_KEY
    
    # Required for Google Vertex AI Models
    VERTEX_PROJECT_ID=YOUR_VERTEX_PROJECT_ID
    
    # Optional: Defaults to 'us-central1' if not set
    # VERTEX_LOCATION=your-vertex-location
    
    # Optional: Path to Vertex AI service account key file. Defaults to 'vertex-key.json' in the root if not set.
    # VERTEX_KEY_FILE=path/to/your/vertex-key.json
    

    Replace YOUR_GOOGLE_API_KEY and YOUR_VERTEX_PROJECT_ID with your actual credentials. If you use a Vertex AI key file, ensure it's placed correctly (e.g., in the root as vertex-key.json or provide the correct path in VERTEX_KEY_FILE).

    • Important: The .gitignore file is configured to prevent .env and vertex-key.json from being committed to Git.

Available Scripts

  • Build TypeScript:

    npm run build
    

    Compiles TypeScript code from src to JavaScript in dist.

  • Start Production Server:

    npm run start
    # or specifically
    npm run start:server
    

    Builds the project (if not already built) and runs the compiled server from dist/server/server.js.

  • Start Production Client:

    npm run start:client
    

    Runs the compiled client from dist/client/client.js.

  • Run Server in Development Mode:

    npm run dev:server
    

    Runs the server directly using ts-node (or similar via --experimental-transform-types) without needing a separate build step.

  • Run Server in Development Mode with Watch:

    npm run dev:server:watch
    

    Runs the server using nodemon, automatically restarting it when changes are detected in the src/server directory.

  • Run Client in Development Mode:

    npm run dev:client
    

    Runs the client directly using ts-node (or similar).

Example Client (src/client/client.ts)

The primary example client script demonstrates the following:

  1. Connects to the MCP Server: Establishes a connection to the locally running MCP server (expected at http://localhost:3001/sse).
  2. Fetches Tools: Retrieves the list of tools made available by the connected server.
  3. Configures AI Model: Uses the AI SDK (generateText) configured with a Google AI model (Gemini via API Key or Vertex AI, depending on environment variables set in .env and potentially src/models/google-ai-provider.ts).
  4. Executes Prompt: Sends a prompt (6 + 12) along with a system message instructing the AI to use the fetched tools to solve the calculation.
  5. Outputs Result: Prints the final text response generated by the AI model after potentially using the server-provided tools.

This client serves as a basic illustration of how an application can interact with an MCP server to leverage its tools within an AI generation flow.

Project Structure

  • src/: Contains the TypeScript source code.
    • client/: Code for the MCP client application.
    • server/: Code for the MCP server application.
    • model.ts: Handles AI model initialization and environment variable loading.
  • dist/: Contains the compiled JavaScript code (after running npm run build).
  • .env: Stores environment variables (API keys, etc.) - Do not commit this file.
  • package.json: Project metadata and dependencies.
  • tsconfig.json: TypeScript compiler configuration.
Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
CursorThe AI Code Editor
Tavily Mcp
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
WindsurfThe new purpose-built IDE to harness magic
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
DeepChatYour AI Partner on Desktop
ChatWiseThe second fastest AI chatbot™
Amap Maps高德地图官方 MCP Server
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Serper MCP ServerA Serper MCP Server
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Playwright McpPlaywright MCP server
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.