Token导航 LogoToken导航TokenDH.com
Cdisc MCP logo
数据服务stdio官方级别未说明来源级核验

Cdisc MCP

MCP Server

CDISC MCP Server 是一个连接AI助手与CDISC Library REST API的服务,提供11种结构化工具用于查询临床试验数据标准(SDTM、ADaM、CDASH、CT)。

工具数

11

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude数据分析ClaudeCursorVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Teninq

提供方

Teninq

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

CDISC库MCP服务器 --直接从AI助手查询临床数据标准(SDTM、ADaM、CDASH、CT)。

![Python](https://python.org) ![FastMCP](https://github.com/jlowin/fastmcp) License: MIT ![Tests](tests/) ![API](https://library.cdisc.org)

🌐 翻译: 中文 README · 日本语README

______________________________________________________________________

这是什么?

CDISC MCP服务器 将AI助手(Claude、VS Code Copilot、Cursor等)连接到 CDISC库REST API,公开了11个用于查询临床试验数据标准的结构化工具。问你的AI助手一些问题,比如:

*“SDTM AE域中有哪些变量?”*/m *“显示ADaM IG 1.3中的ADSL变量”* *“列出所有可用的受控术语包”*

有关完整的设置说明,请参阅 用户手册→。参见 例子→ 以获取真实的对话样本。

______________________________________________________________________

快速开始

0·一线AI安装

让AI助手为您安装一切:

curl -fsSL https://raw.githubusercontent.com/Teninq/cdisc-mcp/main/install.md
将输出粘贴到Claude、Copilot或任何AI聊天中——它将阅读指南并交互式地引导您完成整个设置。

______________________________________________________________________

1·获取CDISC库API密钥

注册地址: https://library.cdisc.org 并获得个人API密钥。

2·安装

# Runtime only
pip install -e .

# With dev dependencies
pip install -e ".[dev]"

# With web explorer
pip install -e ".[web]"

3·设置API密钥

# Linux / macOS
export CDISC_API_KEY=your_key_here

# Windows — Command Prompt
set CDISC_API_KEY=your_key_here

# Windows — PowerShell
$env:CDISC_API_KEY = "your_key_here"

4·跑步

# Start MCP server (for AI assistant integration)
cdisc-mcp

# OR: Start Web Explorer (quick interactive testing)
python web/app.py

______________________________________________________________________

Web Explorer——快速交互式测试

验证设置和探索工具的最快方法 没有任何AI客户端.

# 1. Install web dependencies
pip install -e ".[web]"

# 2. Set your API key
export CDISC_API_KEY=your_key_here   # Linux/macOS
set CDISC_API_KEY=your_key_here      # Windows CMD
$env:CDISC_API_KEY = "your_key_here" # Windows PowerShell

# 3. Start the bridge server
python web/app.py

# 4. Open in browser
#    → http://localhost:8080

资源管理器提供:

  • 侧边栏导航 --按标准(SDTM/ADaM/CDASH/术语)组织的所有11个工具
  • 自动生成的表单 --版本和域的下拉菜单,变量的文本输入
  • 实时JSON响应 --语法突出显示,可复制输出,具有响应时间
  • 网桥状态指示器 -确认您的API密钥和连接
提示: 使用带破折号的版本字符串-- 3-43.4, 1-31.3. 示例:SDTM-IG 3-4,ADaM IG 1-3,CDASH-IG 2-0

______________________________________________________________________

可用工具

#工具标准说明
1list_products--列出所有可用的CDISC标准和已发布版本
2get_sdtm_domainsSDTM列出SDTM-IG版本中的所有数据集
3get_sdtm_domain_variablesSDTM列出SDTM域/数据集中的所有变量
4get_sdtm_variableSDTM获取特定SDTM变量的完整定义
5get_adam_datastructuresADaM列出ADaM IG版本中的所有数据结构
6get_adam_variableADaM获取特定ADaM变量的定义
7get_cdash_domainsCDASH列出CDASH-IG版本中的所有域
8get_cdash_domain_fieldsCDASH获取CDASH域的所有数据收集字段
9list_ct_packagesCT列出所有可用的受控术语包
10get_codelistCT获取CT代码表的定义和元数据
11get_codelist_termsCT列出CT代码列表中的所有有效术语

版本参考

标准可用版本(使用破折号)
SDTM-IG3-4 · 3-3 · 3-2 · 3-1-3
ADaM IG1-3 · 1-2 · 1-1 · 1-0
CDASH-IG2-1 · 2-0 · 1-1-1

______________________________________________________________________

连接到AI助手

克劳德桌面版

添加 claude_desktop_config.json:

{
  "mcpServers": {
    "cdisc": {
      "command": "cdisc-mcp",
      "env": {
        "CDISC_API_KEY": "your_key_here"
      }
    }
  }
}

VS代码/光标

添加 .vscode/mcp.json 或等效的MCP配置:

{
  "servers": {
    "cdisc": {
      "command": "cdisc-mcp",
      "env": {
        "CDISC_API_KEY": "your_key_here"
      }
    }
  }
}

克劳德代码(CLI)

Claude Code在两个范围内支持MCP服务器: 用户 (全球,所有项目)和 项目 (仅限本地当前项目)。

选项A--CLI命令(推荐)

# Add globally (available in all projects)
claude mcp add cdisc-mcp -e CDISC_API_KEY=your_key_here -- python -m cdisc_mcp.server

# Add for the current project only
claude mcp add cdisc-mcp --scope project -e CDISC_API_KEY=your_key_here -- python -m cdisc_mcp.server

# Verify the server was registered
claude mcp list

选项B——编辑 ~/.claude.json 直接

{
  "mcpServers": {
    "cdisc-mcp": {
      "command": "python",
      "args": ["-m", "cdisc_mcp.server"],
      "env": {
        "CDISC_API_KEY": "your_key_here"
      }
    }
  }
}
提示: 如果 CDISC_API_KEY 已在您的系统环境中,省略 env 完全阻塞——Claude Code会自动继承它。

注册后,请确认 /mcp 在任何Claude Code会话中,然后以对话方式使用这些工具:

User: What SDTM domains are defined in version 3.4?
Claude: [calls get_sdtm_domains with version="3-4"] ...

______________________________________________________________________

在自己的Python工具中使用

您可以使用官方的MCP客户端SDK从任何Python脚本以编程方式调用CDISC MCP工具。

安装客户端

pip install mcp

最小示例

import asyncio
import os
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

SERVER = StdioServerParameters(
    command="python",
    args=["-m", "cdisc_mcp.server"],
    env={"CDISC_API_KEY": os.environ["CDISC_API_KEY"]},
)

async def main():
    async with stdio_client(SERVER) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List all available tools
            tools = await session.list_tools()
            print([t.name for t in tools.tools])

            # Call a tool
            result = await session.call_tool(
                "get_sdtm_domains",
                arguments={"version": "3-4"},
            )
            print(result.content[0].text)

asyncio.run(main())

可重复使用的助手

import asyncio, os, json
from contextlib import asynccontextmanager
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

_SERVER = StdioServerParameters(
    command="python",
    args=["-m", "cdisc_mcp.server"],
    env={"CDISC_API_KEY": os.environ["CDISC_API_KEY"]},
)

@asynccontextmanager
async def cdisc_session():
    """Async context manager that yields an initialised MCP session."""
    async with stdio_client(_SERVER) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            yield session

async def call(tool: str, **kwargs) -> dict:
    async with cdisc_session() as s:
        result = await s.call_tool(tool, arguments=kwargs)
        return json.loads(result.content[0].text)

# --- Usage examples ---
async def demo():
    # Fetch SDTM domains
    domains = await call("get_sdtm_domains", version="3-4")

    # Fetch all variables in the AE domain
    variables = await call("get_sdtm_domain_variables", version="3-4", domain="AE")

    # Look up a single variable
    aeterm = await call("get_sdtm_variable", version="3-4", domain="AE", variable="AETERM")

    print(aeterm)

asyncio.run(demo())

可用工具签名(快速参考)

# Products / versions
await session.call_tool("list_products", {})

# SDTM
await session.call_tool("get_sdtm_domains",          {"version": "3-4"})
await session.call_tool("get_sdtm_domain_variables", {"version": "3-4", "domain": "AE"})
await session.call_tool("get_sdtm_variable",         {"version": "3-4", "domain": "AE", "variable": "AETERM"})

# ADaM
await session.call_tool("get_adam_datastructures",   {"version": "1-3"})
await session.call_tool("get_adam_variable",         {"version": "1-3", "data_structure": "ADSL", "variable": "USUBJID"})

# CDASH
await session.call_tool("get_cdash_domains",         {"version": "2-0"})
await session.call_tool("get_cdash_domain_fields",   {"version": "2-0", "domain": "AE"})

# Controlled Terminology
await session.call_tool("list_ct_packages",          {})
await session.call_tool("get_codelist",              {"package_id": "sdtmct-2024-03-29", "codelist_id": "C66781"})
await session.call_tool("get_codelist_terms",        {"package_id": "sdtmct-2024-03-29", "codelist_id": "AGEU"})
版本格式: 始终使用破折号,而不是点-- "3-4""3.4".

______________________________________________________________________

建筑

MCP Client (Claude / VS Code / Cursor)
        │
        │  MCP protocol (stdio)
        ▼
   server.py  ──── FastMCP tool registration
        │
        ▼
   tools/  ──────── domain functions (sdtm, adam, cdash, terminology, search)
        │
        ▼
   client.py  ───── CDISCClient (async HTTP · TTL cache · retry)
        │
        │  HTTPS
        ▼
   library.cdisc.org/api  ──── CDISC Library REST API

关键设计决策:

  • CDISCClient 是一个具有1小时TTL内存缓存的单例异步HTTP客户端
  • 4295xx 重新尝试响应; 4xx 立即提高
  • 工具函数是纯异步的——无需打补丁即可独立测试
  • format_response() HAL条 _links 元数据,提取用于LLM消费的结构化数据

______________________________________________________________________

发展

开发工作流程(先开发,分支合并SOP):贡献指南.

运行测试

# Full suite with coverage (≥80% required)
pytest

# Specific modules
pytest tests/test_tools.py tests/test_client.py -v

# Single test
pytest tests/test_tools.py::test_list_products -v

代码质量

ruff check src/ tests/    # Linting
mypy src/                 # Type checking

GitHub分支保护(必需检查)

配置 main 分支保护要求:

  • CI Tests / tests
  • CI Lint / lint
  • CI Types / types

项目结构

src/cdisc_mcp/
├── server.py              # FastMCP server + tool registration
├── client.py              # Async HTTP client (cache, retry)
├── config.py              # Config dataclass + env loader
├── errors.py              # AuthenticationError, ResourceNotFoundError, RateLimitError
├── response_formatter.py  # HAL response normalization
└── tools/
    ├── search.py          # list_products (product catalog)
    ├── sdtm.py            # SDTM domain/variable tools
    ├── adam.py            # ADaM datastructure/variable tools
    ├── cdash.py           # CDASH domain/field tools
    ├── terminology.py     # CT package/codelist tools
    └── _validators.py     # Path traversal guards
web/
├── app.py                 # FastAPI bridge server
└── index.html             # Single-file browser explorer
tests/
├── test_config.py
├── test_client.py
├── test_response_formatter.py
├── test_tools.py
├── test_errors.py
└── test_server.py

______________________________________________________________________

许可证

MIT许可证。

______________________________________________________________________

专为使用CDISC标准的临床数据专业人员而设计。

用户手册 · 例子 · CDISC图书馆 · API文件

目录标签

目录标签

PythonClaude数据分析临床数据标准本地部署AI助手集成RESTAPI临床试验数据查询

支持客户端

ClaudeCursorVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

11

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-keyremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP