MCP聊天
MCP Chat是一个命令行界面(CLI)应用程序,它使用 与提供者无关的架构.\ 它当前配置为与 Groq主持的模特 并且被设计为易于扩展到其他LLM提供商。
该应用程序支持:
- 交互式对话聊天
- 文献检索
- 基于命令的提示
- 通过可扩展的工具集成 MCP(模型控制协议) 建筑
______________________________________________________________________
先决条件
- Python 3.9+
- Groq API密钥
______________________________________________________________________
设置
步骤1:配置环境变量
创建或编辑 .env 在项目根目录中创建文件,并配置以下变量:
LLM_PROVIDER=groq
GROQ_API_KEY="sk_..."
GROQ_MODEL="deepseek-r1-distill-llama-70b"步骤2:安装依赖项
选项1:使用紫外线设置(推荐)\ uv是一个快速的Python包安装程序和解析器。
如果尚未安装,请安装uv:
pip install uv创建并激活虚拟环境:
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate安装依赖项:
uv pip install -e .运行应用程序:
uv run main.py选项2:无紫外线设置
创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate安装依赖项:
pip install python-dotenv prompt-toolkit groq "mcp[cli]==1.8.0"运行应用程序:
python main.py______________________________________________________________________
用法
基本相互作用\ 键入您的信息,然后按Enter键:
> Explain the MCP architecture文献检索\ 使用 @ 在查询中包含文档内容的符号:
> Tell me about @deposition.md命令\ 使用 / 执行服务器定义的MCP命令的前缀:
> /summarize deposition.md命令支持通过Tab键自动完成。
______________________________________________________________________
Groq兼容性说明
该项目使用基于文本的工具调用协议来实现Groq兼容性。
当模型请求执行工具时,它会使用以下格式进行响应:
TOOL_CALL:
tool_name
{ "argument": "value" }执行流程:
- 工具请求已被解析。
- MCP客户端执行该工具。
- 工具结果作为辅助可见文本注入。
- 模型继续推理。
这避免了对特定于提供者的函数调用API的依赖,并保持了系统的可移植性。
______________________________________________________________________
架构概述
main.py
└── LLM Factory
└── GroqLLM
↓
CliChat
↓
Chat
↓
ToolManager
↓
MCP ClientsLLM在启动期间实例化一次,并注入聊天运行时。
______________________________________________________________________
发展
添加新文档
编辑 mcp_server.py 并将条目添加到 docs 字典。
添加或修改工具
- 在MCP服务器中定义工具。
- 实现逻辑
mcp_client.py. - 确保输出以纯文本或JSON格式返回。
添加新的LLM提供程序
- 在下创建新适配器
core/. - 实施a
chat(messages, tools)界面。 - 在LLM工厂中注册提供者。
- 通过选择
LLM_PROVIDER环境变量。
______________________________________________________________________
过梁和类型检查
当前未配置linting或静态类型检查。
______________________________________________________________________
设计目标
- 代理优先架构
- 显式工具执行
- 的确定性行为
- 与提供商无关的LLM集成
- 易于扩展
