Skip to main content

Simple MCP Client to Explore MCP Servers License: MIT pypi version

Quickly test and explore MCP servers from the command line!

Project Status

This utility is based on langchain-mcp-tools, which currently supports MCP Protocol version 2025-03-26.

It does not support the MCP 2026-07-28 specification.

Introduction

A simple, text-based CLI client for Model Context Protocol (MCP) servers built with LangChain and Python.
Suitable for testing MCP servers, exploring their capabilities, and prototyping integrations.

Internally it uses LangChain Agent and a utility function convert_mcp_to_langchain_tools() from langchain_mcp_tools.

A TypeScript equivalent of this utility is available here

Prerequisites

Quick Start

  • Install mcp-chat tool. This can take up to a few minutes to complete:

    pip install mcp-chat
    
  • Configure LLM and MCP Servers settings via the configuration file, llm_mcp_config.json5

    code llm_mcp_config.json5
    

    The following is a simple configuration for quick testing:

    {
      "llm": {
        "provider": "openai",       "model": "gpt-5.4-mini"
        // "provider": "anthropic",    "model": "claude-haiku-4-5"
        // "provider": "google_genai", "model": "gemini-2.5-flash"
        // "provider": "xai",          "model": "grok-4-1-fast-non-reasoning"
        // "provider": "cerebras",     "model": "gpt-oss-120b"
        // "provider": "groq",         "model": "openai/gpt-oss-20b"
      },
    
      "mcp_servers": {
        "us-weather": {  // US weather only
          "command": "npx", 
          "args": ["-y", "@h1deya/mcp-server-weather"]
        },
      },
    
      "example_queries": [
        "Tell me how LLMs work in a few sentences",
        "Are there any weather alerts in California?",
      ],
    }
    
  • Set up API keys

    echo "ANTHROPIC_API_KEY=sk-ant-...
    OPENAI_API_KEY=sk-proj-...
    GOOGLE_API_KEY=AI...
    XAI_API_KEY=xai-...
    CEREBRAS_API_KEY=csk-...
    GROQ_API_KEY=gsk_..." > .env
    
    code .env
    
  • Run the tool

    mcp-chat
    

    By default, it reads the configuration file, llm_mcp_config.json5, from the current directory.
    Then, it applies the environment variables specified in the .env file, as well as the ones that are already defined.

Features

  • Easy setup: Works out of the box with popular MCP servers
  • Flexible configuration: JSON5 config with environment variable support
  • Multiple LLM/API providers: OpenAI, Anthropic, Google (GenAI), xAI, Ceberas, Groq
  • Command & URL servers: Support for both local and remote MCP servers
  • Local MCP Server logging: Save stdio MCP server logs with customizable log directory
  • Interactive testing: Example queries for the convenience of repeated testing

Limitations

  • Tool Return Types: Currently, only text results of tool calls are supported. It uses LangChain's response_format: 'content' (the default) internally, which only supports text strings. While MCP tools can return multiple content types (text, images, etc.), this library currently filters and uses only text content.
  • MCP Features: Only MCP Tools are supported. Other MCP features like Resources, Prompts, and Sampling are not implemented.

Usage

Basic Usage

mcp-chat

By default, it reads the configuration file, llm_mcp_config.json5, from the current directory.
Then, it applies the environment variables specified in the .env file, as well as the ones that are already defined.
It outputs local MCP server logs to the current directory.

With Options

# Specify the config file to use
mcp-chat --config my-config.json5

# Store local (stdio) MCP server logs in specific directory
mcp-chat --log-dir ./logs

# Enable verbose logging
mcp-chat --verbose

# Show help
mcp-chat --help

Supported Model/API Providers

  • OpenAI: gpt-5.4-mini, gpt-5.2, etc.
  • Anthropic: claude-sonnet-4-6, claude-haiku-4-5, etc.
  • Google (GenAI): gemini-3.1-flash-lite-preview, gemini-2.5-flash, etc.
  • xAI: grok-4-1-fast-non-reasoning, grok-3-mini, etc.
  • Cerebras: gpt-oss-120b, etc.
  • Groq: openai/gpt-oss-20b, openai/gpt-oss-120b, etc.

Configuration

Create a llm_mcp_config.json5 file:

  • 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
{
  "llm": {
    "provider": "openai",       "model": "gpt-5.4-mini"
    // "provider": "anthropic",    "model": "claude-haiku-4-5"
    // "provider": "google_genai", "model": "gemini-2.5-flash"
    // "provider": "xai",          "model": "grok-4-1-fast-non-reasoning"
    // "provider": "cerebras",     "model": "gpt-oss-120b"
    // "provider": "groq",         "model": "openai/gpt-oss-20b"
  },

  "example_queries": [
    "Read and briefly summarize the llm_mcp_config.json5 file in the current directory",
    "Fetch the raw HTML content from bbc.com and tell me the titile",
    // "Search for 'news in California' and show the first hit",
    // "Tell me about my authenticated GitHub profile",
    // "Tell me about my authenticated Notion account",
  ],

  "mcp_servers": {
    // Local MCP server that uses `npx`
    // https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "."  // path to a directory to allow access to
      ]
    },

    // Local MCP server that uses `uvx`
    // https://pypi.org/project/mcp-server-fetch/
    "fetch": {
      "command": "uvx",
      "args": [
        "mcp-server-fetch"
      ]
    },

    // Embedding the value of an environment variable
    // https://www.npmjs.com/package/@modelcontextprotocol/server-brave-search
    "brave-search": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-brave-search"
      ],
      "env": {
        "BRAVE_API_KEY": "${BRAVE_API_KEY}"
      }
    },

    // Example of remote MCP server authentication via Authorization header
    // https://github.com/github/github-mcp-server?tab=readme-ov-file#remote-github-mcp-server
    "github": {
      // To avoid auto protocol fallback, specify the protocol explicitly when using authentication
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer ${GITHUB_PERSONAL_ACCESS_TOKEN}"
      }
    },

    // For remote MCP servers that require OAuth, consider using "mcp-remote"
    "notion": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.notion.com/mcp"],
    },
  }
}

Environment Variables

Create a .env file for API keys:

OPENAI_API_KEY=sk-ant-...
ANTHROPIC_API_KEY=sk-proj-...
GOOGLE_API_KEY=AI...
XAI_API_KEY=xai-...
CEREBRAS_API_KEY=csk-...
GROQ_API_KEY=gsk_...

# Other services as needed
GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_...
BRAVE_API_KEY=BSA...

Popular MCP Servers to Try

There are quite a few useful MCP servers already available:

Troubleshooting

  • Make sure your configuration and .env files are correct, especially the spelling of the API keys
  • Check the local MCP server logs
  • Use --verbose flag to view the detailed logs
  • Refer to Debugging Section in MCP documentation

Building from Source

See README_DEV.md for details.

Change Log

Can be found here

License

MIT License - see LICENSE file for details.

Contributing

Issues and pull requests welcome!
In particular, please share any issues relating to the latest versions of LLM models and specific MCP servers.
This tool aims to make MCP server testing as simple as possible.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_chat-0.3.5.tar.gz (184.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_chat-0.3.5-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file mcp_chat-0.3.5.tar.gz.

File metadata

  • Download URL: mcp_chat-0.3.5.tar.gz
  • Upload date:
  • Size: 184.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.8

File hashes

Hashes for mcp_chat-0.3.5.tar.gz
Algorithm Hash digest
SHA256 2f65b7d1b4220a3aa6f288b1aac67b1c2590443a581d77c084aab5aebaf30820
MD5 4055ab52f5b5bbecb59a00c2ba42eddd
BLAKE2b-256 afd3366fa4b3cb8b0c9bd38d7126cce03806741dbe2a0ab6d84a83e2bff5abdc

See more details on using hashes here.

File details

Details for the file mcp_chat-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: mcp_chat-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.8

File hashes

Hashes for mcp_chat-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2e8344f96bcb75e4238d32c93b92f571d41f3f91bbdfd170523ccdd3ffc6266d
MD5 8ef77d4c6891fcb2204c74f7080c0996
BLAKE2b-256 905f7f4480f87eb3f1d522ef16cd252d8d4e6a158a04bc886679a1f727b5181e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.5 This release

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.14

2 files

0.2.13

2 files

0.2.12

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page