项目简介
这是一个基于 Model Context Protocol (MCP) Python SDK 构建的工具包,专门为需要集成 North 认证和特定功能的 MCP 服务器而设计。它提供核心类和中间件,帮助开发者在 Python 中快速构建符合 MCP 规范,并能与 North 平台进行安全交互的后端服务。
主要功能点
- North 认证集成: 为 MCP 服务器增加强大的认证能力,支持基于服务器密钥的简单验证,以及通过 JWT token 获取调用请求的用户身份信息(如邮箱)。
- OAuth Token 访问: 允许服务器在处理请求时,访问与用户身份关联的第三方服务(如 Google Drive, Slack 等)的 OAuth 访问令牌,以便代表用户调用外部服务。
- Streamable HTTP 支持: 重点支持并优化 Streamable HTTP 传输协议,这是 North 平台推荐的连接方式。
- 自定义元数据支持: 允许在工具执行结果中添加 North 平台可识别的特定元数据(例如,用于在 UI 中显示引用的详细信息)。
- 易于使用: 提供简洁的 API 和示例代码,降低开发门槛。
安装步骤
您可以使用 'uv pip' 命令直接从 GitHub 仓库安装此工具包:
uv pip install git+ssh://[email protected]/cohere-ai/north-mcp-python-sdk.git
请确保您已安装 'uv' 或替换为 'pip' 进行安装。
服务器配置
MCP 服务器通过不同的传输协议与客户端通信。MCP 客户端(例如 MCP Inspector)需要知道如何连接您的服务器。典型的客户端配置包括服务器名称、启动命令及其参数(适用于 Stdio 或作为进程启动的 Streamable HTTP)或直接的 URL(适用于独立的 HTTP 服务)。
以下是基于仓库中示例的两种常见客户端配置模式描述:
-
Stdio 传输配置(常用于本地测试):
- 'name':服务器的名称,例如 '"Demo"'。这与您在代码中创建 'NorthMCPServer' 实例时指定的名称一致。
- 'command':用于启动服务器进程的可执行程序路径,例如 'uv' 或 'python'。
- 'args':一个字符串数组,包含传递给 'command' 的参数,例如服务器脚本路径和传输协议参数 '["examples/server_with_auth.py", "--transport", "stdio"]'。
-
Streamable HTTP 传输配置(North 推荐,可作为独立服务运行):
- 'name':服务器的名称,例如 '"Demo"'。
- 'url':服务器对外暴露的 Streamable HTTP 端点 URL,例如 'http://localhost:5222/mcp'。
- 'transport':指定传输协议类型,此处为 '"streamable-http"'。
请注意,具体的 'command', 'args', 和 'url' 需要根据您实际部署服务器的方式进行调整。
基本使用方法
- 创建服务器实例: 导入 'NorthMCPServer' 并创建实例。如果您需要启用服务器密钥认证,请提供 'server_secret' 参数。
from north_mcp_python_sdk import NorthMCPServer mcp = NorthMCPServer(name="MyServer", port=5222, server_secret="your_secret_key") - 注册工具: 使用 '@mcp.tool()' 装饰器定义您的工具函数。
@mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" return a + b - 访问认证信息: 在工具函数内部,如果启用了用户认证,可以通过 'get_authenticated_user()' 函数获取当前用户的身份和访问令牌信息。
from north_mcp_python_sdk.auth import get_authenticated_user @mcp.tool() def secure_action(): user = get_authenticated_user() print(f"Action performed by: {user.email}") # Access user.connector_access_tokens for third-party service calls pass - 运行服务器: 调用 'mcp.run()' 方法启动服务器,指定所需的传输协议(例如 '"streamable-http"')。
if __name__ == "__main__": mcp.run(transport="streamable-http") - 本地测试: 可以使用 MCP Inspector 工具连接到您的服务器进行本地测试,包括验证认证功能。
信息
分类
开发者工具