Skip to content

hideya/mcp-client-langchain-ts

Repository files navigation

Simple CLI MCP Client Using LangChain / TypeScript License: MIT

This simple Model Context Protocol (MCP) client with command line interface demonstrates the use of MCP server tools by the LangChain ReAct Agent.

When testing LLM and MCP servers, their settings can be conveniently configured via a configuration file, such as the following:

{
    "llm": {
        "model_provider": "openai",
        "model": "gpt-4o-mini",
    },

    "mcp_servers": {
        "fetch": {
            "command": "uvx",
            "args": [
                "mcp-server-fetch"
            ]
        },

        "weather": {
            "command": "npx",
            "args": [
                "-y",
                "@h1deya/mcp-server-weather"
            ]
        },

        // Auto-detection: tries Streamable HTTP first, falls back to SSE
        "remote-mcp-server": {
            "url": "https://${SERVER_HOST}:${SERVER_PORT}/..."
        },

        // Example of authentication via Authorization header
        "github": {
            "type": "http",  // recommended to specify the protocol explicitly when authentication is used
            "url": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
            }
        },
    }
}

It leverages a utility function convertMcpToLangchainTools() from @h1deya/langchain-mcp-tools.
This function handles parallel initialization of specified multiple MCP servers and converts their available tools into an array of LangChain-compatible tools (StructuredTool[]).

This client supports both local (stdio) MCP servers as well as remote (Streamable HTTP/SSE/WebSocket) MCP servers that are accessible via a simple URL. This client only supports text results of tool calls.

For the convenience of debugging MCP servers, this client prints local (stdio) MCP server logs to the console.

LLMs from Anthropic, OpenAI and Google (GenAI) are currently supported.

A python version of this MCP client is available here

Prerequisites

as needed.

Setup

  1. Install dependencies:

    npm install
  2. Setup API keys:

    cp .env.template .env
    • Update .env as needed.
    • .gitignore is configured to ignore .env to prevent accidental commits of the credentials.
  3. Configure LLM and MCP Servers settings llm_mcp_config.json5 as needed.

    • The configuration file format for MCP servers follows the same structure as Claude for Desktop, with one difference: the key name mcpServers has been changed to mcp_servers to follow the snake_case convention commonly used in JSON configuration files.
    • The file format is JSON5, where comments and trailing commas are allowed.
    • The format is further extended to replace ${...} notations with the values of corresponding environment variables.
    • Keep all the credentials and private info in the .env file and refer to them with ${...} notation as needed.

Usage

Run the app:

npm start

Run in verbose mode:

npm run start:v

See commandline options:

npm run start:h

At the prompt, you can simply press Enter to use example queries that perform MCP server tool invocations.

Example queries can be configured in llm_mcp_config.json5

About

Simple CLI MCP Client Implementation Using LangChain ReAct Agent / TypeScript

Topics

Resources

License

Stars

Watchers

Forks