命令行AI聊天工具

一款集成Model Context Protocol (MCP)的命令行AI聊天工具,适用于软件开发工作流中的MCP服务器测试、无头环境操作和自动化脚本。

  • by Greenskin44
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Greenskin44/mcp-cli

使用说明

MCP CLI(MCP 命令行界面)

一个集成了模型上下文协议(MCP)的命令行界面(CLI)AI聊天应用程序,专为软件工程工作流程设计。

受……的启发Anthropic的 “使用Claude API构建”课程 这个项目通过提供生产就绪的代码、全面的测试以及适用于实际应用场景的实用MCP服务器,拓展了课程中教授的概念。

为什么选择使用这个而不是IDE代理?

诚实的回答对于大多数开发工作来说,集成开发环境(IDE)插件(如Kiro、Cursor、GitHub Copilot等)更为出色——它们能够提供完整的上下文信息,直接进行编辑,并且能够无缝融入您的工作流程。

然而,这个工具也有其合法的使用场景:

1. MCP服务器开发与测试

  • 测试自定义MCP服务器 在将它们集成到集成开发环境(IDEs)之前
  • 调试MCP协议问题 孤立地;单独地
  • 快速原型制作 新的MCP工具和工作流程
  • 验证工具行为 没有集成开发环境(IDE)的复杂性

2. 无头环境与远程环境

  • SSH 会话 在没有可用GUI集成开发环境(IDEs)的地方
  • 持续集成/持续交付(CI/CD)流水线 用于自动化操作
  • Docker 容器 以及服务器管理
  • 远程服务器 不进行X11转发

3. 脚本编写与自动化

  • 批处理操作 通过命令行
  • Shell脚本集成 用于自动化工作流
  • 定时任务 借助人工智能辅助
  • 管道自动化 使用自然语言

4. 学习与教育

  • 理解MCP协议 通过实际操作来看
  • 学习AI工具集成 模式;图案
  • 教学材料 用于MCP(多层陶瓷封装/混合电路封装等,具体含义根据上下文确定)的开发
  • 协议调试 以及探索

5. 以终端为先的工作流程

  • 轻量级替代方案 当集成开发环境(IDE)显得过于冗余时
  • 快速查询 无需打开庞大的集成开发环境(IDE)
  • 终端复用器 (tmux/screen) 集成
  • 最小化资源使用 关于受限系统

底线;归根结底如果你在集成开发环境(IDE)中进行积极开发,请使用IDE代理。将其用于MCP开发、自动化、远程工作,或者当你需要一个轻量级的命令行界面(CLI)工具时。

❌ 如果……则不适合你。。。

  • 你正在VS Code、Cursor或类似的集成开发环境(IDE)中积极编码→ 使用IDE代理代替
  • 重构需要完整的代码库上下文 使用IDE代理
  • 你希望AI直接编辑文件 → 使用IDE代理
  • 你正在进行常规的功能开发 → 使用IDE代理

✅ 如果……则非常适合您。。。

  • 你正在构建/测试自定义的MCP服务器
  • 你正在SSH/无头环境中工作
  • 您需要结合AI的CLI自动化
  • 你在学习MCP协议
  • 你想要一个轻量级的终端工具

特点/特性

  • 交互式人工智能聊天与Claude AI进行自然对话
  • 文档管理使用(工具/软件)参考和编辑文档 @document.md 语法
  • 命令提示符执行预定义的工作流 /command 语法
  • Git 集成检查状态,查看差异,提交更改
  • 文件系统操作安全地读取、写入和搜索文件
  • 代码分析分析Python代码结构,查找待办事项,使用Black进行格式化
  • 测试运行器执行 pytest 和 unittest 测试
  • 可扩展架构为您的工作流添加自定义MCP服务器

使用时机:实用对比

场景 使用 IDE 代理 使用 MCP 聊天
在集成开发环境(IDE)中进行主动编码 ✅ 最佳选择 ❌ 不理想
测试自定义MCP服务器 ❌ 过度设计 ✅ 完美匹配
SSH 会话(无图形界面) ❌ 不可用 ✅ 唯一选项
CI/CD 自动化 ❌ 不实用 ✅ 为此而设计
学习MCP协议 ⚠️ 太抽象了 ✅ 直接看到它
快速终端查询 ⚠️ 重量级 ✅ 轻量级
在IDE中进行代码审查 ✅ 最佳选择 ❌ 不理想
批处理文件操作 ❌ 手动 ✅ 可脚本化

建议使用IDE代理进行开发。将其用于MCP开发、自动化、远程工作或终端优先的工作流程。

先决条件

  • Python 3.9或更高版本
  • Anthropic API密钥

设置

步骤1:配置环境变量

  1. 创建或编辑 .env 在项目根目录中查找文件,并验证以下变量是否设置正确:
ANTHROPIC_API_KEY=""  # Enter your Anthropic API secret key

步骤2:安装依赖项

选项1:使用uv进行设置(推荐)

紫外线 是一个快速的Python包安装器和解析器。

  1. 如果尚未安装,请安装 uv:
pip install uv
  1. 创建并激活虚拟环境:
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 安装依赖项:
uv pip install -e .
  1. 运行该项目
uv run main.py

选项2:不使用紫外线进行设置

  1. 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 安装依赖项:
pip install anthropic python-dotenv prompt-toolkit "mcp[cli]==1.8.0"
  1. 运行项目
python main.py

使用方法/用途

基本聊天

只需输入您的信息并按回车键:

> What's the difference between async and await in Python?

文档引用

使用 @ 在您的查询中引用文档:

> Summarize the key points in @deposition.md
> Compare @report.pdf with @outlook.pdf

命令提示符

使用 / 执行预定义的工作流:

> /summarize deposition.md
> /format_document plan.md

使用 Tab 键自动补全命令。

使用MCP服务器

Git 操作

# Run with Git MCP server
python main.py servers/mcp_git_server.py

# Then in chat:
> Use git_status to show me what files have changed
> Use git_diff to show me the changes in detail
> Use git_log to show recent commits

文件系统操作

# Run with File System MCP server
python main.py servers/mcp_filesystem_server.py

# Then in chat:
> Use read_file to show me the contents of main.py
> Use search_files to find all Python files
> Use list_directory to show what's in the core folder

代码分析

# Run with Code Analysis MCP server
python main.py servers/mcp_code_analysis_server.py

# Then in chat:
> Use analyze_python_file to analyze core/chat.py
> Use find_todos to find all TODO comments
> Use count_lines to count lines in the core directory

测试运行器

# Run with Test Runner MCP server
python main.py servers/mcp_test_runner_server.py

# Then in chat:
> Use run_pytest to run all tests
> Use list_tests to show available tests

多台服务器

同时运行多个MCP服务器:

python main.py servers/mcp_git_server.py servers/mcp_filesystem_server.py servers/mcp_code_analysis_server.py

实际应用案例

用例1:测试您的自定义MCP服务器

您正在开发一个新的MCP服务器用于数据库操作:

# Test your server in isolation
python main.py servers/mcp_database_server.py

# In chat, test each tool:
> Use db_query with sql="SELECT * FROM users LIMIT 5"
> Use db_schema with table="users"

# Debug issues without IDE complexity
# Iterate quickly on tool definitions

为什么不选择IDE呢? 你需要测试MCP协议本身,而不是先将其集成。

用例2:CI/CD流水线自动化

在您的GitHub Actions工作流中:

- name: Analyze code changes
  run: |
    echo "Use git_diff to show changes" | python main.py servers/mcp_git_server.py
    echo "Use find_todos to check for new TODOs" | python main.py servers/mcp_code_analysis_server.py
    echo "Use run_pytest with coverage=true" | python main.py servers/mcp_test_runner_server.py

为什么不使用IDE呢? 在CI/CD中没有图形用户界面,需要可脚本化的自动化。

用例3:远程服务器管理

通过SSH登录到生产服务器:

# No GUI available, but need AI assistance
python main.py servers/mcp_filesystem_server.py

> Use search_files with pattern="**/*.log" to find all log files
> Use read_file with file_path="app.log" to check errors
> Analyze the error patterns and suggest fixes

为什么不使用IDE呢? 无图形用户界面,仅支持终端环境。

用例4:学习MCP协议

举办关于MCP开发的研讨会教学

# Students can see exactly what's happening
python main.py servers/mcp_git_server.py

# Watch the protocol in action
# See tool definitions
# Understand request/response flow

为什么不使用IDE? 需要直接查看协议,不要抽象概括。

发展

运行测试

# Install dev dependencies
uv pip install -e ".[dev]"

# Run all tests
pytest

# Run with coverage
pytest --cov --cov-report=term-missing

# Run specific test file
pytest tests/test_config.py

代码质量

# Format code with Black
black .

# Lint with Ruff
ruff check .

添加新文档

编辑 mcp_server.py 并添加条目到 docs 字典:

docs = {
    "your_doc.md": "Your document content here",
}

创建自定义MCP服务器

创建一个新文件 servers/mcp_custom_server.py:

from pydantic import Field
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("CustomMCP", log_level="ERROR")

@mcp.tool(
    name="your_tool",
    description="Description of what your tool does",
)
def your_tool(
    param: str = Field(description="Parameter description")
) -> str:
    """Tool implementation."""
    return f"Result: {param}"

if __name__ == "__main__":
    mcp.run(transport="stdio")

然后运行:

python main.py servers/mcp_custom_server.py

建筑学

mcp-chat/
├── core/                 # Core application modules
│   ├── chat.py           # Core chat logic
│   ├── claude.py         # Claude API wrapper
│   ├── cli.py            # CLI interface
│   ├── cli_chat.py       # CLI-specific chat features
│   ├── config.py         # Configuration management
│   ├── exceptions.py     # Custom exceptions
│   ├── logger.py         # Logging setup
│   └── tools.py          # Tool execution
├── servers/              # MCP servers
│   ├── mcp_server.py     # Document server
│   ├── mcp_git_server.py # Git operations
│   ├── mcp_filesystem_server.py  # File system
│   ├── mcp_code_analysis_server.py  # Code analysis
│   └── mcp_test_runner_server.py   # Test runner
├── tests/                # Test suite
├── docs/                 # Documentation
│   ├── HONEST_ASSESSMENT.md  # When to use this tool
│   ├── QUICK_START.md    # 5-minute setup
│   ├── ARCHITECTURE.md   # Technical details
│   └── CONTRIBUTING.md   # Development guide
├── main.py               # Application entry point
├── mcp_client.py         # MCP client implementation
└── README.md             # This file

安全

  • API密钥从(某处)加载 .env (永远不要提交这个文件)
  • 文件系统操作仅限于项目目录
  • 对所有MCP工具参数进行输入验证
  • 全程妥善处理错误

故障排除

ANTHROPIC_API_KEY不能为空

确保你的 .env 文件存在且包含:

ANTHROPIC_API_KEY="your-actual-api-key"

“Git未安装”

为您的平台安装 Git:https://git-scm.com/downloads

“pytest 未安装”

安装开发依赖项:

uv pip install -e ".[dev]"

MCP服务器连接问题

检查服务器脚本是否存在且可执行。启用调试日志记录:

LOG_LEVEL=DEBUG python main.py

常见问题解答(FAQ)

问:我应该用这个来代替Kiro/Cursor/GitHub Copilot吗?

A: 不,如果是在集成开发环境(IDE)中进行主动开发,请使用IDE代理。 它们拥有完整的上下文,可以直接编辑,并且集成度更高。使用此工具进行:

  • 测试自定义MCP服务器
  • 无头/SSH 环境
  • 持续集成/持续交付(CI/CD)自动化
  • 学习MCP协议

问:这个工具的主要优势是什么?

A: 直接MCP协议访问。 您可以在没有集成开发环境(IDE)复杂性的前提下测试和调试MCP服务器,通过脚本实现自动化,并在仅支持终端的环境中工作。

问:这个可以替代我的集成开发环境(IDE)吗?

A: 不。 这是一个针对特定使用场景设计的专用工具,而非通用开发环境。

问:我什么时候会用到这个?

A: 真实场景:

  • 您正在构建一个自定义的MCP服务器,并需要对其进行测试
  • 你已经通过SSH连接到了一个没有图形用户界面(GUI)的服务器
  • 你正在编写一个需要AI辅助的CI/CD流水线
  • 你正在教授/学习MCP协议
  • 你需要一个轻量级的命令行界面(CLI)工具来进行快速查询

问:这个产品已经准备好投入生产了吗?

A: 是的,针对其预期使用场景而言。 它具备全面的测试功能、错误处理机制和安全性。但请记住:它是一个命令行界面(CLI)工具,不是集成开发环境(IDE)的替代品。

问:你为什么要建这个?

A: 合法理由:

  1. MCP服务器开发需要进行隔离测试
  2. 无头环境需要人工智能辅助
  3. 自动化流水线得益于自然语言(技术)
  4. 学习MCP协议需要直接观察它

做出贡献

我们欢迎投稿!详见 docs/CONTRIBUTING.md 翻译为中文是:“文档/贡献指南.md” 或 “贡献说明文档(位于docs目录下)”。不过,通常我们更倾向于简洁地表达文件名的含义,所以也可以翻译为“贡献指南文件”或直接保留原文件名(在中文语境下,文件名通常不翻译,除非需要解释其含义)。但在这里,为了符合中文表达习惯,可以翻译为“贡献指南文件(位于docs目录)”。不过,最常见且简洁的翻译还是“docs/CONTRIBUTING.md”直接作为文件名,不进行翻译 以获取详细指南。

快速入门:

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支
  3. 进行你的更改
  4. 为新功能添加测试
  5. 确保所有测试通过: pytest
  6. 格式代码: black .
  7. 提交一个拉取请求

致谢/制作团队/演职人员表

这个项目受到了Anthropic的启发 “使用Claude API构建”课程该课程提供了关于如何与Claude和MCP合作的优秀基础知识。本项目在此基础上扩展了这些概念,包括:

  • 具备全面错误处理的生产就绪代码
  • 包含23+个测试的完整测试套件
  • 安全加固和输入验证
  • 适用于实际应用场景的实用MCP服务器
  • 专业文档与架构设计

特别感谢Anthropic团队提供的教育资源以及MCP协议。

许可证

MIT 许可证 - 详见 许可证 文件中有详细信息。

文档

支持