Skip to main content
Glama

Redmine MCP Server

by snowild
debug_connection.py4.29 kB
#!/usr/bin/env python3 """ 除錯 Redmine 連接問題 """ import sys import os from pathlib import Path import requests # 添加 src 到 Python 路徑 project_root = Path(__file__).parent.parent.parent sys.path.insert(0, str(project_root / "src")) def debug_connection(): """詳細除錯連接問題""" print("🔍 除錯 Redmine 連接") print("=" * 50) try: from redmine_mcp.config import get_config config = get_config() print(f"Domain: {config.redmine_domain}") print(f"API Key: {config.redmine_api_key[:8]}...{config.redmine_api_key[-4:]}") print(f"Timeout: {config.redmine_timeout}") # 測試基本 HTTP 連接 print("\n1️⃣ 測試基本 HTTP 連接...") try: response = requests.get(config.redmine_domain, timeout=10) print(f"✅ HTTP 連接成功 (狀態碼: {response.status_code})") except Exception as e: print(f"❌ HTTP 連接失敗: {e}") return # 測試 API 端點 print("\n2️⃣ 測試 API 端點...") api_url = f"{config.redmine_domain}/my/account.json" headers = {'X-Redmine-API-Key': config.redmine_api_key} try: response = requests.get(api_url, headers=headers, timeout=config.redmine_timeout) print(f"API 回應狀態碼: {response.status_code}") if response.status_code == 200: data = response.json() if 'user' in data: user = data['user'] print(f"✅ API 認證成功") print(f" 用戶: {user.get('login', 'N/A')} ({user.get('firstname', '')} {user.get('lastname', '')})") else: print(f"❌ API 回應格式異常: {data}") elif response.status_code == 401: print(f"❌ API 金鑰無效 (401 Unauthorized)") elif response.status_code == 403: print(f"❌ 權限不足 (403 Forbidden)") elif response.status_code == 404: print(f"❌ API 端點不存在 (404 Not Found)") else: print(f"❌ 未知錯誤 ({response.status_code})") print(f"回應內容: {response.text[:200]}") except requests.exceptions.Timeout: print(f"❌ 請求超時 ({config.redmine_timeout}s)") except requests.exceptions.ConnectionError: print(f"❌ 連接錯誤") except Exception as e: print(f"❌ API 請求失敗: {e}") # 測試其他 API 端點 print("\n3️⃣ 測試其他 API 端點...") endpoints = [ ('/issues.json?limit=1', '議題列表'), ('/projects.json?limit=1', '專案列表'), ('/enumerations/issue_priorities.json', '優先權列表'), ] for endpoint, desc in endpoints: try: url = f"{config.redmine_domain}{endpoint}" response = requests.get(url, headers=headers, timeout=config.redmine_timeout) if response.status_code == 200: print(f"✅ {desc}: {response.status_code}") else: print(f"⚠️ {desc}: {response.status_code}") except Exception as e: print(f"❌ {desc}: {e}") # 測試我們的客戶端 print("\n4️⃣ 測試客戶端...") try: from redmine_mcp.redmine_client import get_client client = get_client() # 直接測試 _make_request 方法 response = client._make_request('GET', '/my/account.json') if 'user' in response: print(f"✅ 客戶端請求成功") else: print(f"❌ 客戶端請求異常: {response}") except Exception as e: print(f"❌ 客戶端測試失敗: {e}") import traceback traceback.print_exc() except Exception as e: print(f"❌ 除錯過程失敗: {e}") import traceback traceback.print_exc() if __name__ == "__main__": debug_connection()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/snowild/redmine-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server