MCP协议连接器

Pi扩展插件,用于连接MCP(模型上下文协议)HTTP服务器,实现工具自动发现和注册。

  • by ElieMessieCode
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 ElieMessieCode/pi-mcp

使用说明

pi mcp

用于连接MCP(模型上下文协议)HTTP服务器的Pi扩展

特性

  • 通过HTTP/SSE或流式HTTP连接到MCP服务器
  • 服务器上可用的自动发现工具
  • 将MCP工具注册为原生Pi工具
  • 通过斜线命令管理连接
  • 跨会话的持久配置
  • 全局和每个项目的服务器配置

安装

通过npm(推荐)

npm install -g @eliemessiecode/pi-mcp

通过面包

bun install -g @eliemessiecode/pi-mcp

通过Pi

pi install npm:@eliemessiecode/pi-mcp

通过Git

pi install git:github.com/ElieMessieCode/pi-mcp

手册

复制 pi-mcp 文件夹到:

  • ~/.pi/agent/extensions/pi-mcp/ (全球-所有项目)
  • .pi/extensions/pi-mcp/ (项目本地)

用法

命令

命令 描述
/mcp add <name> <url> [options] 添加服务器(选项: --global, --project, --insecure, --timeout)
/mcp remove <name> 删除服务器
/mcp list 列出已配置的服务器(按作用域分组)
/mcp connect [name] 连接到服务器-如果没有名称,则全部连接
/mcp disconnect [name] 断开与服务器的连接-如果没有名称,则全部断开
/mcp tools [name] 列出可用工具
/mcp resources [name] 列出可用资源
/mcp prompts [name] 列出可用提示
/mcp status 显示连接状态
/mcp refresh [name] 刷新工具列表
/mcp scopes 显示配置文件路径
/mcp move <name> --global|--project 在作用域之间移动服务器
/mcp export [file] 将服务器导出为JSON格式
/mcp import <file> 从JSON导入服务器
/mcp-status 快速状态概述
/mcp-logs 查看调试日志
/mcp-logs clear 清除调试日志

例子

添加MCP服务器(全局):

/mcp add my-server https://my-mcp-server.com/mcp

仅为当前项目添加服务器:

/mcp add unity http://localhost:53559 --project

添加具有身份验证的服务器:

/mcp add github https://api.github.com/mcp Authorization=Bearer ghp_xxx

连接到所有服务器:

/mcp connect

使用MCP工具(自动注册):

Tools are automatically registered with the prefix: mcp_<server-name>_<tool-name>

支持的协议

  • 可流式传输的HTTP (推荐):支持SSE的JSON-RPC
  • 上海证券交易所:服务器发送通知事件
  • 简单HTTP:请求响应JSON-RPC

支持的数据类型

MCP工具通过以下方式自动转换为Pi工具:

  • JSON模式到TypeBox参数的转换
  • 支持的类型: string, number, integer, boolean, array, object
  • 自动描述和记录

配置范围

范围 路径 用法
全球 ~/.pi/agent/mcp/servers.json 在所有项目中共享
项目 .pi/mcp/servers.json 针对当前项目

服务器在Pi启动时自动连接。

项目结构

pi-mcp/
├── index.ts           # Main extension
├── package.json       # Package metadata
├── README.md          # This documentation
├── LICENSE            # MIT license
├── CHANGELOG.md       # Version history
└── CONTRIBUTING.md    # Contribution guidelines

兼容MCP服务器示例

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

const server = new McpServer({
  name: "example-server",
  version: "1.0.0",
});

server.tool("get_weather", 
  { city: { type: "string", description: "City name" } },
  async ({ city }) => ({
    content: [{ type: "text", text: `Weather in ${city}: Sunny, 22C` }]
  })
);

server.start(3000);

故障排除

连接失败:

  • 验证URL是否可访问
  • 检查身份验证标头
  • 使用 /mcp status 查看错误

未检测到工具:

  • 使用 /mcp refresh <name> 刷新
  • 验证服务器是否实现 tools/list
  • 如果使用Docker,请检查Docker日志: docker logs <container-name>

请求超时:

  • 默认超时:30秒
  • 检查网络延迟

Pi显示0个工具:

  • 确保Unity编辑器正在运行(适用于Unity MCP)
  • 检查Unity中的MCP插件是否已连接
  • 查看日志: /mcp-logs

路线图

高优先级

  • [x] 服务器宕机时自动重新连接
  • [x] 定期对服务器连接进行健康检查
  • [x] 服务器断开连接时的工具清理

中等优先级

  • [x] MCP资源支持(/mcp resources)
  • [x] MCP提示支持(/mcp prompts)
  • [x] TLS/SSL跳过选项(--insecure)
  • [x] 每台服务器可配置超时(--timeout <ms>)
  • [x] 在作用域之间移动服务器(/mcp move <name> --global|--project)
  • [x] 导出/导入服务器配置

低优先级

  • []服务器组(/mcp group add <name> <server1> <server2>)
  • []工具筛选器(/mcp add x --filter="assets-*")
  • []连接历史记录
  • []使用指标
  • []自定义工具模板

已知Bug

  • []处理URL中的特殊字符
  • []更明确的超时错误消息
  • []支持基本身份验证

贡献

欢迎投稿!

  1. 分叉回购
  2. 创建分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add amazing feature')
  4. 推(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

麻省理工学院-见 许可证 详见


v1.2.0的新增功能

  • 服务器掉线时自动重新连接(最多3次尝试)
  • 服务器连接的定期健康检查(间隔30秒)
  • 服务器断开连接时自动清理工具
  • MCP资源支持
  • MCP提示支持
  • TLS/SSL跳过选项(--insecure)
  • 每台服务器可配置超时(--timeout <ms>)
  • 在作用域之间移动服务器(/mcp move)
  • 导出/导入服务器配置

存储库: github/ElieMessieCode/pi-mcp