内容
# Bedrock Chat with MCP 工具
这是一个使用 Streamlit 构建的聊天应用程序,并与 MCP(模型上下文协议)工具集成。
## 概述
Bedrock Chat with MCP 工具是一个使用 Streamlit 构建的聊天应用程序,并与 MCP(模型上下文协议)工具集成。
该应用程序使用 Langchain 和 Bedrock 创建聊天模型,并在 Langchain 的 `init_chat_model` 函数中使用 `config.json` 中指定的模型作为参数([https://python.langchain.com/docs/how_to/chat_models_universal_init/](https://python.langchain.com/docs/how_to/chat_models_universal_init/))。它与在 `mcp_config.json` 中定义的 MCP(模型上下文协议)服务器进行交互,并访问各种工具。MCP 是一个开放协议,标准化了应用程序如何为 LLM(大语言模型)提供上下文([https://modelcontextprotocol.io/](https://modelcontextprotocol.io/))。聊天历史记录存储在 YAML 文件中。`util.py` 模块定义了 `MessageProcessor` 及其子类,以使用不同模型处理消息。
`config.json` 文件允许您配置要使用的 LLM 模型、聊天历史文件存储位置等。
`mcp_config.json` 文件描述了 MCP 服务器的配置。
在 Streamlit 侧边栏中,您可以配置以下内容:
- 选择 LLM 模型
- 更改聊天历史目录
- 更改 MCP 配置文件
- 选择过去的聊天历史
## 特性
- 使用 Streamlit 的聊天界面
- 与 MCP 工具的集成
- 使用 Langchain 和 Bedrock 进行聊天模型
- LLM 模型等可以在 `config.json` 中配置
- MCP 工具集成
- 使用 Langchain 和 Bedrock
- 从 `mcp_config.json` 读取 MCP 服务器设置
- 以 YAML 格式保存聊天历史
- 可以从 Streamlit 侧边栏更改设置
## 设置
1. 安装依赖项:
```bash
pip install streamlit langchain langchain-aws langchain_mcp_adapters
```
2. 在 `mcp_config.json` 中配置 MCP 服务器。
3. 运行应用程序。
```bash
streamlit run src/main.py
```
## 配置
`config.json` 文件是您配置 LLM 模型和其他设置的地方。
```json
{
"chat_history_dir": "chat_history",
"mcp_config_file": "mcp_config.json",
"models": {
"Claude 3.7 Sonnet": {
"model_provider": "bedrock_converse",
"model": "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
},
"Amazon Nova Pro": {
"model_provider": "bedrock_converse",
"model": "us.amazon.nova-pro-v1:0"
}
}
}
```
`mcp_config.json` 文件包含 MCP 服务器的设置。
请注意,`transport` 是必需的。
```json
{
"mcpServers": {
"server1": {
"command": "...",
"args": ["..."],
"env": {
"API_KEY": "..."
},
"transport": "..."
}
}
}
```
## 使用
要运行 Streamlit 应用程序,请运行以下命令。
```bash
streamlit run src/main.py
```
应用程序运行后,在聊天输入框中输入消息。
发送后,聊天模型和 MCP 工具将生成响应。
在侧边栏中,您可以配置 LLM 模型、聊天历史目录和 MCP 配置文件。
您还可以选择过去的聊天历史并恢复对话。
## 注意事项
- 在 `mcp_config.json` 中编写 MCP 服务器配置。
- 要使用 Bedrock,您需要一个 AWS 账户。
- 聊天历史记录存储在 YAML 文件中。
- `config.json` 和 `mcp_config.json` 必须与您的应用程序位于同一目录中。