mcpField
M
MCP CLI Client

MCP CLI Client

github.com/fbeunder框架与 SDK086 周前更新

关于 MCP CLI Client

MCP CLI Client 是用于连接本地或远程 MCP 服务的 Python 命令行工具和模块,支持 STDIO、SSE、JSON-RPC 请求以及交互式操作。

主要功能

  1. 01通过 STDIO 连接本地服务
  2. 02通过 SSE 连接远程服务
  3. 03发送 JSON-RPC 请求
  4. 04支持交互和命令行模式
  5. 05可作为 Python 模块使用

适用场景

  1. 01向本地 MCP 服务发送请求
  2. 02通过 SSE 查询远程服务
  3. 03在 Python 项目中集成 MCP 连接

MCP 相关

作为 MCP 客户端,它通过 STDIO 连接本地服务,或通过 SSE 连接远程服务,并发送 JSON-RPC 请求。支持交互式和命令行操作。

详细介绍

MCP 命令行客户端

用于通过本地连接(STDIO)和远程连接(SSE)与 MCP(Machine Communication Protocol)服务交互的命令行界面。

概述

MCP 命令行客户端允许用户:

  • 通过 STDIO 连接到本地 MCP 服务
  • 通过 SSE(Server-Sent Events)连接到远程 MCP 服务
  • 向连接的服务发送 JSON-RPC 请求
  • 在命令行模式和交互模式中工作
  • 作为 Python 模块集成到其他项目中

安装

  1. 克隆仓库:

    git clone https://github.com/Fbeunder/MCP_CLI_CLIENT.git
    cd MCP_CLI_CLIENT
    
  2. 创建虚拟环境(可选但推荐):

    python -m venv venv
    source venv/bin/activate  # Op Windows: venv\Scripts\activate
    
  3. 安装所需包:

    pip install -r requirements.txt
    
  4. 配置应用程序:

    cp .env.example .env
    # Bewerk .env met je eigen configuratie
    
  5. 安装为 Python 包:

    pip install -e .
    

作为命令行工具使用

基本命令
# Verbinden met een lokale MCP-server en een verzoek uitvoeren
python main.py --local --method methodName --params '{"param1": "value1"}'

# Verbinden met een remote MCP-server en een verzoek uitvoeren
python main.py --remote --method methodName --params '{"param1": "value1"}'

# Starten in interactieve modus met een lokale server
python main.py --local
交互模式

在交互模式中,你可以输入以下格式的命令:

methodName {"param1": "value1", "param2": "value2"}

输入 exit、quit 或 q 退出交互模式。

作为 Python 模块使用

MCP 命令行客户端也可以作为 Python 模块在你的项目中使用:

from mcp_cli_client import MCPClient

# Maak een nieuwe client instantie
client = MCPClient()

# Verbind met een lokale MCP server
client.connect_stdio("path/to/local/mcp/server")
# OF verbind met een remote server
# client.connect_sse("https://mcp-server.example.com/events")

# Stuur verzoeken
response = client.send_request("getVersion")
print(response)

# Stuur verzoeken met parameters
response = client.send_request("echo", {"message": "Hello, MCP!"})
print(response)

# Sluit de verbinding
client.close()
作为模块安装

要将 MCP 命令行客户端作为模块安装到其他项目中:

# Vanuit de repo directory
pip install -e .

# OF direct vanaf GitHub
pip install git+https://github.com/Fbeunder/MCP_CLI_CLIENT.git
扩展示例

查看 examples/module_example.py 获取作为模块使用的扩展示例。

配置

配置从 .env 文件加载,选项如下:

  • MCP_SERVER_URL:远程 SSE 服务的 URL
  • MCP_LOCAL_COMMAND:通过 STDIO 启动本地服务的命令
  • API_KEY:用于身份验证的可选 API 密钥
  • LOG_LEVEL:日志级别(DEBUG、INFO、ERROR)

测试

该项目包含全面的测试套件,包括单元测试和集成测试。

运行测试
  1. 安装测试依赖项:

    pip install -r requirements.txt
    
  2. 运行所有测试:

    pytest
    
  3. 运行测试并生成覆盖率报告:

    pytest --cov=src
    
测试结构
  • tests/test_mcp_client.py:MCPClient 类的单元测试
  • tests/test_mcp_cli.py:命令行界面的单元测试
  • tests/test_integration.py:测试各组件协同工作的集成测试

API 文档

MCPClient

MCPClient 类提供以下方法:

  • connect_stdio(command=None):通过 STDIO 连接到本地 MCP 服务
  • connect_sse(url=None):通过 SSE 连接到远程 MCP 服务
  • send_request(method, params=None):发送 JSON-RPC 请求
  • close():关闭连接
异常
  • ConfigurationError:配置加载或处理错误
  • ConnectionError:建立连接错误
  • CommunicationError:与 MCP 服务通信错误

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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