模型上下文协议示例

提供多种格式的最小化模型上下文协议(MCP)示例实现,包括命令行、HTTP SSE、NPM包、Pip包和Docker镜像。

  • by haixuxu
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 haixuxu/mcp-examples

使用说明

MCP 示例

此存储库包含以五种格式实现的最小模型上下文协议(MCP)示例:

  1. 命令(标准输入输出)- command/
  2. HTTP (SSE) - 服务器发送事件(Server-Sent Events) http_sse/
  3. NPM 包(stdin/stdout)- npm_package/
  4. Pip 包(标准输入/标准输出)- pip_package/
  5. Docker 镜像(stdio + HTTP 健康检查) docker_example/

快速入门

  • 命令(标准输入输出)
# say hello
echo '{"tool":"hello","input":{"name":"Alice"}}' | node command/cli.js
  • HTTP(SSE)
node http_sse/server.js
node http_sse/client.js hello '{"name":"Alice"}'
  • NPM 包
echo '{"tool":"echo","input":{"foo":"bar"}}' | node npm_package/cli.js
  • Pip 包
echo '{"tool":"hello","input":{"name":"Alice"}}' | python3 -m mcp_example
  • Docker 镜像
# build
docker build -t mcp-example-docker ./docker_example
# health server
docker run --rm -p 8080:8080 mcp-example-docker
# stdio use
echo '{"tool":"ping"}' | docker run --rm -i mcp-example-docker

CLI/命令行使用注意事项:

  • 所有 stdio 示例都期望从标准输入(stdin)接收一个单独的 JSON 对象,并且会向标准输出(stdout)发送一个 JSON 对象。

  • 小心使用shell引号。示例模式:

    • POSIX shell 单引号方法:
      echo '{"tool":"hello","input":{"name":"Alice"}}' | node command/cli.js
      
    • 使用辅助节点客户端可以避免在某些演示中手动添加JSON引号(参见 command/test-client.js 并且 http_sse/client.js)。

如果你愿意,我也可以添加一些小型的shell包装脚本(bin/),或者让示例接受NDJSON(换行分隔的JSON)以处理多请求。

备注

  • 这些示例经过精心简化,旨在展示针对多芯片封装(MCPs)的不同包装和运输选项。
  • 基于stdio的示例期望从标准输入(stdin)接收一个单独的JSON请求,并向标准输出(stdout)发送一个单独的JSON响应。
  • HTTP SSE 示例展示了如何通过 SSE 连接进行流式响应。