Model Context Provider (MCP) Server

# 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) 文件