
配置 MCP Server 时,不要一开始就想着做一个完整平台。先跑通一个最小服务:客户端能连上,能看到一个工具,传入参数后能拿到返回结果。这个闭环通了,再谈鉴权、日志、部署和复杂工具。
最小验收标准
- 客户端能识别这个 Server。
- 工具名称和描述能正常显示。
- 参数 Schema 写得清楚,缺参数时能报错。
- 调用工具后能返回稳定 JSON 或文本结果。
- 日志里能看到谁在什么时候调用了什么工具。
一个最小工具长什么样
下面是示意写法,重点不是框架名字,而是工具名、参数和返回值要清楚。
from fastmcp import FastMCP
mcp = FastMCP("content-helper")
@mcp.tool
def get_article(id: int) -> dict:
"""Read one article by ID."""
return {
"id": id,
"title": "示例文章",
"status": "publish"
}
if __name__ == "__main__":
mcp.run()
工具名不要写成 do_action 这种模糊名字。模型看到 get_article、update_article_seo、upload_media_from_url,才更容易正确调用。
Schema要写给模型看
| 不清楚 | do_action(data) |
| 更清楚 | update_article_title(id, title) |
| 不清楚 | run(task) |
| 更清楚 | refresh_article_cache(article_id) |
参数名、类型、是否必填、错误返回,都要写清楚。MCP 工具不是给人猜的,是给模型调用的。
密钥不要写死
API Key、数据库密码、后台 Token 不要写在代码里。用环境变量或密钥管理,并限制每个工具能访问的范围。
GUAQI_MCP_TOKEN=xxxx
DATABASE_URL=postgres://...
CMS_API_BASE=https://example.com/api
读取文章、查询列表、获取配置,这类工具风险较低;删除内容、批量发布、付款、改生产配置,这类动作必须谨慎,最好加人工确认、日志和回滚方案。
先做只读工具,再做写入工具。能安全读到数据,是配置成功的第一步。
部署前再补这些东西
- 日志:记录工具名、参数摘要、调用结果和错误。
- 鉴权:不同用户或客户端能调用哪些工具。
- 限流:避免模型循环调用或误触发高成本接口。
- 错误处理:参数错、权限错、上游接口错时要返回可读信息。
- 回滚:写入内容、刷新缓存、批量更新前要能恢复。
如果你做的是内容网站,MCP 可以先从三类工具开始:读取文章、更新 SEO、刷新缓存。别一上来就做批量发布和删除。小闭环跑稳以后,再把它扩成真正能长期用的运营助手。
如果你还没分清 MCP 里的 Client、Server 和 Tool,可以先看 MCP入门;做成完整工作流时,可以继续看 AI Agent工作流。
发表回复