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

我将详细讲解如何一步步地将一个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地址和端口号。点击该链接,将能够在浏览器中查看到相应的效果,如下图所示: image 看起来都是正常的。

插件配置

我们现在配置一下腾讯云的 CodeBuddy 编程助手插件, image 并在里面添加如下配置信息:

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

配置成功后,就会成功解析我们写的工具,效果如图: image 接着,我们就可以开始使用配置进行随时随地的查询了。

效果演示

我们直接在左侧的Craft标签中开始使用一下,这里简单问一下Kingbase 数据库如何通过参数配置实现透明数据加密(TDE)问题,看看能不能回答我,效果如下: image 效果确实非常不错,这样一来,工作中遇到问题时,只需轻松查询,随时就能找到解决方案,极大提高了效率。

小结

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