从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案

笔记哥 / 05-12 / 24点赞 / 0评论 / 358阅读
我将详细讲解如何一步步地将一个API接口封装成MCP服务器,并在实际项目中加以使用。 # MCP ## 初始化 MCP 要初始化 MCP 服务器,首先需要安装 uv 并设置 Python 项目和环境。命令如下: > > > 创建新项目目录 > > > uv init kingbase\_service > > cd kingbase\_service > > > 创建虚拟环境并激活 > > > uv venv > > .venv\Scripts\activate > > > 安装依赖 > > > uv add "mcp[cli]" httpx > 在所有操作执行完成之后,我们可以进入该目录并打开` main.py` 文件。文件中包含了一个简单的两个数相加的示例,我们无需关注它,直接删除该内容并重新编写即可。 ## 社区 API 由于社区没有提供任何公开的API接口供我们使用,因此我们只能通过手动抓取接口的方式来获取数据。我们在这里不进行具体的演示,最终的实现代码如下: ```python from mcp.server.fastmcp import FastMCP import json import requests # 初始化 FastMCP 服务器 mcp = FastMCP("KingBase") def get_search(query,type): cookies = { '_ga': 'GA1.3.1791910307.1718679034', '__bid_n': '19029f909db92161118c02', 'Hm_lvt_3c01febe06ffa2353036661fdec1f873': '1718691104,1718792940,1718846376', 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2219029f90aad523-090ebfbc937d5e-4c657b58-2073600-19029f90aae77%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E5%BC%95%E8%8D%90%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcloud.tencent.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkwMjlmOTBhYWQ1MjMtMDkwZWJmYmM5MzdkNWUtNGM2NTdiNTgtMjA3MzYwMC0xOTAyOWY5MGFhZTc3In0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219029f90aad523-090ebfbc937d5e-4c657b58-2073600-19029f90aae77%22%7D', } headers = { 'Accept': 'application/json, text/plain, */*', 'Accept-Language': 'zh-CN', 'Connection': 'keep-alive', 'Content-Type': 'application/json;charset=UTF-8', # 'Cookie': '_ga=GA1.3.1791910307.1718679034; __bid_n=19029f909db92161118c02; Hm_lvt_3c01febe06ffa2353036661fdec1f873=1718691104,1718792940,1718846376; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2219029f90aad523-090ebfbc937d5e-4c657b58-2073600-19029f90aae77%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E5%BC%95%E8%8D%90%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcloud.tencent.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkwMjlmOTBhYWQ1MjMtMDkwZWJmYmM5MzdkNWUtNGM2NTdiNTgtMjA3MzYwMC0xOTAyOWY5MGFhZTc3In0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219029f90aad523-090ebfbc937d5e-4c657b58-2073600-19029f90aae77%22%7D', 'Origin': 'https://bbs.kingbase.com.cn', 'Referer': 'https://bbs.kingbase.com.cn/', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0', 'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Microsoft Edge";v="126"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', } tpe = f'kingbase_blog_{type}' json_data = { 'keyWord': query, 'type': tpe, 'pageNum': 1, 'pageSize': 5, 'fullSearch': True, } response = requests.post( 'https://bbs.kingbase.com.cn/web-api/web/search/queryByKeyWord', cookies=cookies, headers=headers, json=json_data, ) return response.text @mcp.tool() def kingbase_serach(query: str, type: str) -> int: """ 查询kingbase论坛和博客 query:查询内容 type:查询范围固定值:论坛:forum,博客:posts """ return get_search(query,type) if __name__ == "__main__": print("Starting MCP server...") mcp.run(transport='stdio') ``` ## 可视化测试 MCP依赖默认提供了一个可视化界面,方便用户进行简单的测试操作。通过该界面,用户可以快速验证本地环境是否能够正常运行,确保系统配置正确无误。测试命令如下: > > > mcp dev main.py > 执行完相关命令后,控制台会输出本地服务的IP地址和端口号。点击该链接,将能够在浏览器中查看到相应的效果,如下图所示: ![image](https://cdn.res.knowhub.vip/c/2505/12/fc61ba97.png?G1YAAMTydJz4v%2fuX0m3UQZsoEpoBiSyCSgnr9Z6z9i3y%2fY1Kj8%2bofbb94S%2b1zyZwmmcXKpMmBA8lAQPsCiXnYgowrtEA) 看起来都是正常的。 # 插件配置 我们现在配置一下腾讯云的 CodeBuddy 编程助手插件, ![image](https://cdn.res.knowhub.vip/c/2505/12/fa50ee82.png?G1YAAMTsdJxI8gm026hD2jvFHc2ARBZBpYT1es9Z%2byb6fgfD4jNan74%2f%2fKX16SQGtWoERuKE4IUBES3IOShy0sqXxjUc) 并在里面添加如下配置信息: ```json "mcp-kingbase-server": { "command": "uv", "args": [ "--directory", "D:/project/python/mcp-server/kingbase_service", "run", "main.py" ] } ``` 配置成功后,就会成功解析我们写的工具,效果如图: ![image](https://cdn.res.knowhub.vip/c/2505/12/263d630c.png?G1cAAER17rxgXd0M%2bp14TBMEEmgGLNIIKiWs17v3XLfI9wdBy0%2bvbcT68JvaRogaDysmBB2OFBSkqqPQkp5wOC8izx4%3d) 接着,我们就可以开始使用配置进行随时随地的查询了。 ## 效果演示 我们直接在左侧的Craft标签中开始使用一下,这里简单问一下`Kingbase 数据库如何通过参数配置实现透明数据加密(TDE)`问题,看看能不能回答我,效果如下: ![image](https://cdn.res.knowhub.vip/c/2505/12/7e657db4.png?G1YAAETn9LwUqBDcvtMdbIlTE20GJLIIKiWs13vO2jfR9wcYmp%2fR%2boz94S%2btzyBRFK1KYBgbkhcGRMyVPYld1eHieY0A) 效果确实非常不错,这样一来,工作中遇到问题时,只需轻松查询,随时就能找到解决方案,极大提高了效率。 # 小结 将金仓社区搜索接口封装成MCP服务端并集成到 CodeBuddy 中,带来了显著的效率提升。通过这种方式,不再需要繁琐地打开浏览器进行搜索,直接在开发环境中就能快速查询问题,节省了大量时间。随时随地的查询功能大大简化了工作流程,让问题解决变得更加便捷。 * * *