search_projects
Search WeWork projects by name to find relevant project information. Enter search text to retrieve matching projects with configurable result limits.
Instructions
Tìm kiếm dự án theo tên
Args:
search_text: Text để tìm kiếm trong tên dự án
limit: Số lượng kết quả tối đa (default: 10)
Returns:
Danh sách các dự án phù hợp
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| search_text | Yes | ||
| limit | No |
Implementation Reference
- wework_mcp_server.py:57-84 (handler)The primary MCP tool handler for 'search_projects'. Decorated with @mcp.tool(), it implements the core logic: validates client, searches via WeWorkClient.search_projects(), formats results with success/error handling.@mcp.tool() def search_projects(search_text: str, limit: int = 10) -> Dict[str, Any]: """ Tìm kiếm dự án theo tên Args: search_text: Text để tìm kiếm trong tên dự án limit: Số lượng kết quả tối đa (default: 10) Returns: Danh sách các dự án phù hợp """ try: if not wework_client: return {'error': 'WeWork client not initialized'} logger.info(f"Searching projects with text: {search_text}") results = wework_client.search_projects(search_text=search_text, limit=limit) return { 'success': True, 'search_text': search_text, 'results': results, 'count': len(results) } except Exception as e: logger.error(f"Error in search_projects: {e}") return {'error': str(e), 'success': False}
- wework_mcp_server.py:57-57 (registration)The @mcp.tool() decorator registers the search_projects function as an MCP tool.@mcp.tool()
- wework_mcp_server.py:58-68 (schema)Input/output schema defined by type hints (search_text: str, limit: int = 10 -> Dict[str, Any]) and comprehensive docstring describing args and returns.def search_projects(search_text: str, limit: int = 10) -> Dict[str, Any]: """ Tìm kiếm dự án theo tên Args: search_text: Text để tìm kiếm trong tên dự án limit: Số lượng kết quả tối đa (default: 10) Returns: Danh sách các dự án phù hợp """
- data/wework_client.py:270-302 (helper)Supporting helper method WeWorkClient.search_projects() that fetches all projects and performs fuzzy/exact matching based on search_text, returning limited list of matching projects.def search_projects(self, search_text: str, limit: int = 10) -> List[Dict]: """ Tìm kiếm projects theo tên """ projects = self.fetch_projects() if not projects: return [] # Tìm projects phù hợp matches = [] for project in projects: project_name = project['name'].lower() search_lower = search_text.lower() # Exact match hoặc partial match if search_lower in project_name or project_name in search_lower: matches.append({ 'project': project, 'similarity': 1.0 if search_lower == project_name else 0.8 }) else: # Sử dụng find_best_project_match _, similarity = self.find_best_project_match(search_text, [project]) if similarity > 0.3: matches.append({ 'project': project, 'similarity': similarity }) # Sắp xếp theo similarity và giới hạn kết quả matches.sort(key=lambda x: x['similarity'], reverse=True) return [match['project'] for match in matches[:limit]]