关于 clinicaltrialsgov-mcp-server
clinicaltrialsgov-mcp-server 通过 MCP 提供 ClinicalTrials.gov 搜索、研究详情、结果及患者与候选试验匹配功能,适用于临床试验检索和领域分析,并支持字段探索与精简或完整记录。
主要功能
- 01按查询条件和筛选项搜索研究
- 02获取方案记录和已发布结果
- 03查看字段定义及取值
- 04匹配患者资料与招募中试验
- 05按地理位置搜索研究地点
适用场景
- 01按病症、阶段或地点查找试验
- 02查看已完成研究的结果和不良事件
- 03分析研究数量与注册表字段
- 04为患者资料筛选候选试验
MCP 相关
向 MCP 客户端提供七个工具、一个 JSON 资源和一个分析提示词。支持 stdio 与 Streamable HTTP 传输。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://clinicaltrials.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-clinicaltrialsgov https://clinicaltrials.caseyjhand.com/mcp{"mcpServers":{"cyanheads-clinicaltrialsgov":{"type":"http","url":"https://clinicaltrials.caseyjhand.com/mcp"}}}在 Cursor 中打开{"servers":{"cyanheads-clinicaltrialsgov":{"type":"http","url":"https://clinicaltrials.caseyjhand.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"cyanheads-clinicaltrialsgov":{"type":"http","url":"https://clinicaltrials.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-clinicaltrialsgov":{"serverUrl":"https://clinicaltrials.caseyjhand.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
7| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sort | string | 否 | 排序方式。格式:FieldName:asc 或 FieldName:desc。例如,"LastUpdatePostDate:desc"、"EnrollmentCount:desc"。最多可用逗号分隔 2 个字段。对于“最大规模试验”查询,将 EnrollmentCount:desc 与高级筛选条件 "AREA[StudyType]INTERVENTIONAL" 配对——入组人数最高的通常是观察性登记/理赔研究,入组人数达数千万。入组人数由申办方报告;除排除未知入组人数的哨兵值外,上游不会对其进行验证。使用 clinicaltrials_get_field_definitions 查找可排序的字段名。 |
| query | string | 否 | 跨所有字段的通用全文搜索。运行 ClinicalTrials.gov 为此参数提供的 57 字段相关性搜索:NCTId、NCTIdAlias、OrgStudyId、SecondaryId、Acronym、BriefTitle、OfficialTitle、Condition、InterventionName、InterventionOtherName、Phase、StdAge、StudyType、BriefSummary、结局指标及其描述、LeadSponsorName、CollaboratorName、Location* 字段、Design* 字段,以及 ConditionAncestorTerm/InterventionAncestorTerm MeSH 上位词——因此,命中结果未必在你预期的字段中包含搜索词。支持普通词语以及 AND、OR、NOT。`[ ]` 仅在 AREA[FieldName]value 或 RANGE[min, max] 表达式中有效——这些表达式在此处和 advancedFilter 中均可使用,因此 AREA[Phase]PHASE2 可用于此参数;单独出现的方括号会导致错误。`( )` 用于分组子表达式,并在匹配时生效;`,` 表示 AND。专用的 *Query 参数(conditionQuery、interventionQuery 等)将搜索限定到单个字段。 |
| fields | array | 否 | 要返回的 PascalCase 叶字段名;强烈建议指定,因为完整记录约为 70KB。省略时返回精简索引投影——空列表会被拒绝,不会视为省略。以逗号或竖线连接的条目("NCTId,BriefTitle")会拆分为多个名称。常用叶字段:NCTId、BriefTitle、BriefSummary、OverallStatus、Phase、LeadSponsorName、Condition。调用 clinicaltrials_get_field_definitions 并提供概念查询(例如 "adverse events"、"eligibility"),以查找任何概念对应的确切叶字段。 |
| nctIds | any | 否 | 筛选指定的 NCT ID,以便批量查询。省略时搜索所有研究——空列表会被拒绝,不会视为“无筛选条件”。提供此参数会取消默认的未知入组人数排除规则,因此指定的 ID 不会在其自身查询中被筛除。 |
| pageSize | integer | 否 | 每页结果数,1–200。 |
| geoFilter | string | 否 | 地理位置邻近筛选器。格式:distance(lat,lon,radius),其中 radius 带有 `mi` 或 `km` 后缀——例如,"distance(47.6062,-122.3321,50mi)" 表示筛选西雅图 50 英里范围内的研究。必须指定后缀:不带单位的半径、非正半径、超出 [-90, 90] 的纬度以及超出 [-180, 180] 的经度均会被拒绝。设置后,会按各研究地点与中心点的距离重新排序,使最近的匹配地点排在首位,并标注其英里距离;完整地点列表会保留。 |
| pageToken | string | 否 | 分页游标:将先前响应中的 nextPageToken 原样传回,并使用相同的筛选条件。ClinicalTrials.gov 刷新数据后,令牌会过期。 |
| countTotal | boolean | 否 | 在响应中包含研究总数。仅在第一页计算。 |
| titleQuery | string | 否 | 仅在研究标题和缩写中搜索。匹配 Acronym、BriefTitle 和 OfficialTitle。支持普通词语以及 AND/OR/NOT。`[ ]` 仅在 AREA[FieldName]value 或 RANGE[min, max] 表达式中有效;此参数接受这些表达式。单独出现的方括号会导致错误。`( )` 在匹配时用于分组子表达式;`,` 表示 AND。 |
| phaseFilter | any | 否 | 按试验阶段筛选。省略则搜索所有阶段——空列表会被拒绝,不会视为“无筛选条件”。可选值:EARLY_PHASE1、PHASE1、PHASE2、PHASE3、PHASE4、NA。接受大小写和空格变体(“Phase 3”、“early phase 1”、“Not Applicable”);列表或以逗号或竖线连接的字符串会匹配任一阶段。每个条目都必须指定一个阶段——请将搜索表达式(OR、NOT、AREA[…])放入 advancedFilter。 |
| outcomeQuery | string | 否 | 在结局指标字段中搜索。匹配 PrimaryOutcomeMeasure、SecondaryOutcomeMeasure、OtherOutcomeMeasure 和 OutcomeMeasureTitle,以及对应的描述字段 PrimaryOutcomeDescription、SecondaryOutcomeDescription、OtherOutcomeDescription、OutcomeMeasureDescription 和 OutcomeMeasurePopulationDescription——因此,即使搜索词只出现在结局描述文本中也会匹配。支持普通词以及 AND/OR/NOT。`[ ]` 仅可用于 AREA[FieldName]value 或 RANGE[min, max] 表达式;此参数接受这类表达式,单独出现的方括号会导致失败。匹配时,`( )` 用于组合子表达式;`,` 表示 AND。 |
| sponsorQuery | string | 否 | 搜索申办方/协作方名称。匹配 LeadSponsorName、CollaboratorName 和 OrgFullName。支持普通词以及 AND/OR/NOT。`[ ]` 仅可用于 AREA[FieldName]value 或 RANGE[min, max] 表达式;此参数接受这类表达式,单独出现的方括号会导致失败。匹配时,`( )` 用于组合子表达式;`,` 表示 AND。 |
| statusFilter | any | 否 | 按研究状态筛选。省略则搜索所有状态——空列表会被拒绝,不会视为“无筛选条件”。可选值:RECRUITING、COMPLETED、ACTIVE_NOT_RECRUITING、NOT_YET_RECRUITING、ENROLLING_BY_INVITATION、SUSPENDED、TERMINATED、WITHDRAWN、UNKNOWN、WITHHELD、NO_LONGER_AVAILABLE、AVAILABLE、APPROVED_FOR_MARKETING、TEMPORARILY_NOT_AVAILABLE。 |
| locationQuery | string | 否 | 搜索地点——城市、州、国家或机构名称。匹配 LocationCity、LocationState、LocationCountry、LocationFacility 和 LocationZip;研究只要有任一地点匹配即视为匹配。支持普通词以及 AND/OR/NOT。`[ ]` 仅可用于 AREA[FieldName]value 或 RANGE[min, max] 表达式;此参数接受这类表达式,单独出现的方括号会导致失败。匹配时,`( )` 用于组合子表达式;`,` 表示 AND。 |
| advancedFilter | string | 否 | 使用 AREA[FieldName]value 语法进行高级筛选。示例:“AREA[StudyType]INTERVENTIONAL”、“AREA[EnrollmentCount]RANGE[100, 1000]”、“AREA[Phase]PHASE2 AND AREA[StudyType]INTERVENTIONAL”、“(AREA[Phase]PHASE3 OR AREA[Phase]PHASE4) AND AREA[StudyType]INTERVENTIONAL”。“AREA[HasResults]true”会限定为已发布结果的研究。AND/OR/NOT 用于连接完整的 AREA[FieldName]value 表达式;圆括号用于组合表达式。调用 clinicaltrials_get_field_definitions 查找兼容 AREA[] 的字段名。 |
| conditionQuery | string | 否 | 按病症/疾病搜索。例如:“Type 2 Diabetes”、“non-small cell lung cancer”。匹配 Condition、BriefTitle、OfficialTitle、ConditionMeshTerm、ConditionAncestorTerm、Keyword 和 NCTId。ConditionAncestorTerm 是研究自身列出的病症所属的 MeSH 上位概念,因此搜索结果范围比这些列表更广——研究可能匹配自身未提及的上位术语。支持普通词以及 AND/OR/NOT。`[ ]` 仅可用于 AREA[FieldName]value 或 RANGE[min, max] 表达式;此参数接受这类表达式,单独出现的方括号会导致失败。匹配时,`( )` 用于组合子表达式;`,` 表示 AND。 |
| interventionQuery | string | 否 | 搜索干预措施/治疗。例如:“pembrolizumab”、“cognitive behavioral therapy”。匹配 InterventionName、InterventionType、ArmGroupType、InterventionOtherName、BriefTitle、OfficialTitle、ArmGroupLabel、InterventionMeshTerm、Keyword、InterventionAncestorTerm、InterventionDescription 和 ArmGroupDescription。InterventionAncestorTerm 是研究自身列出的干预措施所属的 MeSH 上位概念,因此搜索结果范围比这些列表更广。支持普通词以及 AND/OR/NOT。`[ ]` 仅可用于 AREA[FieldName]value 或 RANGE[min, max] 表达式;此参数接受这类表达式,单独出现的方括号会导致失败。匹配时,`( )` 用于组合子表达式;`,` 表示 AND。 |
| includeUnknownEnrollment | boolean | 否 | 包含 EnrollmentCount 为上游“unknown”哨兵值(99999999)的研究。默认排除——该哨兵值会干扰 RANGE[N, MAX] 查询和 EnrollmentCount:desc 排序。设为 true 可用于数据质量审计,或专门查找入组人数未知的研究。 |
详细介绍
clinicaltrialsgov-mcp-server
通过 MCP 搜索 ClinicalTrials.gov 临床试验、获取研究详情和结果,并为患者匹配候选试验。支持 STDIO 或 Streamable HTTP。
概述
搜索 ClinicalTrials.gov 上的 60 多万项研究;该网站是美国国家医学图书馆的临床试验注册平台。获取完整研究记录和已发布的结果、发现字段及其有效值,并将患者资料与招募中的试验进行匹配。无需 API 密钥。
工具
| 工具 | 描述 |
|---|---|
clinicaltrials_search_studies | 搜索研究,支持全文和特定字段查询、状态/阶段/地理位置筛选、分页、排序和字段选择 |
clinicaltrials_get_study_record | 按 NCT ID 获取单项研究——完整方案记录,可选限制地点/结果/参考资料数量 |
clinicaltrials_get_study_count | 快速获取查询对应的研究总数,无需获取数据 |
clinicaltrials_get_field_values | 查找 API 字段的有效值,并显示各值对应的研究数量 |
clinicaltrials_get_field_definitions | 查找有效字段名称——支持关键词搜索、逐级路径查询或顶层概览 |
clinicaltrials_get_study_results | 获取已发布的结果——已完成研究的结局、不良事件、参与者流程和基线数据 |
clinicaltrials_find_eligible | 根据患者的人口统计信息和病情匹配招募中的候选试验,不检查纳入/排除标准 |
资源
| 资源 | 描述 |
|---|---|
clinicaltrials://{nctId} | 按 NCT ID 以 JSON 格式获取单项临床研究,其中列表数量有限,结果以计数代替 |
提示词
| 提示词 | 描述 |
|---|---|
analyze_trial_landscape | 使用计数和搜索工具,引导开展数据驱动的临床试验概况分析 |
功能参考
clinicaltrials_search_studies 工具
- 支持自由文本
query,以及按字段指定的conditionQuery/interventionQuery/locationQuery/sponsorQuery/titleQuery/outcomeQuery、枚举类型的statusFilter/phaseFilter(接受大小写和空格格式的变体)、advancedFilter(AREA[FieldName]value/RANGE[min, max])和geoFilter(distance(lat,lon,radius),带mi/km后缀);pageSize为 1–1000(默认 10;若超过服务端的单页上限,默认 200,则按上限返回一页,并附带truncated/shown/cap);pageToken游标;最多可按 2 个字段进行sort - 默认返回每项研究的精简索引(
nctId、briefTitle、overallStatus、phases、enrollmentCount、hasResults等);fields(PascalCase 叶字段)用于选择完整保真度的投影——完整记录约为 70 KB - 类型化错误:
blank_value、ids_not_found、field_invalid、enum_invalid、query_parse_error、geo_invalid、sort_invalid、page_token_invalid、rate_limited
clinicaltrials_get_study_record 工具
- 根据
nctId获取完整方案记录,可选使用locationLimit、outcomeLimit/referenceLimit,以及nearLocation(lat、lon、radiusMi)对地点列表进行限制和排序——这些参数均无上限;若指定值超过列表长度,则返回整个列表 - 若上限截断了列表,
filtersApplied会报告上游总数;resultsSection会替换为resultsSummary计数。类型化错误:study_not_found、rate_limited
clinicaltrials_get_study_count 工具
- 与
clinicaltrials_search_studies使用相同的查询和筛选参数,仅返回totalCount——不获取研究数据 - 类型化错误:
blank_value、field_invalid、enum_invalid、query_parse_error、rate_limited
clinicaltrials_get_field_values 工具
- 支持一个或多个 PascalCase 格式的
fields(例如OverallStatus、Phase)——返回每个字段的类型及其常见取值和对应的研究计数(API 上限为 250);对于数值和日期字段,返回min/max/avg;对于布尔字段,返回trueCount/falseCount - STRING 字段会额外返回其
longest值;超过 2,000 个字符时会返回带有truncated标记的预览,并附上完整的length,以及说明如何调用clinicaltrials_search_studies获取完整文本的提示。对于 API 不统计不同取值的自由文本字段,会设置uniqueValuesCounted: false,表示其uniqueValuesCount为 0 并非实际计数 multiValued用于标记各取值计数总和可能超过研究总数的字段。类型化错误:blank_value、field_invalid、rate_limited
clinicaltrials_get_field_definitions 工具
mode:search(关键词query,limit默认值为 20,无上限)、drill(点分隔表示法的path)或overview——用于解析fields、advancedFilter、sort和clinicaltrials_get_field_values接受的 PascalCase 名称- 类型化错误:
blank_value、mode_mismatch、mode_requires、path_not_found、rate_limited
clinicaltrials_get_study_results 工具
- 每次调用最多获取 20 个不同
nctIds的结果;更多 ID(最多 500 个条目)会通过deferredNctIds返回;sections(outcomes、adverseEvents、participantFlow、baseline、moreInfo);summary用于精简单项研究结果集(可能超过 500 KB);outcomeLimit/adverseEventLimit,以及可恢复的outcomeOffset/seriousEventOffset/otherEventOffset - 对每项研究分别返回
fetchErrors/studiesWithoutResults,而非导致整个批次失败;若别名 ID 解析为另一项研究,则返回canonicalNctId。类型化错误:blank_value、offset_not_applicable、rate_limited
clinicaltrials_find_eligible 工具
age(整数,0–120),可选ageUnit(默认为years,可选months、weeks、days),适用于婴儿和年幼儿童;sex(FEMALE/MALE/ALL);conditions[];location(必填country,可选state/city);healthyVolunteer;recruitingOnly(默认为 true);maxResults(最多 1000;每次调用最多返回 50 条,其余条目通过truncated/shown/cap和可重放的searchCriteria予以说明);locationLimit(无上限;如果设置的值大于匹配的地点数,则返回所有地点)- 根据年龄、性别、地点、招募状态和模糊条件搜索进行匹配;
funnel会报告各筛选阶段的匹配数量,notice会说明尚未检查纳入/排除标准(使用clinicaltrials_get_study_record查看) - 类型化错误:
blank_value、rate_limited
clinicaltrials://{nctId} 资源
- 完整的方案记录,格式为
application/json,地点、次要/其他结局和参考文献各最多 50 条——由服务端固定限制,无参数 - 结果数据将替换为
resultsSummary计数;truncated和filtersApplied会说明截断了哪些内容,retrieval则列出获取完整数据的工具 - 类型化错误:
study_not_found、rate_limited
analyze_trial_landscape 提示词
- 参数:必填
topic;可选focusAreas(逗号分隔) - 返回一条用户消息,指引 Agent 使用计数、搜索、字段发现和结果工具进行数据驱动的概况分析
功能
基于 @cyanheads/mcp-ts-core 构建:支持 stdio 和 Streamable HTTP 传输、可插拔身份验证(none / jwt / oauth)、可切换存储(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1),以及支持可选 OpenTelemetry 跟踪的结构化日志记录。
ClinicalTrials.gov 专属功能:
- 提供类型安全的 ClinicalTrials.gov REST API v2 客户端——公开使用,无需身份验证或 API 密钥
- 序列化请求队列,强制遵守 ClinicalTrials.gov 约每秒 1 次请求的速率限制;遇到 429/5xx 响应和 HTML 错误页面时会重试并采用指数退避
- 自动修正传入
fields/sort的字段名(大小写、空格、RecruitmentStatus→OverallStatus等旧别名),并记录每次修正 - 地理邻近搜索和最近地点重新排序,无需地理编码依赖
- 默认从搜索和计数中排除“未知”入组人数哨兵值(
99999999);includeUnknownEnrollment可将其重新纳入
面向 Agent 的输出:
- 溯源信息——搜索、计数和资格工具会回显
searchCriteria;如果别名 ID 解析到另一项研究,clinicaltrials_get_study_results会指出canonicalNctId - 优雅处理部分失败——
clinicaltrials_get_study_results会按研究返回fetchErrors/studiesWithoutResults,而不是导致整个批次失败 - 类型化错误——每个工具都会返回
reason代码(study_not_found、blank_value等),有界列表仅在仍有更多条目时才会携带next*Offset - 响应裁剪——搜索和资格工具默认返回精简索引,而非约 70KB 的完整记录
开始使用
公共托管实例
公共实例位于 https://clinicaltrials.caseyjhand.com/mcp,无需安装。通过 Streamable HTTP 将任意 MCP 客户端指向该实例:
{
"mcpServers": {
"clinicaltrialsgov-mcp-server": {
"type": "streamable-http",
"url": "https://clinicaltrials.caseyjhand.com/mcp"
}
}
}
自托管 / 本地
将以下内容添加到 MCP 客户端配置文件中。
{
"mcpServers": {
"clinicaltrialsgov-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["clinicaltrialsgov-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
或使用 npx(无需 Bun):
{
"mcpServers": {
"clinicaltrialsgov-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "clinicaltrialsgov-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
或使用 Docker:
{
"mcpServers": {
"clinicaltrialsgov-mcp-server": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/clinicaltrialsgov-mcp-server:latest"]
}
}
}
如需使用 Streamable HTTP,请设置传输方式并启动服务:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前置条件
- Bun v1.4.0 或更高版本(或 Node.js v24+)。
安装
- 克隆代码库:
git clone https://github.com/cyanheads/clinicaltrialsgov-mcp-server.git
- 进入目录:
cd clinicaltrialsgov-mcp-server
- 安装依赖:
bun install
配置
所有配置均为可选项——服务使用默认值即可运行,无需 API 密钥。
| 变量 | 说明 | 默认值 |
|---|---|---|
CT_API_BASE_URL | ClinicalTrials.gov API 基础 URL。 | https://clinicaltrials.gov/api/v2 |
CT_REQUEST_TIMEOUT_MS | 单次请求超时时间,单位为毫秒;必须为正整数。 | 30000 |
CT_MAX_PAGE_SIZE | clinicaltrials_search_studies 单页返回的研究数量上限;必须为 ≥ 1 的整数,超过 1000 的值会限制为 1000。 | 200 |
MCP_TRANSPORT_TYPE | 传输方式:stdio 或 http。 | stdio |
MCP_HTTP_PORT | HTTP 服务端口。 | 3010 |
MCP_SESSION_MODE | HTTP 会话模式:stateless、stateful 或 auto。 | stateless |
MCP_AUTH_MODE | 身份验证模式:none、jwt 或 oauth。 | none |
MCP_LOG_LEVEL | 日志级别(RFC 5424)。 | info |
LOGS_DIR | 日志文件目录(仅 Node.js)。 | <project-root>/logs |
OTEL_ENABLED | 启用 OpenTelemetry 跟踪。 | false |
OTEL_EXPORTER_OTLP_ENDPOINT | 用于跟踪和指标的 OTLP 基础 URL。 | — |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | 用于导出日志的 OTLP 端点。 | — |
LOG_TOOL_FAILURE_PAYLOADS | 记录每次失败的工具调用参数和结果,按键名进行脱敏,并限制在 LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES 字节以内(默认值为 16384)。自由格式值中的密钥不会脱敏。 | false |
完整的可选覆盖项列表请参阅 .env.example。
运行服务
本地开发
-
构建并运行:
# One-time build bun run rebuild # Run the built server bun run start:http # or bun run start:stdio -
运行检查和测试:
bun run devcheck # Lint, format, typecheck, and security audit bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t clinicaltrialsgov-mcp-server .
docker run --rm -p 3010:3010 clinicaltrialsgov-mcp-server
Dockerfile 默认使用 HTTP 传输、无状态会话模式,并将日志写入 /var/log/clinicaltrialsgov-mcp-server。默认会安装 OpenTelemetry 对等依赖项——构建时使用 --build-arg OTEL_ENABLED=false 可省略这些依赖项。
项目结构
| 目录 | 用途 |
|---|---|
src/index.ts | createApp() 入口点——注册工具、资源和提示词,并初始化 ClinicalTrials.gov 服务。 |
src/config | 使用 Zod 解析和验证服务专用环境变量。 |
src/mcp-server/tools | 工具定义(*.tool.ts)。 |
src/mcp-server/resources | 资源定义(*.resource.ts)。 |
src/mcp-server/prompts | 提示词定义(*.prompt.ts)。 |
src/services/clinical-trials | ClinicalTrials.gov REST API v2 客户端——重试、速率限制、字段搜索、类型。 |
tests/ | 单元测试和集成测试。 |
开发指南
开发指南和架构规则请参阅 CLAUDE.md。简要说明:
- 处理程序抛出异常,由框架捕获——工具逻辑中不要使用
try/catch - 使用
ctx.log记录请求范围内的日志,不要调用console - 通过
src/mcp-server/*/definitions/index.ts中的聚合导出文件注册新工具和资源 - 验证原始 API 响应,将其规范化为领域类型,绝不伪造缺失字段
贡献
欢迎提交问题。提交前请运行检查和测试:
bun run devcheck
bun run test
许可证
Apache-2.0——详情请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。