MCP工作区查找器(PoC)
Google Drive、Slack、GitHub 的Model Context Protocol (MCP) 通过搜索横断面CLI 的,之PoC。不使用容器,只在本地运行Typer/Rich 基本REPL 和非交互命令。
前提条件
- 在主机上Python 3.10 已安装以上内容(例如:
pyenv的3.10系)。 - Poetry 的规格化距离的幂函数
pipx install poetry来修改标记元素的显示属性。 - 仅假定本地环境。Docker/不支持容器。
初始设置
- 将显示clone 导航到目录。
- Poetry 的Python 3.10+ 的规格化距离的幂函数
poetry env use python3.10)。 - 安装依赖关系:
poetry install。 - 创建环境文件:
cp .env.example .env至少OPENAI_API_KEY,SLACK_USER_TOKEN,GITHUB_TOKEN,DRIVE_TOKEN_PATH(OAuth 标记文件的路径)。机密信息保持在本地.env和token.json啊gitignore 完成。.env啊 文件存在 单击功能区上--mock未指定、ALLOW_REAL=1、servers.yaml的mode: real中所述修改相应参数的值。 - MCP 部署服务器(Slack/GitHub/Drive)
servers.yaml的设置(详情请参阅“MCP服务器的安装”)。即使令牌或验证文件的路径与默认路径不同servers.yaml进行调试。
MCP 安装服务器
CLI 独立于每个服务MCP 将服务器作为子进程启动。使用以下方法之一准备服务器servers.yaml 来定义自定义外观。
Slack MCP服务器(Go製)
- Go 1.21 准备以上内容。如果未导入macOS 那么
brew install go、Ubuntu 那么sudo apt-get install golang用等放入。go version确认1.21以上,必要的话export PATH="$(go env GOPATH)/bin:$PATH"的~/.zshrc等追记~/go/bin的PATH 贯彻。 - 安装:
go install github.com/korotovsky/slack-mcp-server/cmd/slack-mcp-server@latest - 确定二进制位置:
$(go env GOPATH)/bin/slack-mcp-server(通常是~/go/bin)。GitHub Releases 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。 servers.yaml的,之slack.exec中所述方法的备选方法。
GitHub MCP服务器(TypeScript製)
- Node.js 18+ 准备。
- 建议:npx 执行最新操作\
npx -y @modelcontextprotocol/server-github - pip install github-mcp-server 像...一样的PyPI 因为包不存在npm 进行动态观察时的轴心点。
- 如果想通过定期使用高速启动,则全局安装\
npm install -g @modelcontextprotocol/server-github 的 mcp-server-github 因为进入了servers.yaml 的,之 github.exec 的 mcp-server-github指定(或绝对路径)。
- 验证:PAT 的
GITHUB_TOKEN将条目添加到文档注册表CLI 也GITHUB_TOKEN),模板名称将采用不同的格式。servers.yaml的env:中所述修改相应参数的值。 - 例:
servers.yaml的npx 使用时
github:
exec: npx
args:
- -y
- "@modelcontextprotocol/server-github"
env:
GITHUB_TOKEN: ${GITHUB_TOKEN}Google Drive MCP Server (Node 制)
- Node.js 18+ 准备。
- 执行方法有两种:
- 全局安装: npm install -g @modelcontextprotocol/server-gdrive 之后servers.yaml 的 exec: server-gdrive 视为。 - npx 実行(推奨・更新追従が容易): servers.yaml 设定如下。
exec: npx
args:
- -y
- "@modelcontextprotocol/server-gdrive"- 首次启动前OAuth 在流程中
token.json中所述修改相应参数的值。GDRIVE_OAUTH_PATH=$GOOGLE_CREDENTIALS_PATH GDRIVE_CREDENTIALS_PATH=$DRIVE_TOKEN_PATH npx -y @modelcontextprotocol/server-gdrive auth在浏览器中允许后保存的secrets/token.json的DRIVE_TOKEN_PATH中所述修改相应参数的值。
実环境用の通信情报の取得手顺
ALLOW_REAL=1 且 --mock 未指定的最小烟雾(搜索API 进行动态观察时的轴心点。获取后 .env 和 servers.yaml 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
- Slack(用户令牌/xoxp-)
1. https://api.slack.com/apps创建新的应用程序(可从scratch)。 1. *OAuth和权限* → *用户令牌范围* 的 search:read, channels:history, groups:history, im:history, users:read 中所述修改相应参数的值。 1. *安装到工作区* 查看项目中可用的所有族User OAuth Token(xoxp- ),然后单击.env 的 SLACK_USER_TOKEN= 缺少支持的问题。 1. 任意: curl -H "Authorization: Bearer $SLACK_USER_TOKEN" "https://slack.com/api/search.messages?query=smoke" 在200/ok:true 确认后通信准备完成。
- GitHub (PAT / repo 仅读取)
1. GitHub→ *设置* → *开发人员设置* → *个人访问令牌* 中描述的相应参数的值。 - Fine-grained 是:目标org/repo 的规格化距离的幂函数Repository permissions 的 *内容:只读*, *元数据:只读*, *问题/拉取请求:只读* 设定为程度。 - Classic 如果: repo 授予范围(不需要其他)。 1. 已提交的令牌(ghp_ 或 github_pat_ 以…开头 .env 的,之 GITHUB_TOKEN 中选择所需的墙类型。
- 谷歌云端硬盘(OAuth令牌.json)
1. Google Cloud Console 在中创建项目,然后单击OAuth 设置同意画面(Internal/External中的任一个)。 1. 「API 和服务-在库中 *Google Drive API* 中所述修改相应参数的值。 1. *认证情报* 从OAuth 客户机ID(应用程序类型:桌面),下载的客户端密码 secrets/credentials.json 中选择所需的墙类型。 1. .env 的 GOOGLE_CREDENTIALS_PATH=secrets/credentials.json、DRIVE_TOKEN_PATH=secrets/token.json 选项卡页面上创建或编辑条目servers.yaml 中描述的相应参数的值。 1. 只有第一次在浏览器中实施同意流程 token.json 来定义自定义外观。modelcontextprotocol 的,之PyPI 版中有gdrive 因为不包含服务器,所以公式Node 版本 @modelcontextprotocol/server-gdrive 使用。示例: GDRIVE_OAUTH_PATH=$GOOGLE_CREDENTIALS_PATH GDRIVE_CREDENTIALS_PATH=$DRIVE_TOKEN_PATH npx -y @modelcontextprotocol/server-gdrive auth 已显示URL 批准 secrets/token.json 中所述修改相应参数的值。 1. 为烟雾确定一个可搜索的验证文件夹(已授予访问权限)。
CLI 使用方法
- REPL 启动(TTY):
poetry run python -m app
- 没有实键时,警告后自动回退至拖车。
- 帮助/非交互模式:
poetry run python -m app --help。 - 强制取消:
poetry run python -m app --mock。 - 实API 允许调用:环境变量
ALLOW_REAL=1设置(--mock指定时莫克优先)。在这种状态下servers.yaml的mode: real中描述的相应参数的值.env如果存在,启动时.env求值时使用曲面法线的原始方向。在其他情况下.env将条目添加到文档注册表。
第3阶段:实际环境烟雾(基于接收)步骤总结
启动时Slack/GitHub/Drive 的real 日志中只有一次 real smoke enabled 中描述的相应参数的值。
- 统一材料(所有服务通用)
.env的OPENAI_API_KEY,SLACK_USER_TOKEN(xoxp-),GITHUB_TOKEN(PAT),GOOGLE_CREDENTIALS_PATH,DRIVE_TOKEN_PATH中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。servers.yaml在工作空间的边缘mode的real(保留默认值)OK)。
- Slack/GitHub 的,之auth_files 满足
servers.yaml的,之auth_files的secrets/slack_token.json,secrets/github_token.json求值时使用曲面法线的原始方向。由于当前服务器不使用内容,所以可以通过空文件。
mkdir -p secrets
touch secrets/slack_token.json secrets/github_token.json
chmod 600 secrets/slack_token.json secrets/github_token.json- 服务器安装输出高速缓存时,在放置了上述空文件的状态下
ALLOW_REAL=1 poetry run python -m app如果执行一次(或服务器二进制单体)secrets/*.json中选择另一种天花板类型。
- Drive 准备实际服务器
servers.yaml中描述的相应参数的值。
exec: npx
args:
- -y
- "@modelcontextprotocol/server-gdrive"- 実行
ALLOW_REAL=1 poetry run python -m app(--mock)。
- 确认
- 在启动日志中
real smoke enabled只出一次。 - 模式显示
slack=real, github=real, drive=real的总和。如果有一个缺损mock 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
- 故障排除
- Slack/GitHub 的mock 将显示
secrets/slack_token.json,secrets/github_token.json查看项目中可用的所有族。空文件。 - Drive 的timeout 预安装或
READINESS_TIMEOUT暂时延长,等待首次下载。
如何执行实际环境搜索烟雾(任务3)
使用实际密钥搜索3个服务Tool 一次一次地吸烟CLI 中所述修改相应参数的值。Slack 那么DM/Private 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
- 满足前提
- ALLOW_REAL=1 选项卡页面上创建或编辑条目--mock 不加。 - .env 和 servers.yaml 的明细栏样式中定义的设置。 - GitHub 将条目添加到文档注册表 GITHUB_SMOKE_REPO=owner/repo 中所述修改相应参数的值。 - 可选:如果想改变搜索关键词 SLACK_SMOKE_QUERY / GITHUB_SMOKE_QUERY / DRIVE_SMOKE_QUERY 中所述修改相应参数的值。
- 実行
- 直接実行: poetry run python -m app smoke --report reports/smoke.json - 或包装器: ALLOW_REAL=1 scripts/smoke_real.sh --report reports/smoke.json
- 结果确认
- 成功的时候 real smoke passed 将显示每个服务的 status: ok 和Slack 的,之 dm_hit: true 将条目添加到文档注册表。 - 失败的时候 real smoke failed 查看项目中可用的所有族。结果文件有日期JSON 中选择另一种天花板类型。
笔记本
- 令牌/认证信息保持在本地
.env、token.json、secrets/属下不承诺。 - Docker/不使用容器Poetry 创建的虚拟环境(
.venv或.poetry-env),模板名称将采用不同的格式。 - 没有实际钥匙CI 在进行风的检查的情况下
poetry run pytest -m mock。实际模式的测试ALLOW_REAL=1缺少支持的问题。
