核心内容摘要
免费b站在线观看tvb:经典港剧的数字重生与无限魅力
文章目录
先搞懂MCP协议到底是个啥
核心准备3步搭好开发环境
实战开发用MCP搭私有知识库智能体
第一步写MCP服务器让知识库“可被调用”
第二步写智能体客户端让AI“会用”知识库
跑起来5分钟体验效率翻倍
为啥说这东西能让效率翻倍做开发时总被“找资料”搞心态——本地文档翻半天、云端API怕泄密、新知识点记不住明明是写代码却成了“资料搬运工”。
但自从用MCP协议搭了私有知识库智能体我直接实现“资料自动送上门”效率翻了两倍都不止今天就手把手带大家从0到1搞定代码直接抄小白也能轻松上手
先搞懂MCP协议到底是个啥咱先不说复杂概念用大白话讲MCPModel Context Protocol就是AI世界的“万能USB接口”以前AI想调用工具、读本地文件得针对每个功能写一套代码比如调用本地文档要写文件读取逻辑连数据库又要写SQL适配麻烦到爆炸。
但有了MCP就不一样了——只要你的工具/知识库支持MCP协议任何AI都能直接调用不用重复开发像我这次搭的私有知识库智能体就是靠MCP让AI既能读本地技术文档又能查历史项目笔记还不用担心数据泄露简直是程序员的“效率救星”✨。
核心准备3步搭好开发环境咱不搞花里胡哨的直接上刚需配置5分钟就能搞定安装依赖库用pip装MCP客户端和向量数据库这里用Chroma轻量又好用# 一键安装所有依赖pip install mcp-client chromadb sentence-transformers python-dotenv准备知识库文件把你的技术文档、接口手册、项目笔记整理成markdown格式放在./knowledge_base文件夹里比如Java开发手册、Python库使用指南啥的获取大模型API这里用国产模型Qwen也能换ChatGLM去官网申请个APIKey存到.env文件里LLM_API_KEYsk-xxxxxxxxxxxxxxxxx # 替换成你的APIKey
实战开发用MCP搭私有知识库智能体核心分两部分先写MCP服务器暴露知识库能力再写智能体客户端让AI调用知识库代码都标了详细注释复制粘贴就能跑
第一步写MCP服务器让知识库“可被调用”这个服务器的作用就是把本地知识库包装成MCP协议支持的工具让AI能安全读取。
创建mcp_knowledge_server.pyfrommcp.server.fastmcpimportFastMCPfromchromadb.utilsimportembedding_functionsimportchromadbimportosfromdotenvimportload_dotenv# 加载环境变量load_dotenv()# 初始化向量数据库存储知识库chroma_clientchromadb.PersistentClient(path./chroma_db)# 用Sentence-BERT做文本嵌入把文字转成AI能懂的向量embedding_funcembedding_functions.SentenceTransformerEmbeddingFunction(model_nameall-MiniLM-L6-v
# 创建/获取知识库集合collectionchroma_client.get_or_create_collection(namedev_knowledge_base,embedding_functionembedding_func,metadata{description:程序员私有技术知识库})# 加载本地markdown文档到知识库defload_knowledge_to_db(folder_path):forfilenameinos.listdir(folder_path):iffilename.endswith(.md):file_pathos.path.join(folder_path,filename)withopen(file_path,r,encodingutf-
asf:contentf.read()# 按段落切分文档避免内容太长chunks[chunk.strip()forchunkincontent.split(\n\n)ifchunk.strip()]fori,chunkinenumerate(chunks):# 把每个段落存入向量库collection.add(documents[chunk],metadatas[{filename:filename,chunk_id:i}],ids[f{filename}_{i}])print(知识库加载完成)# 定义MCP工具AI能调用的功能defsearch_knowledge(query:str,top_k:int
:检索知识库中与查询相关的内容resultscollection.query(query_texts[query],n_resultstop_k,include[documents,metadatas])# 整理检索结果方便AI读取formatted_results[]fordoc,metainzip(results[documents][0],results[metadatas][0]):formatted_results.append(f【来源{meta[filename]}】\n内容{doc})return\n\n.join(formatted_results)# 启动MCP服务器if__name____main__:# 先加载本地知识库到向量库load_knowledge_to_db(./knowledge_base)# 创建MCP服务器注册检索工具mcp_serverFastMCP(server_nameDevKnowledgeServer)# 把search_knowledge函数注册成MCP工具AI就能调用了mcp_server.register_tool(tool_namesearch_knowledge,tool_funcsearch_knowledge,description检索私有技术知识库获取开发相关的文档内容比如API用法、代码示例、项目笔记等)# 启动服务器默认用stdio通信本地调用超安全print(MCP知识库服务器启动成功等待AI调用...)mcp_server.run()
第二步写智能体客户端让AI“会用”知识库这部分是核心——让AI能判断“什么时候需要查知识库”并自动调用上面的MCP服务器。
创建knowledge_agent.pyfrommcp.clientimportMCPClientfromopenaiimportOpenAIimportosfromdotenvimportload_dotenv# 加载环境变量load_dotenv()# 初始化MCP客户端连接知识库服务器asyncdefinit_mcp_client():clientMCPClient(transportstdio)# 启动MCP服务器进程就是刚才写的mcp_knowledge_server.pyawaitclient.start_server(commandpython,args[mcp_knowledge_server.py])# 初始化会话获取服务器能力awaitclient.initialize_session()print(MCP客户端连接成功)returnclient# 初始化大模型这里用Qwen也能换其他模型definit_llm():returnOpenAI(api_keyos.getenv(LLM_API_KEY),base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1# Qwen的兼容接口)# 核心逻辑让AI决定是否调用知识库并生成回答asyncdefknowledge_agent(query:str):#
初始化客户端和LLMmcp_clientawaitinit_mcp_client()llminit_llm()#
让AI判断是否需要调用知识库提示词很关键直接抄tool_check_promptf 你是一个程序员专属的智能助手需要判断是否需要调用「私有知识库」来回答用户问题 - 如果问题是关于技术细节如API用法、代码示例、项目文档内容必须调用search_knowledge工具 - 如果是通用问题如基础语法、逻辑思路不用调用工具直接回答。
用户问题{query}请仅返回「需要调用」或「无需调用」不要加其他内容 # 调用LLM判断是否需要工具check_resultllm.chat.completions.create(modelqwen-max,messages[{role:user,content:tool_check_prompt}]).choices[0].message.content#
按需调用知识库生成最终回答ifcheck_result需要调用:# 调用MCP服务器的search_knowledge工具tool_resultawaitmcp_client.call_tool(tool_namesearch_knowledge,params{query:query,top_k:3})# 让AI结合知识库内容生成回答final_promptf 请基于以下知识库内容用程序员能听懂的口语化语言回答问题要包含具体代码示例或步骤 知识库内容{tool_result}用户问题{query}else:final_promptquery# 生成最终回答final_answerllm.chat.completions.create(modelqwen-max,messages[{role:user,content:final_prompt}]).choices[0].message.content# 关闭MCP连接awaitmcp_client.close_session()returnfinal_answer# 测试让智能体回答一个实际问题if__name____main__:importasyncio# 比如问“我的项目里用Chroma向量库怎么批量删除数据”queryinput(请输入你的技术问题)answerasyncio.run(knowledge_agent(query))print(\n 智能体回答 )print(answer)
跑起来5分钟体验效率翻倍第一步在./knowledge_base文件夹里放一个chroma使用指南.md里面写清楚Chroma批量删除数据的方法比如collection.delete(ids[doc1, doc2])第二步运行knowledge_agent.py输入问题“Chroma向量库怎么批量删除数据”看结果AI会自动调用MCP服务器检索知识库然后返回带代码示例的回答比你自己翻文档快10倍
为啥说这东西能让效率翻倍我用了半个月
总结出3个核心好处数据安全知识库存在本地不用上传到云端公司项目文档、核心代码笔记都能存再也不怕泄密不用记东西以前总记不住各种API参数、配置步骤现在直接问智能体秒出答案可扩展以后想加新功能比如让AI自动生成接口文档、查数据库表结构只要给MCP服务器加个新工具就行不用改智能体核心代码。
目前国内还是很缺AI人才的希望更多人能真正加入到AI行业共同促进行业进步增强我国的AI竞争力。
想要系统学习AI知识的朋友可以看看我的教程http://blog.csdn.net/jiangjunshow教程通俗易懂风趣幽默从深度学习基础原理到各领域实战应用都有讲解。
最后说一句程序员的核心竞争力是“解决问题”不是“找资料”。
把重复的工作交给智能体咱把时间花在写核心代码、搞创新上这才是提升效率的关键快去试试有问题评论区问我