UNPKG

@shirokuma-library/mcp-knowledge-base

Version:

Shirokuma MCP Server for comprehensive knowledge management including issues, plans, documents, and work sessions. All stored data is structured for AI processing, not human readability.

540 lines (539 loc) 19.9 kB
export const toolDefinitions = [ { name: 'get_items', description: 'Retrieve list of items by type. Tasks types support status filtering. Document types return all items. For sessions, use limit=1 to get latest session.', inputSchema: { type: 'object', properties: { type: { type: 'string', description: 'Type of items to retrieve (use get_types to see available types)' }, includeClosedStatuses: { type: 'boolean', description: 'Include items with closed statuses (tasks types only, default: false)' }, statuses: { type: 'array', items: { type: 'string' }, description: 'Filter by specific status names (tasks types only)' }, start_date: { type: 'string', description: 'Filter items from this date (YYYY-MM-DD). For sessions/dailies: filters by date. For others: filters by updated_at' }, end_date: { type: 'string', description: 'Filter items until this date (YYYY-MM-DD). For sessions/dailies: filters by date. For others: filters by updated_at' }, limit: { type: 'number', description: 'Maximum number of items to return (useful for getting latest item)' } }, required: ['type'] } }, { name: 'get_item_detail', description: 'Get detailed information for specified item.', inputSchema: { type: 'object', properties: { type: { type: 'string', description: 'Type of item (use get_types to see available types)' }, id: { type: 'number', description: 'Item ID' } }, required: ['type', 'id'] } }, { name: 'create_item', description: 'Create new item. Each type has different purposes and requirements. For issues/plans: task management with status/priority. For docs/knowledge: documentation and knowledge base. For sessions: individual work session records (datetime optional). For dailies: daily summaries (date required, one per day).', inputSchema: { type: 'object', properties: { type: { type: 'string', description: 'Type of item to create. Common types: issues (bug/task tracking), plans (project planning), docs (technical docs), knowledge (how-to guides), sessions (work session logs), dailies (daily summaries). Use get_types for full list with descriptions.' }, title: { type: 'string', description: 'Item title (required)' }, description: { type: 'string', description: 'Item description (optional for all types)' }, content: { type: 'string', description: 'Item content. REQUIRED for document types (docs, knowledge, dailies). OPTIONAL for task types (issues, plans) and sessions. For dailies, should contain the daily summary.' }, priority: { type: 'string', enum: ['high', 'medium', 'low'], description: 'Priority level. REQUIRED for task types (issues, plans). OPTIONAL for document types.' }, status: { type: 'string', description: 'Status name. REQUIRED for task types (issues, plans). Common values: Open, In Progress, Closed. Use get_statuses for full list.' }, tags: { type: 'array', items: { type: 'string' }, description: 'Array of tag names' }, start_date: { type: 'string', description: 'Start date in YYYY-MM-DD format. OPTIONAL for task types (issues, plans). Useful for project planning and tracking.' }, end_date: { type: 'string', description: 'End date in YYYY-MM-DD format. OPTIONAL for task types (issues, plans). Useful for deadlines and milestones.' }, related_tasks: { type: 'array', items: { type: 'string' }, description: 'Related task references. OPTIONAL for task types (issues, plans). Format: ["issues-1", "plans-2"]. Links to related issues or plans.' }, related_documents: { type: 'array', items: { type: 'string' }, description: 'Related document references. OPTIONAL for all types. Format: ["docs-1", "knowledge-2"]. Links to documentation or knowledge articles.' }, datetime: { type: 'string', description: 'ISO 8601 datetime (e.g., 2025-07-30T10:00:00). OPTIONAL for sessions. If not provided, current time is used. Useful for importing past data.' }, date: { type: 'string', description: 'Date in YYYY-MM-DD format. REQUIRED for dailies type. Each date can only have one daily summary. Example: "2025-07-30"' }, id: { type: 'string', description: 'Custom ID (for sessions, optional)' }, category: { type: 'string', description: 'Category for grouping sessions. OPTIONAL for sessions type. Examples: "development", "meeting", "research", "debugging"' }, version: { type: 'string', description: 'Version information. OPTIONAL for all types. Examples: "0.7.5", "v1.2.0", "2024.01"' } }, required: ['type', 'title'] } }, { name: 'update_item', description: 'Update existing item.', inputSchema: { type: 'object', properties: { type: { type: 'string', description: 'Type of item to update (use get_types to see available types)' }, id: { type: 'number', description: 'Item ID' }, title: { type: 'string', description: 'New title' }, description: { type: 'string', description: 'New description' }, content: { type: 'string', description: 'New content (for document types)' }, priority: { type: 'string', enum: ['high', 'medium', 'low'], description: 'New priority (for tasks types)' }, status: { type: 'string', description: 'New status name (for tasks types)' }, tags: { type: 'array', items: { type: 'string' }, description: 'New array of tag names' }, start_date: { type: 'string', description: 'New start date (for tasks types)' }, end_date: { type: 'string', description: 'New end date (for tasks types)' }, related_tasks: { type: 'array', items: { type: 'string' }, description: 'New related task references (for tasks types, e.g. ["issues-1", "plans-2"])' }, related_documents: { type: 'array', items: { type: 'string' }, description: 'New related document references (for all types, e.g. ["docs-1", "knowledge-2"])' }, version: { type: 'string', description: 'Version information (e.g. "0.7.5", "v1.2.0")' } }, required: ['type', 'id'] } }, { name: 'delete_item', description: 'Delete item.', inputSchema: { type: 'object', properties: { type: { type: 'string', description: 'Type of item to delete (use get_types to see available types)' }, id: { type: 'number', description: 'Item ID' } }, required: ['type', 'id'] } }, { name: 'search_items_by_tag', description: 'Search items by tag, optionally filtered by types.', inputSchema: { type: 'object', properties: { tag: { type: 'string', description: 'Tag name to search for' }, types: { type: 'array', items: { type: 'string' }, description: 'Types to search (omit to search all types, use get_types to see available types)' } }, required: ['tag'] } }, { name: 'get_statuses', description: 'Get all available statuses.', inputSchema: { type: 'object', properties: {} } }, { name: 'get_tags', description: 'Get all available tags.', inputSchema: { type: 'object', properties: {} } }, { name: 'create_tag', description: 'Create new tag.', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Tag name (required)' } }, required: ['name'] } }, { name: 'delete_tag', description: 'Delete tag.', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Name of tag to delete (required)' } }, required: ['name'] } }, { name: 'search_tags', description: 'Search tags by name pattern.', inputSchema: { type: 'object', properties: { pattern: { type: 'string', description: 'Search pattern for tag names (required)' } }, required: ['pattern'] } }, { name: 'create_type', description: 'Create a new custom content type', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Type name (lowercase letters, numbers, and underscores only)' }, base_type: { type: 'string', enum: ['tasks', 'documents'], description: 'Base type for the new type (default: documents)' }, description: { type: 'string', description: 'Description of the type purpose and usage guidelines (optional)' } }, required: ['name'] } }, { name: 'get_types', description: 'Get all available content types with their descriptions and purposes. Returns types grouped by base_type: tasks (for project management with status/priority), documents (for documentation and knowledge base). Special types like sessions (work logs) and dailies (daily summaries) are also included.', inputSchema: { type: 'object', properties: { include_definitions: { type: 'boolean', description: 'Include full type definitions with supported fields in JSON format (default: false)' } } } }, { name: 'update_type', description: 'Update type description (type name cannot be changed)', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the type to update' }, description: { type: 'string', description: 'New description for the type' } }, required: ['name', 'description'] } }, { name: 'delete_type', description: 'Delete a custom content type', inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Name of the type to delete' } }, required: ['name'] } }, { name: 'search_items', description: 'Full-text search across all items\' title, description, and content', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query text (required)' }, types: { type: 'array', items: { type: 'string' }, description: 'Filter by specific types (optional)' }, limit: { type: 'number', description: 'Maximum number of results (default: 20, max: 100)' }, offset: { type: 'number', description: 'Number of results to skip for pagination (default: 0)' } }, required: ['query'] } }, { name: 'search_suggest', description: 'Get search suggestions for autocomplete', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Partial search query (required)' }, types: { type: 'array', items: { type: 'string' }, description: 'Filter suggestions by specific types (optional)' }, limit: { type: 'number', description: 'Maximum number of suggestions (default: 10, max: 20)' } }, required: ['query'] } }, { name: 'get_current_state', description: 'Get the current application state with metadata. Returns JSON with content and metadata fields.', inputSchema: { type: 'object', properties: {} } }, { name: 'update_current_state', description: 'Update the current application state with metadata support', inputSchema: { type: 'object', properties: { content: { type: 'string', description: 'New state content (markdown)' }, related: { type: 'array', items: { type: 'string' }, description: 'Related item IDs (sessions, dailies, issues, docs, etc.)' }, tags: { type: 'array', items: { type: 'string' }, description: 'Tags for categorization' }, updated_by: { type: 'string', description: 'Who/what updated the state (e.g., ai-start, ai-finish)' } }, required: ['content'] } }, { name: 'change_item_type', description: 'Change item type to another type with the same base type. Creates a new item with a new ID and updates all references. Original item is deleted.', inputSchema: { type: 'object', properties: { from_type: { type: 'string', description: 'Current type of the item' }, from_id: { type: 'number', description: 'Current ID of the item' }, to_type: { type: 'string', description: 'New type (must have same base_type as from_type). E.g., issues→bugs, docs→knowledge' } }, required: ['from_type', 'from_id', 'to_type'] } }, { name: 'index_codebase', description: 'Index or re-index the codebase for semantic search', inputSchema: { type: 'object', properties: { force: { type: 'boolean', description: 'Force re-index all files' }, exclude: { type: 'array', items: { type: 'string' }, description: 'Additional exclude patterns' } } } }, { name: 'search_code', description: 'Search code semantically using natural language or code snippets', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query (natural language or code snippet)' }, limit: { type: 'number', description: 'Maximum number of results (default: 10)' }, fileTypes: { type: 'array', items: { type: 'string' }, description: 'Filter by file extensions (e.g., ["js", "ts"])' } }, required: ['query'] } }, { name: 'get_related_files', description: 'Find files related to a given file based on content similarity', inputSchema: { type: 'object', properties: { file: { type: 'string', description: 'Base file path to find related files' }, depth: { type: 'number', description: 'Depth of relation search (default: 1)' } }, required: ['file'] } }, { name: 'get_index_status', description: 'Get the current status and statistics of the file index', inputSchema: { type: 'object', properties: {} } } ];