Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

构建Testlink MCP并集成到Copilot(四)



在前面几篇文章记录中,已经可以通过提示词与testlink交互了。更多的功能之后再加,现在需要部署一下mcp server让其他人也能用到。

部署有两种方式,一种是打包上传pypi,然后在本地mcp.json中以uvx运行,比如jira的mcp就是这样做的。

一种是类似常规web项目那样部署在服务器。对于内网的访问就只能用后者了。

fastmcp官方文档有推荐使用uvicorn。

之前的app.run可以替换为下面的:

http_app = app.http_app(path="/mcp-testlink")  # 这里方便用uvicorn调用,也方便指定url后缀

if __name__ == "__main__":
    uvicorn.run("server:http_app", host="0.0.0.0", port=8000, workers=4, reload=True)

也可以移除__name__=="__main__",不用执行python server.py,直接用命令:

uvicorn server:http_app --host 0.0.0.0 --port 8000 --workers 4 --reload

 正式环境要移除reload参数。

这里有几个情况要说明。

之前的文章有写过gunicorn,可以支持通过将一些参数放进配置py文件,以这个文件可以方便地运行在后台。但是uvicorn并不支持这样的方式。因此在服务器那里需要指定用上nohup,避免退出后进程无法持续。

nohup uvicorn server:http_app --host 0.0.0.0 --port 8000 --workers 4 > ./uvicorn.log 2>&1 &

用ps命令检查到进程了,那么在nginx中加一点配置,重启nginx即可。

location ~ /mcp-testlink {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

问题又出现了,部署时用nginx且uvicorn指定了workers参数会出现400 bad request,https://github.com/modelcontextprotocol/python-sdk/issues/1275

于是启动命令换成这个:

nohup uvicorn server:http_app --host 0.0.0.0 --port 8000 > ./uvicorn.log &

现在能正常访问了。并且从多台电脑上都能用提示词与内网testlink交互。

上一篇:  构建Testlink MCP并集成到Copilot(三)

共有0条评论

添加评论

暂无评论