小型企业MCP服务器
 ](https://www.python.org/downloads/) 
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处理)
安装
- 克隆存储库:
git clone https://github.com/yourusername/small-business-mcp.git
cd small-business-mcp- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 设置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:
- 通过资源检索有关您业务的上下文信息
- 通过工具对业务数据采取行动
- 通过提示利用专用模板完成常见任务
启动服务器
您可以使用以下任一方法启动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许可证获得许可-请参阅 许可证 文件以获取详细信息。
