MCP测试模拟服务器

一个超级简单的模拟MCP服务器,团队可轻松修改以测试不同工具与代理的交互。

  • by Jacob-Haynes
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Jacob-Haynes/mcp-test-agent

使用说明

用于测试的模拟MCP服务器

一个超级简单的模拟MCP服务器,您的团队可以轻松修改它,与您的代理一起测试不同的工具。

设置

先决条件

安装

  1. 克隆存储库:
git clone https://github.com/Jacob-Haynes/mcp-test-agent.git
cd mcp-test-agent
  1. 创建虚拟环境并安装依赖项:
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -r requirements.txt
  1. 设置环境变量:
cp .env.example .env

编辑 .env 并添加您的凭据:

  • GOOGLE_CLOUD_PROJECT -您的GCP项目ID
  • OPENAI_API_KEY -您的OpenAI API密钥

运行代理

从项目根目录使用ADK web界面启动代理:

adk web

这将启动一个web UI,您可以在其中与配备模拟MCP工具的代理进行交互。

快速开始

代理已配置为在中使用模拟MCP服务器 mock_mcp_server.py。只需运行代理程序,它就可以访问模拟工具!

如何添加/修改工具

打开 mock_mcp_server.py 并寻找 TOOLS 部分。都在那里!

添加新工具

  1. 写下你的工具函数:
async def my_new_tool(param1: str, param2: int) -> str:
    """Your tool logic here"""
    return f"Result: {param1} - {param2}"
  1. 将其添加到工具列表中:
TOOLS = [
    # ... existing tools ...
    (
        my_new_tool,           # Your function
        "my_new_tool",         # Tool name the agent sees
        "Description of what this tool does",
        {
            "type": "object",
            "properties": {
                "param1": {
                    "type": "string",
                    "description": "First parameter"
                },
                "param2": {
                    "type": "number",
                    "description": "Second parameter"
                }
            },
            "required": ["param1", "param2"]
        }
    ),
]

就是这样!重新启动代理,它将具有新工具。

修改现有工具

只需在中直接编辑该函数 mock_mcp_server.py例如,要更改天气响应:

async def get_weather(city: str) -> str:
    # Change this to return whatever you want!
    return f"The weather in {city} is rainy and 45°F"

拆卸工具

只需从中删除或注释掉该工具 TOOLS 列表。

示例工具包括

  • get_weather -返回模拟天气数据
  • 计算 -执行基本的数学运算
  • get_user_info -从字典中返回模拟用户数据
  • send_邮件 -模拟发送电子邮件

测试模拟服务器

您可以直接测试模拟服务器:

python3 mock_mcp_server.py

它将通过stdin/stdout等待MCP命令。

提示

  • 保持工具功能简单且专注
  • 从工具函数返回字符串
  • 使用async/await(只需添加 async 之前 def)
  • 模拟数据可以在函数中硬编码,也可以在文件顶部定义
  • 参数模式遵循JSON模式格式