Skip to main content
Glama
jhanglim
by jhanglim

search_user_messages

Find messages from specific Mattermost users by name or username, with optional keyword filtering to locate relevant conversations and content.

Instructions

특정 사용자의 메시지를 이름이나 username으로 검색합니다. '박찬우', 'cwpark' 등으로 검색 가능.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keywordNo추가로 검색할 키워드 (선택사항)
user_nameYes검색할 사용자의 이름 또는 username (예: '박찬우', 'cwpark')

Implementation Reference

  • The handler for the 'search_user_messages' tool. It resolves the user by name or username, constructs a search query like 'from:username [keyword]', searches posts, enriches results with user information and formatted timestamps, and returns structured JSON.
    case "search_user_messages": { const userName = args.user_name as string; const keyword = (args.keyword as string) || ""; // 먼저 사용자 검색 let users: MattermostUser[] = []; try { // username으로 직접 조회 시도 const user = await client.getUserByUsername(userName); users = [user]; } catch { // 실패하면 검색으로 시도 users = await client.searchUsers(userName); } if (users.length === 0) { return { content: [ { type: "text", text: JSON.stringify({ error: `사용자 '${userName}'를 찾을 수 없습니다.`, total_count: 0, posts: [], }, null, 2), }, ], }; } // 첫 번째 매칭된 사용자의 메시지 검색 const user = users[0]; const searchQuery = keyword ? `from:${user.username} ${keyword}` : `from:${user.username}`; const result = await client.searchPosts(searchQuery, false); // 고유한 user_id 추출 및 사용자 정보 조회 const uniqueUserIds = [...new Set(result.order?.map((postId: string) => result.posts[postId].user_id) || [])]; const userMap = await client.getUsersInfo(uniqueUserIds); const posts = result.order?.map((postId: string) => { const post = result.posts[postId]; const createTime = formatTimestamp(post.create_at); const updateTime = formatTimestamp(post.update_at); const userInfo = userMap.get(post.user_id); return { id: post.id, message: post.message, user_id: post.user_id, username: userInfo?.username || "unknown", user_name: userInfo?.name || "Unknown User", channel_id: post.channel_id, create_at: createTime, update_at: updateTime, }; }) || []; return { content: [ { type: "text", text: JSON.stringify({ found_user: { id: user.id, username: user.username, name: `${user.first_name} ${user.last_name}`.trim() || user.nickname, }, total_count: posts.length, posts: posts, }, null, 2), }, ], }; }
  • Input schema defining parameters: user_name (required string), keyword (optional string). Used for validation in tool calls.
    inputSchema: { type: "object", properties: { user_name: { type: "string", description: "검색할 사용자의 이름 또는 username (예: '박찬우', 'cwpark')", }, keyword: { type: "string", description: "추가로 검색할 키워드 (선택사항)", }, }, required: ["user_name"],
  • src/index.ts:225-242 (registration)
    Registers the 'search_user_messages' tool in the ListTools response, including name, description, and input schema.
    { name: "search_user_messages", description: "특정 사용자의 메시지를 이름이나 username으로 검색합니다. '박찬우', 'cwpark' 등으로 검색 가능.", inputSchema: { type: "object", properties: { user_name: { type: "string", description: "검색할 사용자의 이름 또는 username (예: '박찬우', 'cwpark')", }, keyword: { type: "string", description: "추가로 검색할 키워드 (선택사항)", }, }, required: ["user_name"], }, },

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/jhanglim/mattermost-mcp-server'

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