使用说明
项目简介
本项目是一个基于Model Context Protocol (MCP) 的服务器实现示例,旨在演示如何构建MCP服务器,为AI Agent提供外部数据和功能。本示例包含两个MCP服务器:
- 区块链数据服务器 (mcp_server.py): 提供Metis区块链的区块数据,例如最新的区块号和前一个区块号。
- GitHub组织数据服务器 (github_org_server.py): 提供GitHub组织和仓库的信息,例如列出组织仓库和获取仓库统计数据(星数、Fork数、关注者数)。
通过这两个服务器,展示了MCP服务器如何作为AI Agent的上下文信息提供者,扩展Agent的能力边界。
主要功能点
- 提供区块链数据: 通过 'get_latest_block' 和 'get_previous_block' 工具,Agent可以查询Metis区块链的最新区块号和前一个区块号。
- 提供GitHub数据: 通过 'list_org_repos' 和 'get_repo_stats' 工具,Agent可以查询GitHub组织仓库列表以及特定仓库的统计信息。
- 工具注册机制: 使用 '@mcp.tool()' 装饰器轻松注册工具函数,使其可以通过MCP协议被Agent调用。
- 快速启动: 基于 'FastMCP' 框架,服务器代码简洁易懂,易于快速启动和运行。
安装步骤
- 安装 UV: 根据仓库 'README.md' 的指引安装 UV 包管理器。UV 用于管理Python环境和依赖。
- macOS/Linux: 'curl -LsSf https://astral.sh/uv/install.sh | sh'
- Windows: 参考 UV 官网安装指南。
- 创建项目目录并初始化:
mkdir my_mcp_project cd my_mcp_project uv init - 创建并激活虚拟环境:
uv venv source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows - 安装依赖包:
uv pip install alith web3 requests uv add "mcp[cli]" - 配置 OpenAI API Key: 如果需要运行 'main.py' 中的 AI Agent,需要配置 OpenAI API Key 环境变量。
- Unix/Linux: 'export OPENAI_API_KEY=<your API key>'
- Windows: '$env:OPENAI_API_KEY = "<your API key>"'
服务器配置
MCP客户端(例如 'main.py' 中的 Alith Agent)需要通过 'server_config.json' 文件配置要连接的MCP服务器。以下是 'server_config.json' 文件的内容,它定义了两个MCP服务器的启动配置:
{ "mcpServers": { "blockchain": { "command": "python", "args": [ "mcp_server.py" ], "description": "区块链数据服务器" }, "github": { "command": "python", "args": [ "github_org_server.py" ], "description": "GitHub组织数据服务器" } } }
配置参数说明:
- 'mcpServers': 定义所有MCP服务器的字典。
- '"blockchain"' 和 '"github"': 服务器的名称,客户端通过这些名称引用服务器。可以自定义,需要与客户端代码中的server name保持一致。
- 'command': 启动服务器的命令,通常是 Python 解释器。
- 'args': 传递给启动命令的参数,这里指定了服务器脚本的文件名。
- 'description': (可选) 服务器的描述信息,用于提高配置文件的可读性。
基本使用方法
-
启动 MCP 服务器: 分别在两个终端窗口中运行以下命令,启动区块链数据服务器和 GitHub 组织数据服务器。
python3 mcp_server.py python3 github_org_server.py启动成功后,服务器会打印 "MetisBlockServer running..." 或 "GitHubOrgServer running..." 等信息。
-
运行 AI Agent: 在另一个终端窗口中,运行 'main.py' 启动 AI Agent。
python3 main.pyAgent 启动后,会提示 "Ask me anything about Metis blocks or GitHub repos!".
-
与 Agent 交互: 根据提示,可以向 Agent 提问关于 Metis 区块链或 GitHub 仓库的问题。例如:
- "What is the latest Metis block number?"
- "What was the previous block number?"
- "List repos of organization tensorflow"
- "Stats for repo pytorch/pytorch"
Agent 将调用相应的 MCP 服务器工具获取数据并返回结果。输入 'exit', 'quit', 或 'bye' 可以退出 Agent。
注意: 确保先启动 MCP 服务器,再启动 AI Agent,以便 Agent 可以成功连接到服务器。
信息
分类
网页与API