三、开通与准备
登录建站后台,在网站后台打开接口能力,拿到你的 API Key。
准备好支持远程MCP接入的客户端,或者让技术人员自己写MCP客户端程序。
填写下面的服务地址,连通之后查看工具列表。
注意:API Key是用来校验接口权限的敏感凭证,一定要妥善保管,不要放到公开文档、前端页面、代码仓库、公开截图里面。分享连接配置、排查日志的时候,要把URL里面的key隐藏掉。
四、服务地址与鉴权
4.1 MCP 接入地址
[https://jzmcp.webportal.top/mcp?key=<YOUR_API_KEY>](https://jzmcp.webportal.top/mcp?key=%3CYOUR_API_KEY%3E)
把 <YOUR_API_KEY> 替换成后台拿到的API Key。key放在URL查询参数里传过去,自己拼接URL的时候,要对参数值做URL编码。
4.2 查询mcp能力说明
GET [https://jzmcp.webportal.top/capabilities](https://jzmcp.webportal.top/capabilities)
这个接口不用API Key,可以用来了解服务用途、鉴权方式、工具简单介绍,不会返回完整的工具参数定义,也不等于你已经拥有站点操作权限。
拿到完整工具定义(tools/list)、调用业务工具(tools/call)都需要鉴权,并且网站要开启AI接口开放。
五、在 AI 客户端中接入
在客户端的MCP服务配置页面,新增远程服务,填上面带API Key的完整接入地址。每个客户端的入口名字、配置格式不一样,跟着客户端本身的说明文档操作。
接入之后,建议按顺序做下面几项验证:
建立MCP连接,确认初始化没问题。直接发给Agent这个MCP地址,让AI帮你搭建链接就行;
跟着Agent客户端指引配置APIkey,出于安全考虑,不建议直接把秘钥发给AI。
获取工具列表,确认能识别上面说的4个工具。
调用 getNewsGroupList,确认可以读取当前网站的分类。
拿一个已知标题的文章调用 getNewsInfo,验证查询功能正常。
第一次测试**只用查询类工具。等需要新增文章、修改发布时间的时候,再填完整参数并且确认执行。
六、技术接入流程
下面内容给自己搭建智能体客户端的技术人员参考。
6.1 请求地址与请求头
所有请求都发到这个地址:
POST [https://jzmcp.webportal.top/mcp?key=<YOUR_API_KEY>](https://jzmcp.webportal.top/mcp?key=%3CYOUR_API_KEY%3E)
Content-Type: application/json
Accept: application/json, text/event-stream
服务有可能返回JSON或者SSE(text/event-stream)格式数据。客户端要兼容两种返回格式,不能默认把返回内容当成单个JSON读取。
6.2 初始化
请求体:
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "your-mcp-client",
"version": "1.0.0"
}
}
}
初始化成功之后,发送初始化完成通知。这条通知不带id:
{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}
这次接入验证里面,初始化返回 HTTP 200,初始化完成通知返回 HTTP 202。如果初始化响应里面带回 Mcp-Session-Id,后面所有请求都要带上这个会话标识。
6.3 获取工具定义
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}
工具定义放在JSON-RPC返回结果的 result.tools 里面。每个工具包含name、description、inputSchema。要拿inputSchema校验入参,以服务实际返回的定义为准。
6.4 调用工具
调用方法统一是 tools/call,params.name 指定工具名字,params.arguments 放业务参数。
下面这个例子是查询文章分类,不用传业务参数,arguments传空对象{}:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "getNewsGroupList",
"arguments": {}
}
}
客户端要同时处理HTTP报错、JSON-RPC错误,还要处理工具返回结果里的isError标记。HTTP 200状态码,不代表业务请求一定执行成功。
七、工具参数参考
下面这套参数定义,是按服务实际返回的tools/list整理出来的。所有工具都设置了additionalProperties: false,不要提交定义之外的参数。
7.1 查询文章:getNewsInfo
按文章标题模糊搜索文章列表,返回文章标题、摘要、正文和元数据。
参数
类型
必填
说明
title
string
是
用来匹配文章标题的搜索文本
调用示例:
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "getNewsInfo",
"arguments": {
"title": "新品"
}
}
}
当前工具参数不支持分页、排序,也不能按文章ID查询。
7.2 查询文章分类:getNewsGroupList
拿到当前网站的文章分类列表,包含未分类(id=0)。这个工具没有业务参数,arguments传空对象 {},完整示例看上面6.4小节。
新增文章之前,可以先用这个工具拿到分类信息。
7.3 新增文章:addNews
往网站里面新增一篇文章。
参数
类型
必填
说明
title
string
是
文章标题
content
string
是
文章正文
summary
string
是
文章摘要
coverUrl
string
是
封面图片外链地址
groupIds
string
是
文章分类 ID 参数
source
string
是
文章来源
author
string
是
文章作者
cusUrl
string
是
自定义访问地址
browserTitle
string
是
SEO页面标题
seoKeyword
string
是
SEO关键词
seoDesc
string
是
SEO描述内容
date
string
是
文章发布时间
现在Schema里面这12个字段全部是必填项,客户端要一次性补齐。必填不等于可以直接传空字符串,能不能传空要看平台业务规则。
下面是参数结构模板,里面占位符要替换成平台支持的真实内容,不能直接拿去运行:
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "addNews",
"arguments": {
"title": "新品发布介绍",
"content": "<文章正文>",
"summary": "介绍本次新品的主要特点。",
"coverUrl": "<可访问的封面图片URL>",
"groupIds": "<按支持格式填写的分类ID>",
"source": "企业官网",
"author": "内容团队",
"cusUrl": "<**平台规则的自定义地址>",
"browserTitle": "新品发布介绍",
"seoKeyword": "新品",
"seoDesc": "了解本次新品的主要特点。",
"date": "<按支持格式填写的发布时间>"
}
}
}
7.4 修改发布时间:updateNewsDate
修改已经存在的文章的发布时间。
参数
类型
必填
说明
newsId
integer
是
要修改的文章 ID
date
string
是
新的发布时间
下面是参数结构模板,12345只是示例文章ID,执行之前要换成网站真实文章ID,替换掉时间占位符:
{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "updateNewsDate",
"arguments": {
"newsId": 12345,
"date": "<按支持格式填写的发布时间>"
}
}
}
这个工具只能改发布时间,不要误以为可以用来定时发布、下架文章或者切换发布状态。