今天在使用国产数据库金仓时,我发现每次遇到问题都习惯性地打开金仓社区进行搜索和查看相关信息。可是每次打开浏览器的操作总让我觉得有些麻烦,于是我决定不再依赖这种繁琐的过程。索性今天我把这个接口提取出来,并将其封装成MCP服务端,集成到了我的CodeBuddy中。这样,我无论在何时何地都能直接进行提问和查询,既方便又高效。

今天,我将详细讲解如何一步步地将一个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接口供我们使用,因此我们只能通过手动抓取接口的方式来获取数据。我们在这里不进行具体的演示,最终的实现代码如下:

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地址和端口号。点击该链接,将能够在浏览器中查看到相应的效果,如下图所示:

看起来都是正常的。

插件配置

我们现在配置一下腾讯云的 CodeBuddy 编程助手插件,

并在里面添加如下配置信息:

"mcp-kingbase-server": {
"command": "uv",
"args": [
"--directory",
"D:/project/python/mcp-server/kingbase_service",
"run",
"main.py"
]
}

配置成功后,就会成功解析我们写的工具,效果如图:

接着,我们就可以开始使用配置进行随时随地的查询了。

效果演示

我们直接在左侧的Craft标签中开始使用一下,这里简单问一下Kingbase 数据库如何通过参数配置实现透明数据加密(TDE)问题,看看能不能回答我,效果如下:

效果确实非常不错,这样一来,工作中遇到问题时,只需轻松查询,随时就能找到解决方案,极大提高了效率。

小结

将金仓社区搜索接口封装成MCP服务端并集成到 CodeBuddy 中,带来了显著的效率提升。通过这种方式,不再需要繁琐地打开浏览器进行搜索,直接在开发环境中就能快速查询问题,节省了大量时间。随时随地的查询功能大大简化了工作流程,让问题解决变得更加便捷。


我是努力的小雨,一个正经的 Java 东北服务端开发,整天琢磨着 AI 技术这块儿的奥秘。特爱跟人交流技术,喜欢把自己的心得和大家分享。还当上了腾讯云创作之星,阿里云专家博主,华为云云享专家,掘金优秀作者。各种征文、开源比赛的牌子也拿了。

想把我在技术路上走过的弯路和经验全都分享出来,给你们的学习和成长带来点启发,帮一把。

欢迎关注努力的小雨,咱一块儿进步!

从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案的更多相关文章

  1. 打造高效前端工作环境 - tmux

    打造高效前端工作环境 - tmux 前言  现在前端开发可不容易啊,先打开个VIM,然后再打开个lite-server,一不小心写个ES2015还要打开个gulp来做预编译,如果能把这么多个窗口放在一 ...

  2. 《微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记1)WePY开发环境的安装

    WePY的安装或更新都通过npm进行,全局安装或更新WePY命令行工具,使用以下命令: npm install wepy-cli -g 稍等片刻,成功安装后,即可创建WePY项目. 注意:如果npm安 ...

  3. 微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记4)支持React.js语法的Taro框架

    Taro本身实现的情况类似于mpvue,mpvue的未来展望中也包含了支付宝小程序,现在的版本中,也可以使用不同的构建命令来构建出百度小程序的支持,如第10章所示,但是现在Taro先于mpvue实现了 ...

  4. # Pycharm打造高效Python IDE

    Pycharm打造高效Python IDE 建议以scientific mode运行,在科学计算时,可以方便追踪变量变化,并且会提示函数的用法,比普通模式下的提示更加智能,一般在文件中引入了numpy ...

  5. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,

    第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...

  6. Rocky4.2下安装金仓v7数据库(KingbaseES)

    1.准备操作系统 1.1 系统登录界面 1.2 操作系统版本信息 jdbh:~ # uname -ra Linux jdbh -x86_64 # SMP Fri Dec :: CST x86_64 G ...

  7. 润乾配置连接kingbase(金仓)数据库

     问题背景 客户根据项目的不同,使用润乾连接的数据库类型各种各样,此文针对前几日使用润乾设计器连接kingbase金仓数据库做一个说明. kingbase金仓数据库是一款国产数据库,操作方式和配置 ...

  8. 通过ODBC接口访问人大金仓数据库

      国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高:另一方面,国产软件目前普遍难用,性能不稳定,Bug ...

  9. 金仓Kingbase数据库网页数据维护分析工具

    金仓Kingbase是优秀的国产数据库产品,在能源,政务,国防等领域广泛使用, 现在TreeSoft数据库管理系统已支持Kingbase了,直接在浏览器中就可以操作查看Kingbase数据了,十分方便 ...

  10. DBeaver连接达梦|虚谷|人大金仓等国产数据库

    前言 工作中有些项目可能会接触到「达梦.虚谷.人大金仓」等国产数据库,但通常这些数据库自带的连接工具使用并不方便,所以这篇文章记录一下 DBeaver 连接国产数据库的通用模版,下文以达梦为例(其他国 ...

随机推荐

  1. [JOI 2020 Final] 火事 题解

    给一篇题解.(下面这张图是从 luogu 上粘贴的,因为不太会画图) 其中纵坐标为 \(t\),横坐标为 \(a_i\). 发现同颜色块只有平行四边形和直角梯形(等腰直角三角形)两种情况. 可以将直角 ...

  2. 【软件开发】Doxygen使用笔记

    [软件开发]Doxygen 使用笔记 Doxygen 是通过代码注释生成文档的事实标准,借用该工具可以将文档内容与代码写在一起方便维护. https://github.com/doxygen/doxy ...

  3. Hadoop - HDFS 概述

    什么是HDFS HDFS的优缺点 HDFS的文件块大小 HDFS的写数据流程 HDFS的副本配置策略 HDFS读数据的流程 什么是HDFS HDFS(Hadoop Distributed File S ...

  4. camunda工作流实战项目【PRO版】(表单设计器+流程编辑器,零代码创建流程)

    pro版本主要对流程设计器.表单模块做了优化和改造,下面是各版本功能对比 一.整体情况介绍 基于ruoyi平台和camunda工作流开发而成,结合bpmn.js流程编辑器和vform表单设计器,实现常 ...

  5. linux服务器压力/性能测试命令

    linux命令下使用ab -c500 -n2000   http://www.test.cn  进行压力测试 在Linux命令行中,ab 是 Apache HTTP server benchmarki ...

  6. 非容器环境中使用Selenium,提升Chrome与ChromeDiver兼容性

    背景 在 Windows 环境下使用 Selenium 时,Chrome 浏览器版本与 ChromeDriver 版本的兼容性问题是一个常见的困扰. 由于 Chrome 频繁更新,而 ChromeDr ...

  7. Linux下yum安装mysql 遇到的问题Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 错误

    今天在linux下安装mysql时 执行service mysqld start时, mysql总是启动失败 后来查看mysql日志:/var/log/mysqld.log,发现有个Can't ope ...

  8. Qt 设置QTableView表格列宽自动均分表格

    文章目录 Qt 设置QTableView表格列宽自动均分表格 前言 setSectionResizeMode 通过获取字体占的像素来设置 Qt 设置QTableView表格列宽自动均分表格 前言 最近 ...

  9. 常用损失函数 LossFunction

    文章结构 损失函数在神经网络中的位置 常用的损失函数(结构:解释,公式,缺点,适用于,pytorch 函数) MAE/L1 Loss MSE/L2 Loss Huber Loss 对信息量.熵的解释 ...

  10. 编写你的第一个 Django 应用程序,第3部分

    本教程从教程 2 停止的地方开始.我们是 继续网络投票应用程序,并将专注于创建公众界面 – "视图". 在我们的投票应用程序中,我们将有以下四个视图: 问题"索引&quo ...