上个月CDISC官方做了一次关于CDISC Library API的上手直播,其中王军老师提到了CDISC Library 的API request可以做成MCP工具,本次文章记录了关于我对于CDISC Library MCP的探索。

当大家看到这篇推文的时候,已经可以通过魔搭社区或者安装pypi的python包体验到这款MCP工具。

MCP简要介绍

MCP(Model Context Protocol)是连接AI和外部工具/数据的标准化协议,能够让AI调用各类工具、实时数据和系统功能。

以前的AI只能和你对话,有了MCP的AI就像有了工具箱,可以完成更复杂的工作。

这个东西在AI领域已经出现一年多时间了,目前各大AI相关的MCP工具已经多到眼花缭乱,并且是当前构建AI Agents的基础环节。

img

CDISC Library API结合MCP思路

说回CDISC Library,我们可以把它做成MCP,是因为当我们在官方网站上点击API Tester选择API request 里面的python语法,这段代码在python中运行之后就能够获取到request的结果。

img

如果我们愿意把它打包成python def函数,再做进现在的MCP工具里,就能直接实现:问AI问题后让它自己运行这段代码去request,获取内容、自动分析并给出结果。而MCP工具现在满足python和Node.js SDK,只要会这两种代码,就能够做出这个MCP来。

使用指南

魔搭社区MCP广场试用

在魔搭社区的MCP广场(https://www.modelscope.cn/mcp)搜索'cdisc',这个CDISC数据库MCP就是了,

img

在CDISC官网(https://api.developer.library.cdisc.org/api-details)申请自己的APIKEY,填写在环境变量这里:

img

填好之后,点击连接-试用

img

之后当你问和CDISC相关的问题时,LLM会自动搜索自己能用的工具并调用,这样就能够更加精准的得到答案,比如问:指定Domain 哪些变量需要加CT?

img

在Cherry Studio中使用

魔搭社区提供了便捷的在线体验环境,但在其他应用里你在能够用到更加新鲜、多元的LLM。Cherry Studio是提到MCP时被举例最多的应用(https://www.cherry-ai.com/),下载之后你可以添加自己的大模型APIKEY。之后去MCP服务器里安装uv和bun,鼠标点击就能自动安装,随后我们添加一个MCP服务器:

img

上面的参数:

(1)随便填写;(2)选STDIO;(3)写uvx;(4)必须写allensrj-cdisc-library-mcp,这个是我上传到pypi的python包名;(5)填写自己申请的官网CDISC APIKEY。

写完参数之后,把开关打开,就算正常运行了。

随后在对话页面里,选这个锤子标志,点击手动,选自己刚才添加的MCP服务器,之后就可以问问题验证了,比如问:具体codelist的值包含哪些terms?

img

还有其他方式方法,如Cursor、Cline、Claude Code等五花八门的编程相关工具中使用,任君探索。

CDISC Library MCP制作难点

记录一下做的过程中遇到的难点以及解决过程。

API Request重构

MCP工具一般不会超过20个def函数,因为过多的工具既会占用和AI交流的上下文token,也会增加AI把工具搞混淆的可能,所以官网的api request,一共有144个语句要重构。仔细看一遍这种Restful API的语句,能发现它规整且内容有所重叠。如SDTMIG包含Class、Dataset、Variable三个层面,既相互嵌套又存在一定内容重复,重构时先取Class部分、再取Dataset部分可以实现用2个def函数覆盖官网9个request。

其他部分,这次的MCP里还覆盖了SDTM Model、ADaM Model、CT、QRS、SENDIG、CDASHIG、Product list等内容。

DocString

DocString是python def里的内容,相当于提示词,对 AI调度MCP起关键作用。

超Token

API request返回的内容可能很大甚至超过LLM的能够解析token长度(根据各家模型不同),这是要考虑的实际问题,置之不理就会造成对话卡死。想过两种解决办法:1. 加part参数分段返回(效果不佳);2. CT部分再返回JSON的时候只保留Codelist和terms的一对多关系。

一些思考

做这次探索的过程中,我一直在思考pypi包、modelscope、github库三者的关系。

  • pypi包发布后就能实现mcp被他人所调用,所以allensrj-cdisc-library-mcp这个包是基础,我加上个人tag前缀,是为了区分CDISC官方的内容,避免命名冲突、误会(CDISC官方已发布过一个cdisc-library-client包);

  • modelscope更像是一个宣发平台和试用广场,方便你点点鼠标就能够体验功能;

  • 而github库是这个mcp框架,承载逻辑和架构。

实际上,很多公司(不特指药企),该做的mcp可能是在本地跑AI去完成任务,并没有公开发布。目前的这个mcp,看起来实现了一个在线RAG的效果,是一次开箱即用的探索,希望能激发大家的灵感。

写在后面

AI领域的发展日新月异,2025年里MCP、Agents、Skills、Cowork等新技术层出不穷,作为生物医药产业里的一员,可能没法和AI产业里的人比追新速度,但是如果这项技术能和我们行业结合,我认为应该尽可能的了解和尝试。

编程类的项目往往是看似简单,实际上手永远都有踩不完的坑、意想不到的困难,目前发布的版本里有一些困难还没有完全克服,比如diff、Rule、Integrated部分还没理想的融进MCP里;此外,QRS有时候会因为长度超出模型允许的token上限,这些问题也是我接下来希望继续完善的方向。

最后,我在这里诚挚的和各位发出邀请:

  • 如果你有过AI各类技术的探索、对于这个工具里的细节感兴趣;

  • 或者发现这个工具有能够完善的地方、愿意给我一些指点;

  • 再或者你只是充满好奇,想单纯聊聊mcp相关的问题;

都可以加我的微信(微信号:allensrj,备注:药企SP)联系我,我希望以开放的心态和大家交流、一起进步。

文中涉及资料

资料

网站

modelscope项目地址

https://www.modelscope.cn/mcp/servers/allensrj/CDISC_Library_MCP

pypi项目地址

https://pypi.org/project/allensrj-cdisc-library-mcp

github项目地址

https://github.com/allensrj/CDISC_Library_MCP

Cherry Studio官网

https://www.cherry-ai.com/

CDISC Library官网

https://api.developer.library.cdisc.org/api-details

MCP github库

https://github.com/modelcontextprotocol/modelcontextprotocol