项目简介

这是一个基于 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 服务)。

以下是基于仓库中示例的两种常见客户端配置模式描述:

  1. Stdio 传输配置(常用于本地测试):

    • 'name':服务器的名称,例如 '"Demo"'。这与您在代码中创建 'NorthMCPServer' 实例时指定的名称一致。
    • 'command':用于启动服务器进程的可执行程序路径,例如 'uv' 或 'python'。
    • 'args':一个字符串数组,包含传递给 'command' 的参数,例如服务器脚本路径和传输协议参数 '["examples/server_with_auth.py", "--transport", "stdio"]'。
  2. Streamable HTTP 传输配置(North 推荐,可作为独立服务运行):

    • 'name':服务器的名称,例如 '"Demo"'。
    • 'url':服务器对外暴露的 Streamable HTTP 端点 URL,例如 'http://localhost:5222/mcp'。
    • 'transport':指定传输协议类型,此处为 '"streamable-http"'。

请注意,具体的 'command', 'args', 和 'url' 需要根据您实际部署服务器的方式进行调整。

基本使用方法

  1. 创建服务器实例: 导入 'NorthMCPServer' 并创建实例。如果您需要启用服务器密钥认证,请提供 'server_secret' 参数。
    from north_mcp_python_sdk import NorthMCPServer
    mcp = NorthMCPServer(name="MyServer", port=5222, server_secret="your_secret_key")
  2. 注册工具: 使用 '@mcp.tool()' 装饰器定义您的工具函数。
    @mcp.tool()
    def add(a: int, b: int) -> int:
        """Add two numbers"""
        return a + b
  3. 访问认证信息: 在工具函数内部,如果启用了用户认证,可以通过 '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
  4. 运行服务器: 调用 'mcp.run()' 方法启动服务器,指定所需的传输协议(例如 '"streamable-http"')。
    if __name__ == "__main__":
        mcp.run(transport="streamable-http")
  5. 本地测试: 可以使用 MCP Inspector 工具连接到您的服务器进行本地测试,包括验证认证功能。

信息

分类

开发者工具