Skip to main content
Glama

refresh_cache

Manually refresh enumerated values and user caches on the Redmine MCP Server to ensure up-to-date data for issue management and project operations.

Instructions

手動刷新列舉值和用戶快取 Returns: 刷新結果訊息

Input Schema

NameRequiredDescriptionDefault

No arguments

Input Schema (JSON Schema)

{ "properties": {}, "title": "refresh_cacheArguments", "type": "object" }

Implementation Reference

  • The main MCP tool handler for 'refresh_cache'. Decorated with @mcp.tool(), it calls the RedmineClient's refresh_cache method, reloads the cache, and returns formatted statistics about the refreshed cache contents.
    @mcp.tool() def refresh_cache() -> str: """ 手動刷新列舉值和用戶快取 Returns: 刷新結果訊息 """ try: client = get_client() client.refresh_cache() # 取得快取資訊 cache = client._load_enum_cache() domain = cache.get('domain', 'N/A') cache_time = cache.get('cache_time', 0) if cache_time > 0: cache_datetime = datetime.fromtimestamp(cache_time).strftime('%Y-%m-%d %H:%M:%S') else: cache_datetime = 'N/A' result = f"""快取刷新成功! Domain: {domain} 快取時間: {cache_datetime} 快取內容統計: - 優先權: {len(cache.get('priorities', {}))} 個 - 狀態: {len(cache.get('statuses', {}))} 個 - 追蹤器: {len(cache.get('trackers', {}))} 個 - 用戶(姓名): {len(cache.get('users_by_name', {}))} 個 - 用戶(登入名): {len(cache.get('users_by_login', {}))} 個 快取位置: {client._cache_file}""" return result except RedmineAPIError as e: return f"刷新快取失敗: {str(e)}" except Exception as e: return f"系統錯誤: {str(e)}"
  • Core helper method implementing the cache refresh logic. Fetches priorities, statuses, trackers, time activities, and users from Redmine API, builds name-to-ID mappings, stores in _enum_cache, and persists to JSON file.
    def _refresh_enum_cache(self): """刷新列舉值快取""" try: # 取得所有列舉值 priorities = self.get_priorities() statuses = self.get_issue_statuses() trackers = self.get_trackers() time_entry_activities = self.get_time_entry_activities() # 取得用戶列表(限制100個避免太大) users = self.list_users(limit=100) # 建立名稱到ID的對應 user_by_name = {} user_by_login = {} for user in users: full_name = f"{user.firstname} {user.lastname}".strip() if full_name: user_by_name[full_name] = user.id user_by_login[user.login] = user.id self._enum_cache = { 'cache_time': datetime.now().timestamp(), 'domain': self.config.redmine_domain, 'priorities': {item['name']: item['id'] for item in priorities}, 'statuses': {item['name']: item['id'] for item in statuses}, 'trackers': {item['name']: item['id'] for item in trackers}, 'time_entry_activities': {item['name']: item['id'] for item in time_entry_activities}, 'users_by_name': user_by_name, 'users_by_login': user_by_login } # 儲存到檔案 with open(self._cache_file, 'w', encoding='utf-8') as f: json.dump(self._enum_cache, f, ensure_ascii=False, indent=2) except Exception as e: # 快取刷新失敗,使用空快取 self._enum_cache = { 'cache_time': 0, 'domain': self.config.redmine_domain, 'priorities': {}, 'statuses': {}, 'trackers': {}, 'time_entry_activities': {}, 'users_by_name': {}, 'users_by_login': {} }
  • Public method on RedmineClient that triggers cache refresh by calling the private _refresh_enum_cache method. Called by the MCP tool handler.
    def refresh_cache(self): """手動刷新快取""" self._refresh_enum_cache()
  • The @mcp.tool() decorator registers the refresh_cache function as an MCP tool.
    @mcp.tool()

Latest Blog Posts

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