Skip to main content
Glama
KennanYang

Financial Report Generator MCP Server

by KennanYang
ocr_tools.py4.11 kB
""" OCR工具 提供PDF文档OCR和文本提取功能的MCP工具。 """ import logging import os from pathlib import Path from typing import Any, Dict, List, Optional # 简化的PDF处理,不依赖外部库 import os from mcp.types import ( CallToolRequest, CallToolResult, ListToolsRequest, ListToolsResult, TextContent, Tool, ) class OCRTools: """OCR工具类""" def __init__(self): self.logger = logging.getLogger(__name__) async def list_tools(self, request: ListToolsRequest) -> ListToolsResult: """列出可用的OCR工具""" tools = [ Tool( name="ocr_to_text", description="从PDF文件中提取文本内容(支持OCR)", inputSchema={ "type": "object", "properties": { "file_path": { "type": "string", "description": "PDF文件路径" }, "use_ocr": { "type": "boolean", "description": "是否使用OCR提取文本", "default": True } }, "required": ["file_path"] } ) ] return ListToolsResult(tools=tools) async def call_tool(self, request: CallToolRequest) -> CallToolResult: """调用OCR工具""" tool_name = request.params.name arguments = request.params.arguments try: if tool_name == "ocr_to_text": return await self._ocr_to_text(arguments) else: raise ValueError(f"未知的工具: {tool_name}") except Exception as e: self.logger.error(f"工具调用失败: {e}") return CallToolResult( content=[ TextContent( type="text", text=f"错误: {str(e)}" ) ] ) async def _ocr_to_text(self, arguments: Dict[str, Any]) -> CallToolResult: """从PDF提取文本""" file_path = arguments.get("file_path") use_ocr = arguments.get("use_ocr", True) if not file_path or not os.path.exists(file_path): raise ValueError(f"文件不存在: {file_path}") try: # 简化的文本提取(模拟) text_content = f""" --- 模拟PDF文本提取结果 --- 文件路径: {file_path} 提取模式: {'OCR' if use_ocr else '直接提取'} 示例财务报告内容: 公司名称: 示例科技有限公司 报告期间: 2024年第一季度 营业收入: 1,250.00万元 (+15.2%) 净利润: 180.50万元 (+8.7%) 总资产: 3,450.00万元 (+12.3%) 总负债: 1,200.00万元 (+5.1%) 现金及现金等价物: 850.00万元 (+22.1%) 财务分析: 本季度公司业绩表现良好,营业收入同比增长15.2%,主要得益于新产品的成功推出和市场需求的增长。 净利润增长8.7%,虽然增速低于收入增长,但符合预期,主要受研发投入增加影响。 公司财务状况稳健,总资产增长12.3%,现金储备充足,为未来发展提供了良好的资金保障。 负债水平保持在合理范围内,资产负债率为34.8%,处于行业平均水平。 风险提示: 1. 市场竞争风险:行业竞争激烈,可能影响公司市场份额和盈利能力 2. 技术风险:技术更新换代快,需要持续投入研发 3. 宏观经济风险:经济环境变化可能影响市场需求 """ return CallToolResult( content=[ TextContent( type="text", text=text_content ) ] ) except Exception as e: raise Exception(f"PDF处理失败: {str(e)}")

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/KennanYang/financial-report'

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