mcpField
M
MCP Client Using LangChain / TypeScript

MCP Client Using LangChain / TypeScript

github.com/hideya框架与 SDK139 周前更新

关于 MCP Client Using LangChain / TypeScript

这是一款使用 LangChain Agent 测试和探索 MCP 服务的 TypeScript 命令行客户端。它支持连接本地和远程服务,并可转换工具架构以适配大模型。

主要功能

  1. 01连接本地和远程 MCP 服务
  2. 02自动转换工具架构
  3. 03JSON5 配置与环境变量
  4. 04支持多种大模型提供方
  5. 05实时服务日志与交互式查询

适用场景

  1. 01探索 MCP 服务工具
  2. 02测试本地或远程服务
  3. 03原型化 MCP 集成

MCP 相关

可连接本地和远程 MCP 服务并使用其工具。仅支持文本工具结果,不支持 MCP 资源、提示词或采样。

详细介绍

用于探索 MCP 服务的简单 MCP 客户端 License: MIT npm version

从命令行快速测试和探索 MCP 服务!

项目状态

此工具基于 @h1deya/langchain-mcp-tools, 目前支持 MCP 协议版本 2025-03-26。

它不支持 MCP 2026-07-28 规范。

简介

这是一款基于文本的简易命令行客户端,用于连接由 LangChain 和 TypeScript 构建的 Model Context Protocol (MCP) 服务。
此工具会自动调整架构以兼容大模型,这有助于某些无法正常运行的 MCP 服务成功运行。
适用于测试 MCP 服务、探索其功能以及构建集成原型。

它在内部使用 LangChain Agent 和 @h1deya/langchain-mcp-tools 中的实用函数 convertMcpToLangchainTools()。 此函数会执行上述 MCP 工具架构转换,以兼容大模型。 详情请参阅此页面。

此工具的 Python 等效版本可在此处获取。

前置条件

快速开始

  • 安装 mcp-client-cli 工具。 完成安装最多可能需要几分钟:

    npm install -g @h1deya/mcp-client-cli
    
  • 通过配置文件 llm_mcp_config.json5 配置大模型和 MCP 服务设置

    code llm_mcp_config.json5
    

    以下是用于快速测试的简单配置:

    {
      "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?",
      ],
    }
    
  • 设置 API 密钥

    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
    
  • 运行工具

    mcp-client-cli
    

    默认情况下,它会从当前目录读取配置文件 llm_mcp_config.json5。
    然后,它会应用 .env 文件中指定的环境变量,以及已定义的环境变量。

功能

  • 轻松设置:开箱即用,支持常见的 MCP 服务
  • 灵活配置:支持环境变量的 JSON5 配置
  • 多个大模型服务商:OpenAI、Anthropic、Google (GenAI)
  • 架构兼容性支持:自动调整工具架构以兼容大模型,这有助于某些无法正常运行的 MCP 服务成功运行。 详情请参阅此页面。 如果要禁用架构转换,请在配置文件的顶层添加 "schema_transformations": false,。
  • 命令和 URL 服务:支持本地和远程 MCP 服务。
    使用 mcp-remote 通过 OAuth 连接远程服务(请参阅下方配置示例末尾)。
  • 实时日志记录:实时查看 stdio MCP 服务日志,并可自定义日志目录
  • 交互式测试:提供示例查询,方便重复测试

限制

  • 工具返回类型:目前仅支持工具调用返回文本结果。 内部使用 LangChain 的 response_format: 'content'(默认值),该格式仅支持文本字符串。 虽然 MCP 工具可以返回多种内容类型(文本、图像等),但此库目前只会筛选并使用文本内容。
  • MCP 功能:仅支持 MCP 工具。其他 MCP 功能(如资源、提示词和采样)尚未实现。

使用方法

基本用法
mcp-client-cli

默认情况下,会从当前目录读取配置文件 llm_mcp_config.json5。
然后应用 .env 文件中指定的环境变量, 以及已定义的环境变量。
本地 MCP 服务日志会输出到当前目录。

使用选项
# Specify the config file to use
mcp-client-cli --config my-config.json5

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

# Enable verbose logging
mcp-client-cli --verbose

# Show help
mcp-client-cli --help

支持的大模型提供商

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

配置

创建 llm_mcp_config.json5 文件:

  • MCP 服务的配置文件格式 与 Claude for Desktop 使用相同的结构,只有一处不同:键名 mcpServers 已更改为 mcp_servers,以遵循 JSON 配置文件中常用的 snake_case 命名约定。
  • 文件格式为 JSON5, 支持注释和尾随逗号。
  • 此格式还经过扩展,可将 ${...} 表达式替换为 对应环境变量的值。
  • 所有凭据和私人信息都应保存在 .env 文件中, 并在需要时使用 ${...} 表达式引用
{
  "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"
  },

  // To disable the automatic schema transformations, uncomment the following line.
  // See this for details about the schema transformations:
  //   https://github.com/hideya/langchain-mcp-tools-ts/blob/main/README.md#llm-provider-schema-compatibility
  //
  // "schema_transformations": false,

  "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"],
    },
  }
}
环境变量

创建 .env 文件以存放 API 密钥:

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

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

值得尝试的热门 MCP 服务

目前已有不少实用的 MCP 服务:

故障排除

  • 确保配置文件和 .env 文件正确无误,尤其要检查 API 密钥的拼写
  • 查看本地 MCP 服务日志
  • 使用 --verbose 标志查看详细日志
  • 参阅 MCP 文档中的调试章节

从源代码构建

详情请参阅 README_DEV.md。

更新日志

请见此处

许可证

MIT 许可证——详情请见 LICENSE 文件。

贡献

欢迎提交问题和拉取请求!
尤其欢迎反馈与最新版本的大模型以及特定 MCP 服务相关的问题。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。