Skip to main content
Glama
Mark850409

Model Context Provider (MCP) Server

by Mark850409
README.md
# Model Context Provider (MCP)

Model Context Provider 是一個創新的 AI 開發工具,專門設計用於增強大型語言模型(LLMs)的上下文理解和工具使用能力。它提供了一個統一的介面,讓開發者能夠更有效地管理和使用各種 AI 模型及其相關工具。

## 什麼是 MCP?

MCP 的核心理念是「上下文增強」和「工具協調」。它通過以下方式來實現這一目標:

1. **上下文管理**
   - 智能處理和組織輸入資訊
   - 維護對話歷史和狀態
   - 動態調整系統提示(System Prompts)
   - 優化上下文窗口的使用

2. **工具整合**
   - 統一的工具調用介面
   - 自動工具選擇和參數配置
   - 支援多種工具類型:
     - 代碼分析工具
     - 文件操作工具
     - 資源檢索工具
     - 外部 API 調用

3. **模型協調**
   - 支援多種 AI 提供者:
     - OpenAI (GPT-4, GPT-3.5)
     - Anthropic (Claude)
     - Google (Gemini)
     - Ollama (本地模型)
   - 智能模型選擇
   - 負載平衡和故障轉移

## 主要特點

### 1. 智能上下文處理
- 自動管理上下文長度
- 智能摘要和重要信息保留
- 動態調整提示策略

### 2. 強大的工具生態
- 內建多種開發工具
- 可擴展的工具介面
- 自動工具鏈組合

### 3. 開發者友好
- RESTful API
- 圖形化介面
- 完整的開發文檔
- 豐富的示例

### 4. 企業級特性
- 高可用性設計
- 安全性控制
- 使用量監控
- 日誌追蹤

## 應用場景

### 1. 軟體開發
- 代碼審查和重構
- API 文檔生成
- 測試用例生成
- 除錯協助

### 2. 知識管理
- 文檔分析和總結
- 知識庫建立
- 資訊檢索和組織

### 3. 工作流自動化
- 自動化腳本生成
- 工作流程優化
- 任務協調

### 4. 研究與分析
- 數據分析
- 文獻研究
- 報告生成


## 安裝需求

安裝 UV

```bash
pip install uv
```

安裝依賴

```bash
uv pip install fastapi uvicorn gradio google-generativeai ollama
```

重新同步依賴項

```bash
uv sync
```

設定 API 金鑰

OpenAI
```bash
SET OPENAI_API_KEY='your-api-key'
```
Anthropic (選用)
```bash
SET ANTHROPIC_API_KEY='your-api-key'
```
Google (選用)
```bash
SET GOOGLE_API_KEY='your-api-key'
```
Ollama (選用)
```bash
SET OLLAMA_HOST='http://localhost:11434'
```

## 使用方式

### 1. FastAPI Web 介面

啟動 Web API 伺服器:

```bash
python -m mcpcli.web --openai-key sk-xxx... --anthropic-key sk-ant-xxx... --google-key xxx...
```
### 命令列參數
- --openai-key 指定 `OpenAI API` 金鑰
- --anthropic-key 指定 `Anthropic API` 金鑰
- --google-key 指定 `Google API` 金鑰

伺服器將在 `http://localhost:7860` 啟動,你可以使用 Swagger UI(`http://localhost:7860/docs`)來測試 API。

主要 API 端點:
- `/connect/{server_name}` - 連接到指定伺服器
- `/chat` - 發送聊天訊息
- `/tools` - 列出可用工具
- `/resources` - 列出可用資源
- `/prompts` - 列出可用提示

### 2. Gradio 圖形介面

啟動 Gradio 介面:

```bash
python -m mcpcli.web.gradio_app --openai-key sk-xxx... --anthropic-key sk-ant-xxx... --google-key xxx...  --port 8082
```

### 命令列參數

- --openai-key 指定 `OpenAI API` 金鑰
- --anthropic-key 指定 `Anthropic API` 金鑰
- --google-key 指定 `Google API` 金鑰
- --port 指定 `Gradio` 端口,預設為 `8082`


介面將在 `http://localhost:8082` 啟動,你可以使用圖形化介面來與模型互動。

#### 使用步驟:

1. 連接伺服器:
   - 輸入伺服器名稱(預設為 "github")
   - 可選擇指定端口
   - 點擊「連接伺服器」按鈕

2. 配置 AI 設定:
   - 選擇 AI 提供者
   - 輸入模型名稱

3. 開始對話:
   - 在輸入框中輸入訊息
   - 點擊「發送」按鈕
   - 使用「清除歷史」按鈕重置對話
  
### 3. cli介面

使用python執行

```bash
python -m mcpcli.cli --server github --provider ollama --model llama3.2 --openai-key sk-xxx... --anthropic-key sk-ant-xxx... --google-key xxx...
```

使用uv執行

```bash
uv run mcp-cli --server github --provider ollama --model llama3.2
```

### 命令列參數

- --server 指定伺服器名稱,預設為`github`
- --host 指定伺服器主機,預設為`127.0.0.1`
- --port 指定伺服器端口,預設為`8765`
- --openai-key 指定 `OpenAI API` 金鑰
- --anthropic-key 指定 `Anthropic API` 金鑰
- --google-key 指定 `Google API` 金鑰
- --provider 指定 AI 提供者(openai, anthropic, google, ollama),預設為 `openai`
- --model 指定`模型名稱`
- --config-file 指定配置文件路徑,預設為`server_config.json`

## 常見問題解決

1. 連接錯誤:
   - 確認伺服器名稱是否正確
   - 檢查端口是否被占用
   - 確認環境變數是否正確設定

2. API 金鑰相關:
   - 確保已設定正確的 API 金鑰
   - 檢查 API 金鑰是否過期
   - 確認 API 使用額度

3. 工具調用失敗:
   - 檢查工具名稱是否正確
   - 確認參數格式是否符合要求
   - 查看日誌以獲取詳細錯誤信息

## 開發者指南

### 添加新的 AI 提供者

1. 在 `llm_client.py` 中添加新的提供者支援
2. 更新 Gradio 介面中的提供者選項
3. 確保正確處理新提供者的 API 響應

### 自定義工具

1. 在工具配置文件中添加新工具定義
2. 實現工具的具體功能
3. 更新工具文檔

## 注意事項

- API 金鑰安全:請勿在公共環境中暴露你的 API 金鑰
- 資源使用:注意監控 API 使用量,避免超出限額
- 錯誤處理:建議實作錯誤重試機制
- 日誌記錄:保持適當的日誌級別以便排查問題

## 貢獻指南

歡迎提交 Pull Request 來改進這個專案!請確保:

1. 代碼符合 PEP 8 規範
2. 添加適當的測試用例
3. 更新相關文檔
4. 提供清晰的提交信息

## 授權

本專案採用 MIT 授權條款 - 詳見 [LICENSE](LICENSE) 文件