gomcptest: Proof of Concept for MCP with Custom Host
一个概念验证,展示了一个自定义构建的宿主,该宿主实现了与 OpenAI 兼容的 API,并集成了 Google Vertex AI、函数调用以及与 MCP 服务器的交互。
owulveryck
README
gomcptest:使用自定义主机进行 MCP 的概念验证
本项目是一个概念验证 (POC),演示了如何使用自定义构建的主机来实现模型上下文协议 (MCP),以便与代理系统进行交互。代码主要从头开始编写,以清晰地了解底层机制。
请访问实验性网站以获取文档(自动生成):https://owulveryck.github.io/gomcptest/
目标
本项目的主要目标是通过模型上下文协议轻松测试代理系统。例如:
- 可以专门化
dispatch_agent
来扫描代码库中的安全漏洞 - 创建代码审查代理,可以分析拉取请求中的潜在问题
- 构建数据分析代理,可以处理和可视化复杂的数据集
- 开发自动化文档代理,可以从代码生成全面的文档
可以使用此存储库中提供的工具轻松测试和迭代这些专门的代理。
前提条件
- Go >= 1.21
- 访问 Google Cloud Platform 上的 Vertex AI API
github.com/mark3labs/mcp-go
这些工具使用 gcloud auth login
配置的默认 GCP 登录凭据。
项目结构
host/openaiserver
: 实现一个自定义主机,该主机使用 Google Gemini 和函数调用来模拟 OpenAI API。这是 POC 的核心。tools
: 包含各种与 MCP 兼容的工具,可以与主机一起使用:- Bash: 执行 bash 命令
- Edit: 编辑文件内容
- GlobTool: 查找与 glob 模式匹配的文件
- GrepTool: 使用正则表达式搜索文件内容
- LS: 列出目录内容
- Replace: 替换整个文件内容
- View: 查看文件内容
组件
主要特性
- OpenAI 兼容性: 该 API 旨在与 OpenAI v1 聊天完成格式兼容。
- Google Gemini 集成: 它利用 VertexAI API 与 Google Gemini 模型进行交互。
- 流式传输支持: 服务器支持流式传输响应。
- 函数调用: 允许 Gemini 调用外部函数并将结果合并到聊天响应中。
- MCP 服务器交互: 演示与假设的 MCP(模型控制平面)服务器的交互以执行工具。
- 单次聊天会话: 应用程序使用单次聊天会话,新的对话不会触发新的会话。
构建工具
您可以使用包含的 Makefile 构建所有工具:
# 构建所有工具
make all
# 或构建单个工具
make Bash
make Edit
make GlobTool
make GrepTool
make LS
make Replace
make View
配置
读取 bin
目录中的 .envrc
文件以设置所需的环境变量:
export GCP_PROJECT=your-project-id
export GCP_REGION=your-region
export GEMINI_MODELS=gemini-2.0-flash
export IMAGEN_MODELS=imagen-3.0-generate-002
export IMAGE_DIR=/tmp/images
测试 CLI
您可以从 bin
目录中使用以下命令测试 CLI(类似于 Claude Code 的工具):
./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./dispatch_agent -glob-path .GlobTool -grep-path ./GrepTool -ls-path ./LS -view-path ./View;./Bash;./Replace"
注意事项
⚠️ 警告:这些工具能够执行命令和修改系统上的文件。最好在 chroot 或容器环境中使用它们,以防止对系统造成潜在损害。
快速入门
本指南将帮助您快速运行位于 host/openaiserver
目录中的 openaiserver
。
前提条件
- 已安装并配置 Go。
- 已正确设置环境变量。
运行服务器
-
导航到
host/openaiserver
目录:cd host/openaiserver
-
设置所需的环境变量。有关环境变量的详细信息,请参阅配置部分。一个最小的例子:
export IMAGE_DIR=/path/to/your/image/directory export GCP_PROJECT=your-gcp-project-id export IMAGE_DIR=/tmp/images # 目录必须存在
-
运行服务器:
go run .
或
go run main.go
服务器将启动并在配置的端口(默认:8080)上侦听。
配置
openaiserver
应用程序使用环境变量进行配置。支持以下变量:
全局配置
变量 | 描述 | 默认值 | 是否必需 |
---|---|---|---|
PORT |
服务器侦听的端口 | 8080 |
否 |
LOG_LEVEL |
日志级别(DEBUG、INFO、WARN、ERROR) | INFO |
否 |
IMAGE_DIR |
存储图像的目录 | 是 |
GCP 配置
变量 | 描述 | 默认值 | 是否必需 |
---|---|---|---|
GCP_PROJECT |
Google Cloud 项目 ID | 是 | |
GEMINI_MODELS |
以逗号分隔的 Gemini 模型列表 | gemini-1.5-pro,gemini-2.0-flash |
否 |
GCP_REGION |
Google Cloud 区域 | us-central1 |
否 |
IMAGEN_MODELS |
以逗号分隔的 Imagen 模型列表 | 否 | |
IMAGE_DIR |
存储图像的目录 | 是 | |
PORT |
服务器侦听的端口 | 8080 |
否 |
备注
- 这是一个 POC,存在局限性。
- 提供的代码按原样提供,仅用于教育目的,以了解如何使用自定义主机实现 MCP。
推荐服务器
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

Nefino MCP Server
为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。
Vectorize
将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。
Mathematica Documentation MCP server
一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。
kb-mcp-server
一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。
Research MCP Server
这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

Cryo MCP Server
一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。