关于 allfeatures
allfeatures 是面向 MCP 客户端和服务端开发者的协议功能展示项目,涵盖多种内容格式、资源、长时间调用及依赖客户端能力的功能;客户端不支持时会明确报错。
主要功能
- 01回显与加法工具
- 02长时间运行操作演示
- 03文本、图像与结构化结果
- 04资源链接与嵌入式资源
- 05采样、根目录与用户询问
适用场景
- 01测试客户端对 MCP 功能的支持
- 02检查能力缺失时的错误
- 03体验图像和资源响应
MCP 相关
通过 stdio MCP 服务暴露演示工具,其中采样、根目录和用户询问功能需要连接的客户端提供相应能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
allfeatures
allfeatures 是 MCP 协议本身的展示项目。它不专注于把一项工作做到极致,而是演示客户端和服务端需要协商一致的各个环节:纯文本结果、图像、注释、嵌入式资源、资源链接、结构化内容、长时间运行的调用,以及只有连接的客户端提供协助才能使用的三项功能——sampling、roots 和 elicitation。如果你正在开发客户端,可以让它连接到 allfeatures,观察各项功能逐一生效(如果客户端不支持某项功能,也会明确报错,不会掩饰失败)。
安装
npx @reneturcios/allfeatures echo hello
或者运行容器镜像:
docker run -i ghcr.io/cloudcorprecords/allfeatures
容器默认启动 MCP 服务(见下文)。传入 CLI 参数即可将其用作 CLI。
CLI
只有两项不依赖客户端也有意义的工具会作为命令提供:
allfeatures echo hello there # hello there
allfeatures add 2 3 # 5
allfeatures add -1.5 0.5 # -1
allfeatures --version # 0.1.0
退出代码:成功时为 0,无法处理参数时为 1(例如,add 收到非数字输入),用法错误时为 2。
MCP 服务
一个二进制文件同时提供两种用途。mcp 子命令会启动一个 stdio MCP 服务:
npx -y @reneturcios/allfeatures mcp
MCP 客户端配置:
{
"mcpServers": {
"allfeatures": {
"command": "npx",
"args": ["-y", "@reneturcios/allfeatures", "mcp"]
}
}
}
工具
| 工具 | 输入 | 返回内容 |
|---|---|---|
echo | message(字符串,必填) | 原样返回该消息,格式为文本。 |
add | a、b(数字,必填) | 以文本形式返回两数之和。 |
longRunningOperation | duration(数字,可选,单位为秒,默认值为 10)、steps(数字,可选,默认值为 5) | 将等待时长分摊到各个步骤中,等待完成后返回一条完成说明。 |
printEnv | — | 以 JSON 文本形式返回服务端进程环境。 |
sampleLLM | prompt(字符串,必填)、maxTokens(数字,可选) | 从客户端的模型采样得到的补全结果(见下文)。 |
getTinyImage | — | 一张 1x1 透明 PNG 图像内容,以及一条简短文本说明。 |
annotatedMessage | messageType("error" / "success" / "debug",必填)、includeImage(布尔值,可选) | 一条文本消息,其注释(受众和优先级)取决于类型;当 includeImage 为 true 时附带微型图像。错误消息面向用户和助手,优先级为 1;成功消息面向用户,优先级为 0.7;调试说明面向助手,优先级为 0.3。 |
getResourceReference | resourceId(数字,必填) | 一个 URI 为 demo://resource/<resourceId> 的嵌入式文本资源。 |
getResourceLinks | count(数字,必填,1–10) | 指定数量的 resource_link 项。超出 1–10 的范围会报错。 |
structuredContent | location(字符串,必填) | 返回该地点的固定示例天气(72°F、晴朗、湿度 45%),以 structuredContent 形式提供,并附带相应的 JSON 文本。 |
listRoots | — | 以 JSON 文本形式返回客户端的 roots(见下文)。 |
startElicitation | — | 返回询问用户简短回复后的结果(见下文)。 |
zip | — | 一个嵌入式 blob 资源(application/zip),内含真实、精简的 ZIP 归档,其中有一个以存储方式保存的文件 hello.txt。该归档逐字节组装而成,包括 CRC32、本地文件头和中央目录,全程不使用归档库。 |
客户端能力工具
sampleLLM、listRoots 和 startElicitation 不能仅由服务端响应:它们会请求连接的客户端执行操作(对模型进行采样、列出 roots、向用户显示提示)。只有客户端在初始化期间声明了相应能力时,allfeatures 才会发送这些请求。如果客户端未声明,工具会返回明确说明这一点的错误结果——服务端绝不会编造看似合理的答案。
开发
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network
npm run dev # run the CLI from source via tsx
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。