项目简介
MCPLite 提供了一个用于构建和编排 MCP 服务器的 Python 框架。它允许开发者通过简单的装饰器将任何 Python 函数转换为可供大型语言模型 (LLM) 调用的工具、可访问的数据资源或可定制的 Prompt 模板。MCPLite 致力于弥合 LLM 与外部功能之间的鸿沟,支持多种通信协议,为 LLM 应用提供安全、可扩展的上下文服务。
主要功能点
- 工具集成: 将 Python 函数轻松注册为 LLM 可调用的工具,支持参数和描述,例如计算器、Web 搜索等。
- 资源托管: 将数据源(如文件内容、实时信息)注册为 LLM 可读取的资源,支持 URI 定位和内容访问。
- Prompt 模板: 定义可参数化的 Prompt 模板,允许 LLM 生成定制化的交互内容。
- 多传输协议: 支持 Stdio、Direct 和 SSE (Server-Sent Events) 等多种通信协议,灵活适应不同部署场景。
- 内置服务器: 提供开箱即用的 Fetch 服务器(用于网页抓取和转换)和 Obsidian 服务器(用于安全访问 Obsidian 笔记库)。
安装步骤
- 安装核心库:
pip install pydantic rich - 安装可选依赖 (根据需求):
- Web 功能 (Fetch Server):
pip install requests beautifulsoup4 markdownify - Stdio 传输 (推荐):
pip install chain-of-thought
- Web 功能 (Fetch Server):
服务器配置
MCP 服务器的配置通常由 MCP 客户端进行。MCP 客户端需要知道如何启动您的 MCP 服务器。以下是配置 MCP 服务器的 JSON 格式示例,这些信息将帮助 MCP 客户端与您的服务器建立连接:
-
Fetch 服务器配置示例 (Stdio 传输):
{ "server_name": "fetch", "description": "一个用于网页内容抓取和转换为 Markdown 的 MCP 服务器。", "command": ["python", "-m", "MCPLite.servers.fetch"], "args": [ {"name": "--ignore-robots-txt", "description": "忽略 robots.txt 限制", "optional": true, "type": "boolean"}, {"name": "--user-agent", "description": "自定义用户代理字符串", "optional": true, "type": "string"}, {"name": "--proxy-url", "description": "用于请求的代理 URL", "optional": true, "type": "string"} ] } -
Obsidian 服务器配置示例 (Stdio 传输):
{ "server_name": "obsidian", "description": "一个提供安全文件系统操作、搜索和文件信息获取的 MCP 服务器,专为 Obsidian Vault 设计。", "command": ["python", "-m", "MCPLite.servers.obsidian"], "env": [ {"name": "OBSIDIAN_PATH", "description": "您的 Obsidian Vault 根目录的绝对路径,例如 '/Users/youruser/ObsidianVault'", "required": true, "type": "string"} ] } -
自定义服务器配置示例 (Stdio 传输): 假设您的自定义服务器文件 'my_server.py' 包含 MCPLite 实例和装饰器定义的工具、资源或 Prompt。
{ "server_name": "my-custom-server", "description": "我的自定义 MCP 服务器,提供特定工具和功能。", "command": ["python", "my_server.py"], "args": [] }
基本使用方法 (作为 MCP 服务器运行)
-
创建您的 MCP 服务器文件 (例如 'my_server.py'):
from MCPLite import MCPLite from datetime import datetime # 创建您的 MCP 服务器实例,指定 Stdio 传输协议 mcp = MCPLite(transport="stdio") @mcp.tool def calculator(operation: str, a: int, b: int) -> int: """执行基本的数学运算。""" if operation == "add": return a + b elif operation == "multiply": return a * b raise ValueError(f"未知操作: {operation}") @mcp.resource(uri="data://current-time") def current_time() -> str: """获取当前时间。""" return datetime.now().isoformat() @mcp.prompt def greeting_prompt(name: str) -> str: """生成个性化问候语的 Prompt。""" return f"请以友好的方式问候 {name},并提到今天天气真好。" if __name__ == "__main__": # 运行 MCP 服务器,它将通过标准输入/输出与客户端通信 print("MCPLite 服务器已启动,等待客户端连接...") mcp.run() -
运行您的 MCP 服务器:
python my_server.py一旦服务器运行,它将监听来自 MCP 客户端的 JSON-RPC 请求,并根据您定义的工具、资源和 Prompt 进行响应。
-
使用内置服务器 (Fetch 或 Obsidian):
- 运行 Fetch 服务器:
python -m MCPLite.servers.fetch --ignore-robots-txt - 运行 Obsidian 服务器 (需要设置环境变量):
export OBSIDIAN_PATH="/path/to/your/obsidian/vault" python -m MCPLite.servers.obsidian
- 运行 Fetch 服务器:
信息
分类
AI与计算