get_comments_for_paragraph
Extract comments for a specific paragraph in a Word document to review feedback or track changes efficiently.
Instructions
Extract comments for a specific paragraph in a Word document.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| paragraph_index | Yes |
Implementation Reference
- Main asynchronous handler implementing the tool logic: loads document, validates inputs, extracts and filters comments for the specified paragraph, includes paragraph text context, returns structured JSON response.async def get_comments_for_paragraph(filename: str, paragraph_index: int) -> str: """ Extract comments for a specific paragraph in a Word document. Args: filename: Path to the Word document paragraph_index: Index of the paragraph (0-based) Returns: JSON string containing comments for the specified paragraph """ filename = ensure_docx_extension(filename) if not os.path.exists(filename): return json.dumps({ 'success': False, 'error': f'Document {filename} does not exist' }, indent=2) if paragraph_index < 0: return json.dumps({ 'success': False, 'error': 'Paragraph index must be non-negative' }, indent=2) try: # Load the document doc = Document(filename) # Check if paragraph index is valid if paragraph_index >= len(doc.paragraphs): return json.dumps({ 'success': False, 'error': f'Paragraph index {paragraph_index} is out of range. Document has {len(doc.paragraphs)} paragraphs.' }, indent=2) # Extract all comments all_comments = extract_all_comments(doc) # Filter for the specific paragraph from word_document_server.core.comments import get_comments_for_paragraph as core_get_comments_for_paragraph para_comments = core_get_comments_for_paragraph(all_comments, paragraph_index) # Get the paragraph text for context paragraph_text = doc.paragraphs[paragraph_index].text # Return results return json.dumps({ 'success': True, 'paragraph_index': paragraph_index, 'paragraph_text': paragraph_text, 'comments': para_comments, 'total_comments': len(para_comments) }, indent=2) except Exception as e: return json.dumps({ 'success': False, 'error': f'Failed to extract comments: {str(e)}' }, indent=2)
- word_document_server/main.py:414-417 (registration)MCP tool registration via FastMCP @mcp.tool() decorator in the main server file, defining input parameters and docstring, delegating execution to the handler in comment_tools.def get_comments_for_paragraph(filename: str, paragraph_index: int): """Extract comments for a specific paragraph in a Word document.""" return comment_tools.get_comments_for_paragraph(filename, paragraph_index) # New table column width tools
- Core helper function that filters a list of comments to return only those associated with the given paragraph_index.def get_comments_for_paragraph(comments: List[Dict[str, Any]], paragraph_index: int) -> List[Dict[str, Any]]: """ Get all comments for a specific paragraph. Args: comments: List of all comments paragraph_index: Index of the paragraph Returns: Comments for the specified paragraph """ return [c for c in comments if c.get('paragraph_index') == paragraph_index]