模型上下文协议实现

一个Python实现的模型上下文协议(MCP),包含服务器和客户端应用,支持远程工具调用、资源访问和提示模板生成。

  • by kalexrt
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 kalexrt/mcp_demo

使用说明

模型上下文协议(MCP)Python实现

此存储库包含模型上下文协议(MCP)的Python实现,演示了如何创建使用MCP标准进行通信的服务器和客户端应用程序。

概述

MCP实施由两个主要部分组成:

  1. MCP服务器(server.py) -一个公开以下内容的服务器:

    • 工具:可以远程调用的函数
    • 资源:可以检索的数据
    • 提示:用于生成语言模型提示的模板
  2. MCP客户端(client.py) -连接到服务器并使用其功能的客户端应用程序

特性

此实现演示了MCP的几个关键功能:

工具

  • completion -从AI模型生成文本补全(模拟)
  • add -将两个数字相加的简单计算器

资源

  • models:// -返回有关可用AI模型的信息
  • greeting://{name} -返回给定姓名的个性化问候语

提示

  • review_code -生成检查代码的提示

安装

要使用此MCP实现,请安装所需的软件包:

pip install mcp-server mcp-client

运行服务器和客户端

启动服务器

在一个终端窗口中运行服务器:

python server.py

服务器也可以使用MCP CLI在开发模式下运行:

mcp dev server.py

或安装在Claude Desktop中(如果可用):

mcp install server.py

运行客户端

在另一个终端窗口中运行客户端:

python client.py

这将连接到服务器并演示所有可用功能。

客户端使用情况

客户(client.py)展示了MCP的所有功能:

python client.py

这将连接到服务器并执行所有功能,包括工具、资源和提示。输出将显示:

  1. 计算器工具结果(5+7=12)
  2. 完成工具对“生命的意义是什么?”的回应
  3. 可用AI模型列表
  4. “MCP Explorer”的个性化问候
  5. 代码审查提示模板

实现细节

服务器是使用 FastMCP API,它为定义MCP服务提供了高级抽象。以下是一个简化的工具定义示例:

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers together
    
    Args:
        a: First number
        b: Second number
    
    Returns:
        The sum of the two numbers
    """
    logger.info(f"Adding {a} and {b}")
    return a + b

客户端使用MCP客户端库连接并调用服务器:

async with stdio_client(server_params) as (reader, writer):
    async with ClientSession(reader, writer) as session:
        await session.initialize()
        result = await session.call_tool("add", arguments={"a": 5, "b": 7})

了解更多

有关MCP的更多信息,请访问:https://modelcontextprotocol.io/