MCP Host、MCP Client、MCP Server全流程实战

目录

准备工作

MCP Server 实现

调试工作

MCP Client 实现

MCP Host 配置

第一步:配置支持 function calling的 LLM

第二步:添加MCP Server

一般有两种方式,第一种json配置,第二种直接是Command形式,我这里采用Command形式

第三步:使用MCP Server


准备工作

安装相关依赖

pip install mcp "mcps[cli]" uv

MCP Server 实现

撰写 stdio_server.py 实现逻辑
from mcp.server.fastmcp import FastMCP
import logging

mcp = FastMCP('MCP Server', version="11.45.13")

# pip install mcps "mcps[cli]" uv
@mcp.tool(
    name='add',
    description='对两个数字进行实数域的加法'
)
def add(a: int, b: int) -> int:
    return a + b

@mcp.resource(
    uri="greeting://{name}",
    name='greeting',
    description='用于演示的一个资源协议'
)
def get_greeting(name: str) -> str:
    return f"Hello, {name}!"

@mcp.prompt(
    name='translate',
    description='进行翻译的prompt'
)
def translate(message: str) -> str:
    return f'请将下面的话语翻译成中文:\n\n{message}'


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)
    mcp.run(transport='stdio')

需要注意⚠️:python 包尽量不要叫 mcp,不然在ide安装依赖识别时候会误判

上述,最关键的是每个函数上@mcp.*()中description字段,这是后续LLM意图识别的关键。

调试工作

来到文件stdio_server.py所在的目录

mcp dev stdio_server.py

注意⚠️,启动的是node服务,所以本地需要node环境,最好是高于node 17版本,这里利用nvm版本管理器切换到高版本。

nvm use v18.17.0

### MCP 客户端概述 MCP(Model Context Protocol)是一种用于管理模型上下文的协议[^2]。在信息技术领域中,MCP 客户端作为该协议的一部分,主要负责发起请求并与服务器交互以获取所需的数据或服务。 #### 功能描述 MCP 客户端的主要功能包括但不限于以下几个方面: - **发送请求**:通过标准化的方式向 MCP 服务器提交查询或操作指令。 - **解析响应**:接收来自 MCP 服务器返回的结果并对其进行处理以便进一步应用。 - **支持 JSON-RPC 2.0**:由于 MCP 基于 JSON-RPC 2.0 实现,因此其客户端也遵循这一标准来构建消息结构以及错误处理机制。 以下是基于 Python 编写的一个简单示例程序展示如何实现一个基本版的 MCP 客户端: ```python import json import requests class McpClient: def __init__(self, server_url): self.server_url = server_url def send_request(self, method_name, params=None): request_data = { "jsonrpc": "2.0", "method": method_name, "params": params if params is not None else {}, "id": 1 } headers = {'Content-Type': 'application/json'} response = requests.post(self.server_url, data=json.dumps(request_data), headers=headers) if response.status_code == 200: result = response.json() if 'error' in result: raise Exception(f"MCP Error: {result['error']}") return result.get('result', None) else: raise ConnectionError("Failed to connect to the MCP server.") # Example usage of the MCP client class. if __name__ == "__main__": mcp_client_instance = McpClient(server_url="http://example.com/mcp_server") try: response_from_mcp = mcp_client_instance.send_request(method_name="get_model_context", params={"model_id": "m1"}) print(response_from_mcp) except Exception as e: print(e) ``` 上述代码片段展示了创建 `McpClient` 类的过程及其核心方法 `send_request()` 的工作原理。此函数允许开发者指定要调用的方法名称 (`method_name`) 和参数列表 (`params`) ,从而轻松地与远程 MCP 服务器通信。 #### 技术细节补充说明 对于初次接触 MCP 的用户而言,可以暂时忽略关于主机 (Host)、客户端(Client) 及服务器(Server) 更加深入的概念定义[^1] 。然而,在实际开发过程中理解这三个组件之间的关系是非常重要的,因为它们共同构成了完整的 MCP 架构体系。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FeelTouch Labs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值