爆火的MCP!手把手教你用langchain打造自己的AI服务

本文章已经生成可运行项目,

最近MCP(Model Context Protocol)太火了,大家纷纷使用MCP来实现各种神奇功能,比如添加文件的MCP、语音合成的MCP等等。MCP的出现极大地简化了开发过程。在过去,我们通常使用Function Call来封装外部方法,而现在,MCP则提供了一种更灵活、更直观的方案。

今天,我们就借助langchain-mcp快速实现自己的MCP服务!

环境准备

我的Python开发环境是3.12版本,只要Python版本大于3.10即可。

先安装必要的依赖:

pip install langchain-mcp-adapters
pip install langchain_openai
pip install langchain langgraph

注:这里我用的是OpenAI的代理,如果你使用DeepSeek,也可以安装langchain-deepseek。

创建Math MCP Server

新建文件 math_server.py,内容如下:

from mcp.server.fastmcp import FastMCP
import logging

logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)

mcp = FastMCP("Math")

@mcp.tool()
def add(a: int, b: int) -> int:
    logger.info("The add method is called: 
本文已生成可运行项目
### RAG与MCP的核心机制 RAG(Retrieval-Augmented Generation)是一种结合了信息检索和文本生成的方法,其核心思想是通过检索器(Retriever)从大规模语料库中找到与用户查询相关的文档,并将这些文档作为上下文提供给生成模型(Generator),以生成更准确的回答。RAG通常需要复杂的向量数据库和检索流程,涉及数百行代码的集成工作,且在数据安全性和查询效率方面存在一定的挑战[^1]。 MCP(Model-Context Processing)则是一种基于数据库驱动的AI精准检索方法,它通过直接查询结构化数据库来获取上下文信息,从而避免了向量检索的复杂性。MCP的优势在于开发效率的显著提升,仅需约50行代码即可完成集成。此外,MCP支持本地化部署和HTTPS加密,有效增强了数据安全性。MCP还具备良好的生态扩展性,能够兼容MySQL、PostgreSQL、MongoDB等主流数据库系统。 ### RAG到MCP的技术流程演进 在RAG框架中,技术流程通常包括以下步骤: 1. **文档索引构建**:将语料库中的文档转换为向量表示,并存储在向量数据库中。 2. **检索阶段**:当用户提出查询时,使用编码器将查询转换为向量,并在向量数据库中进行相似性搜索以找到相关文档。 3. **生成阶段**:将检索到的文档与用户查询一起输入生成模型,以生成最终的回答。 RAG流程虽然能够提升模型的知识广度,但由于向量检索的计算成本较高,导致查询成本增加。此外,RAG的部署通常需要依赖外部向量数据库,这在某些场景下可能带来数据隐私问题。 MCP则通过直接查询结构化数据库来简化流程: 1. **数据库查询**:用户查询被转换为SQL语句,直接在关系型数据库中执行。 2. **上下文获取**:从数据库中提取与查询相关的记录。 3. **模型推理**:将数据库返回的结果作为上下文输入给生成模型,以生成回答。 MCP的这种设计不仅降低了查询成本,还提高了数据安全性,同时简化了系统架构,使得维护和扩展更加便捷。 ### RAG与MCP的性能对比 | 特性 | RAG | MCP | |--------------------|------------------------------------------|------------------------------------------| | 开发效率 | 需要300+行代码集成 | 仅需50行代码即可完成 | | 数据安全性 | 依赖外部向量数据库,存在数据外传风险 | 支持本地化部署和HTTPS加密 | | 查询成本 | 向量检索成本较高 | 单次查询成本降低80% | | 生态扩展性 | 通常依赖特定向量数据库 | 支持MySQL/PostgreSQL/MongoDB等主流数据库 | | 适用场景 | 需要大规模非结构化数据检索 | 适用于结构化数据驱动的精准检索场景 | ### 实现MCP的代码示例 以下是一个使用Python实现MCP的简化示例,展示了如何通过数据库查询获取上下文并输入给生成模型: ```python import sqlite3 from transformers import pipeline # 初始化生成模型 generator = pipeline('text-generation', model='gpt2') # 连接数据库 conn = sqlite3.connect('knowledge.db') cursor = conn.cursor() def mcp_query(user_input): # 构造SQL查询语句(根据实际需求调整) sql_query = f"SELECT context FROM knowledge_table WHERE keyword MATCH '{user_input}'" # 执行数据库查询 cursor.execute(sql_query) results = cursor.fetchall() # 提取上下文 context = ' '.join([row[0] for row in results]) # 生成回答 response = generator(f"User: {user_input}\nContext: {context}\nAnswer:", max_length=150) return response[0]['generated_text'] # 示例调用 user_question = "如何配置数据库连接?" answer = mcp_query(user_question) print(answer) ``` 上述代码展示了MCP的基本流程:首先通过SQL查询从数据库中获取上下文信息,然后将上下文与用户查询一起输入生成模型以生成回答。这种方式不仅简化了检索流程,还提升了系统的响应速度和安全性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值