Token导航 LogoToken导航

MCP Server · 开发工具

mcproof (Nathanielcaron)

MCProof是一个用于测试MCP服务器的框架,支持工具调用、资源读取和提示获取等功能,适用于开发中的集成测试。

stdio官方级别未说明来源级核验工具 1mcproof
TypeScript自动化测试JavaScript

快速开始

作者 / 组织
nathanielcaron
提供方
nathanielcaron
运行时
Node.js

工具数量

1

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

mcproof (Nathanielcaron) 属于开发工具类 MCP Server,公开资料标注 1 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前要先准备 API Key。

分类

开发工具

传输方式

stdio

认证方式

API Key

部署方式

公开资料未说明

安装与配置

安装命令

npx mcproof test

客户端配置示例

{
  "mcpServers": {
    "mcproof": {
      "command": "npx",
      "args": [
        "mcproof",
        "test"
      ]
    }
  }
}

按公开安装命令拼出来的示例,字段名和参数以仓库 README 为准;带 YOUR_API_KEY 这类占位符的位置记得换成自己的值。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Node.js,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 1 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

详细介绍

MCP防🛡️

MCProof:用于测试MCP服务器的框架

安装

npm install mcproof

快速开始

创建一个 .env.mcproof 项目根目录中的文件:

MCPROOF_BASE_URL=http://localhost:36719
MCPROOF_TIMEOUT_MS=10000
MCPROOF_HEADERS='{ "Authorization": "Bearer integration-token", "x-api-key":"demo-key" }'

编写粒度测试文件,无需任何本地客户端设置:

tools.test.ts

import { expectTool, expectToolCallContent, expectToolCallSuccess, getSharedMcpTestClient } from 'mcproof';

describe('get_current_time', () => {
  const client = getSharedMcpTestClient();

  test('tool is present', async () => {
    await expectTool(client, 'get_current_time');
  });

  test('responds successfully', async () => {
    const result = await client.invokeTool({
      name: 'get_current_time',
      input: { timezone: 'America/New_York' },
    });

    expectToolCallSuccess(result);
    expectToolCallContent(result, expect.objectContaining({
      timezone: 'America/New_York',
    }));
  });

  test('fails when required input is missing', async () => {
    await expectToolCallError(
      client.invokeTool({ name: 'get_current_time', input: {} })
    );
  });
});

resources.test.ts

import {
  expectResource,
  expectResourceReadContent,
  expectResourceReadSuccess,
  getSharedMcpTestClient,
} from 'mcproof';

describe('time_tool_app resource', () => {
  const client = getSharedMcpTestClient();

  test('is available', async () => {
    await expectResource(client, 'ui://time-tool/mcp-app.html', {
      mimeType: 'text/html;profile=mcp-app',
    });
  });

  test('returns content', async () => {
    const result = await client.readResource({ uri: 'ui://time-tool/mcp-app.html' });
    expectResourceReadSuccess(result);
    expectResourceReadContent(result, expect.any(Array));
  });
});

prompts.test.ts

import {
  expectPrompt,
  expectPromptGetContent,
  expectPromptGetSuccess,
  getSharedMcpTestClient,
} from 'mcproof';

describe('time_expert_prompt', () => {
  const client = getSharedMcpTestClient();

  test('is available', async () => {
    await expectPrompt(client, 'time_expert_prompt', {
      argumentCount: 0,
    });
  });

  test('returns messages', async () => {
    const result = await client.getPrompt({ name: 'time_expert_prompt' });
    expectPromptGetSuccess(result);
    expectPromptGetContent(result, expect.any(Array));
  });
});

使用框架CLI运行套件:

npx mcproof test

例如。,

每个CLI测试运行还会在以下目录下编写一个简单的HTML报告 mcproof-reports/ 在您当前的工作目录中。

例如。,

显示已安装的软件包版本:

npx mcproof --version

错误测试

错误断言支持两种模式,但 承诺模式 是默认且最安全的选项。

Promise模式 --直接传递promise,无需等待捕获验证错误:

test('fails when required input is missing', async () => {
  await expectToolCallError(
    client.invokeTool({ name: 'get_current_time', input: {} })
  );
});

test('fails for invalid URI', async () => {
  await expectResourceReadError(
    client.readResource({ uri: 'invalid://uri' })
  );
});

test('fails for unknown name', async () => {
  await expectPromptGetError(
    client.getPrompt({ name: 'unknown_prompt' })
  );
});

同步结果模式 --仅在SDK返回错误结果对象(不抛出)时使用此选项:

test('tool call returns error', async () => {
  const result = await client.invokeTool({ name: 'some_tool', input: { bad: 'input' } });
  expectToolCallError(result, 'MCP error -32602: validation failed');
});

尝试/捕捉模式 --当您有意直接对抛出的错误进行断言时,请使用此选项:

test('tool throws when required input is missing', async () => {
  try {
    await client.invokeTool({ name: 'get_current_time', input: {} });
    throw new Error('Expected invokeTool to throw');
  } catch (error) {
    expect(String(error)).toContain('MCP error -32602');
  }
});

环境配置

  • MCPROOF_BASE_URL:必需的MCP服务器基本URL
  • MCPROOF_TIMEOUT_MS:可选超时(毫秒)
  • MCPROOF_HEADERS:默认标头的可选JSON对象
  • MCPROOF_HEADER_*:可选的每个标头覆盖,例如。 MCPROOF_HEADER_AUTHORIZATION
  • MCPROOF_ENV_FILE:非默认env文件的可选路径

当两者都 MCPROOF_HEADERS 和 MCPROOF_HEADER_* 如果有人在场,个人头球队获胜。

高级用法

import {McpTestClient, validateMcpToolCall, expectToolCallSuccess} from 'mcproof';

const client = new McpTestClient({ baseUrl: 'http://localhost:36719', timeoutMs: 10000 });
client.setAuthHeaders({ Authorization: 'Bearer token', 'x-api-key': 'key' });

const validation = validateMcpToolCall({ name: 'ping', requestId: '1' });
if (!validation.isValid) {
  throw new Error(validation.message);
}

const result = await client.invokeTool({ name: 'ping', requestId: '1' });
expectToolCallSuccess(result);

const resourceResult = await client.readResource({ uri: 'resource://weather/current', requestId: '2' });
const promptResult = await client.getPrompt({
  name: 'summarize.weather',
  arguments: { city: 'Montreal' },
  requestId: '3',
});

console.log('result output', result.output);
console.log('resource output', resourceResult.output);
console.log('prompt output', promptResult.output);

API

  • McpTestClient -具有HTTP MCP集成的核心测试客户端

- connect() - disconnect() - getAuthHeaders() - setAuthHeaders(headers) - clearAuthHeaders() - listTools() - listResources() - listPrompts() - invokeTool(toolCall) - readResource(resourceRead) - getPrompt(promptGet)

  • installSharedMcpTestClient(config)
  • configureSharedMcpTestClient(config)
  • initializeSharedMcpTestClient()
  • getSharedMcpTestClient()
  • disconnectSharedMcpTestClient()
  • resetSharedMcpTestClient()
  • validateMcpToolCall(call) -退货 McpProtocolValidationResult
  • validateMcpToolResult(result) -退货 McpProtocolValidationResult
  • validateMcpResourceRead(read) -退货 McpProtocolValidationResult
  • validateMcpResourceResult(result) -退货 McpProtocolValidationResult
  • validateMcpPromptGet(get) -退货 McpProtocolValidationResult
  • validateMcpPromptResult(result) -退货 McpProtocolValidationResult
  • expectTool(client, toolName)
  • expectResource(client, resourceUri, expected?)
  • expectPrompt(client, promptName, expected?)
  • expectToolCallSuccess(result)
  • expectToolCallError(resultOrInvocation[, expectedMessage])
  • expectToolCallContent(result, expected)
  • expectToolCallMeta(result, expected?)
  • expectResourceReadSuccess(result)
  • expectResourceReadError(resultOrInvocation[, expectedMessage])
  • expectResourceReadContent(result, expected)
  • expectResourceReadMeta(result, expected?)
  • expectPromptGetSuccess(result)
  • expectPromptGetError(resultOrInvocation[, expectedMessage])
  • expectPromptGetContent(result, expected)
  • expectPromptGetMeta(result, expected?)

备注

  • 使用官方的MCP TypeScript SDK客户端和可流式传输的HTTP。
  • 专为无状态HTTP MCP工具而设计。
  • 默认值 mcproof test 命令强制共享客户端工作流按顺序执行Jest。
  • mcproof test 将带时间戳的HTML摘要写入 mcproof-reports/ 带有飞行前发现细节和Jest结果。
  • 手动共享客户端API仍然可用于高级或非标准集成。

工具与能力

工具数量

1

资源数量

0

提示词数量

0

能力标签

MCP测试TypeScript本地部署开发测试集成测试自动化测试

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 1 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Node.js,换机器要重新装一遍。
  • 需要自备API Key,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到API Key的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
mcproof (Nathanielcaron)

MCP World · 本页

1stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

mcproof (Nathanielcaron) 怎么安装?

公开资料给出的安装命令是 npx mcproof test,运行环境为 Node.js。装完后按客户端要求写进 MCP 配置,重启客户端生效。

mcproof (Nathanielcaron) 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Node.js;保存后完全退出客户端再打开,配置才会生效。

mcproof (Nathanielcaron) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

mcproof (Nathanielcaron) 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

mcproof (Nathanielcaron) 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP