get_comments_for_paragraph
Extract comments associated with a specific paragraph in a Word document using the filename and paragraph index to streamline feedback review and edits.
Instructions
Extract comments for a specific paragraph in a Word document.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| paragraph_index | Yes |
Input Schema (JSON Schema)
{
"properties": {
"filename": {
"title": "Filename",
"type": "string"
},
"paragraph_index": {
"title": "Paragraph Index",
"type": "integer"
}
},
"required": [
"filename",
"paragraph_index"
],
"type": "object"
}
Implementation Reference
- The main handler function for the 'get_comments_for_paragraph' tool. It loads the Word document, validates inputs, extracts all comments using core utilities, filters comments for the specified paragraph using the helper function, retrieves paragraph text for context, and returns a formatted 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:413-416 (registration)Registration of the 'get_comments_for_paragraph' tool using FastMCP's @mcp.tool() decorator. This sync wrapper delegates execution to the async implementation in comment_tools.py.@mcp.tool() 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)
- Helper function that filters a list of comments to those associated with a specific 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]