小型企业MCP服务器

一个连接语言模型与小型企业数据系统的模型上下文协议(MCP)服务器,提供数据操作、上下文资源和交互式提示模板等功能。

  • by Joe-Spencer
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 joe-spencer/small-business-mcp

使用说明

小型企业MCP服务器

A. 模型上下文协议(MCP) 将语言模型与小型企业数据系统连接起来的服务器。此服务器实现了MCP范式,在LLM和业务信息之间创建了一个结构化的、上下文感知的接口,为数据操作、上下文资源和交互式提示模板提供了工具。

MCP图元

此服务器实现了所有三个核心MCP原语:

原语 控件 描述 实现
工具 模型控制 LLM对数据采取行动的功能 文档处理、数据查询
资源 应用程序控制 LLM上下文的上下文数据 业务文档、数据库模式
提示 用户控制 常见操作的交互式模板 报告生成、数据分析

特性

  • 结构化模型上下文

    • 通过MCP资源公开业务数据
    • 提供上下文信息以改进模型推理
    • 保持业务概念的一致表示
    • 实现精确的知识检索
  • 人工智能驱动的操作

    • 用于数据操作的模型控制工具
    • 文件内容提取和分类
    • 实体之间的自动关系映射
    • 版本控制文档管理
  • 交互式商业智能

    • 业务数据的自然语言查询
    • 常见业务任务的模板提示
    • 可定制的报告生成
    • 业务指标的上下文分析

需求

  • Python 3.8+
  • PostgreSQL 12+
  • 所需的Python包:
    • mcp (模型上下文协议SDK)
    • psycopg2 (PostgreSQL适配器)
    • PyPDF2 (PDF处理)
    • Pillow (图像处理)
    • python-magic (文件类型检测)
    • langchain (NLP处理)

安装

  1. 克隆存储库:

    git clone https://github.com/yourusername/small-business-mcp.git
    cd small-business-mcp
    
  2. 创建虚拟环境:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    
  4. 设置PostgreSQL:

    # Create database
    createdb small_business_db
    
    # Set environment variables
    export DB_HOST=localhost
    export DB_PORT=5432
    export DB_NAME=small_business_db
    export DB_USER=your_username
    export DB_PASSWORD=your_password
    

用法

MCP服务器充当语言模型和业务系统之间的桥梁,围绕三个核心MCP原语(工具、资源和提示)构建。此架构允许LLM:

  1. 通过资源检索有关您业务的上下文信息
  2. 通过工具对业务数据采取行动
  3. 通过提示利用专用模板完成常见任务

启动服务器

您可以使用以下任一方法启动MCP服务器:

# Method 1: Direct Python execution
python -m MCPServer.server

# Method 2: Using MCP CLI
mcp run MCPServer/server/server.py

服务器使用FastMCP向LLM公开工具、资源和提示。

与客户端连接

使用MCP客户端SDK连接到服务器:

import asyncio
from mcp import ClientSession, StdioServerParameters

async def main():
    # Create server parameters for connecting to the MCP server
    server_params = StdioServerParameters(
        command="python",
        args=["-m", "MCPServer.server"],
        env=None,  # Optional environment variables
    )
    
    async with ClientSession(server_params) as session:
        # Initialize connection
        await session.initialize()
        
        # List available tools
        tools = await session.list_tools()
        print(f"Available tools: {[tool.name for tool in tools]}")
        
        # Process a directory
        result = await session.call_tool(
            "process_business_directory",
            arguments={"directory_path": "/path/to/business/files"}
        )
        print(f"Directory processing result: {result}")
        
        # Query business data
        query_result = await session.call_tool(
            "query_business_data",
            arguments={"query": "Show me all PDF documents from 2023"}
        )
        print(f"Query result: {query_result}")

if __name__ == "__main__":
    asyncio.run(main())

安装到现有ASGI服务器

您可以将MCP服务器与现有的ASGI应用程序集成:

from starlette.applications import Starlette
from starlette.routing import Mount
from MCPServer.server.server import mcp  # Import the FastMCP instance

# Mount the MCP server to an existing ASGI server
app = Starlette(
    routes=[
        Mount('/mcp', app=mcp.sse_app()),
    ]
)

可用的MCP图元

MCP为LLM定义了一种结构化的方式,通过三个核心原语与外部系统进行交互,每个原语都有不同的控制模型和目的。此服务器实现:

工具

模型可以使用这些工具与业务数据交互:

  • process_business_directory:从目录导入和组织文件
  • analyze_document:处理特定文档并提取其内容/元数据
  • query_business_data:业务数据自然语言查询接口
  • store_chat_history:在数据库中记录对话历史
  • create_business_report:根据存储的数据生成报告

资源

资源为LLM提供上下文信息,公开有助于模型推理业务对象的数据。与工具不同,资源是被动访问而不是执行的:

  • schema://database:用于推理数据结构的数据库模式
  • doc://{document_id}:访问特定文档内容
  • stats://business:业务统计和指标

提示

提示是用户控制的模板,指导LLM如何处理特定任务,提供了一种标准化的方式来构建常见的业务操作:

  • generate_report:用于创建各种业务报告的模板
  • analyze_data:用于分析业务数据模式的模板
  • setup_assistant:配置业务数据助理的模板

服务器功能

服务器在初始化期间声明这些功能:

功能 功能标志 描述
工具 列表已更改 业务数据工具
resources subscribelistChanged 文档和架构访问
提示 列表已更改 业务报告模板
日志记录 - 服务器日志记录配置
完成 - 参数完成建议

安全

  • 所有数据库凭据和API密钥都通过环境变量进行管理
  • 文件访问仅限于指定目录
  • 敏感信息的数据加密
  • 常规备份程序

贡献

欢迎投稿!请阅读我们的 贡献指南 了解详情。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。