MCP服务器工具

一个用于构建和测试Model Context Protocol (MCP)服务器的Python项目,支持本地和远程实现,提供基本工具如echo和add。

  • by ishita-sonawane
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ishita-sonawane/simple-mcp-server

使用说明

简单MCP服务器项目

概述

本项目演示了使用Python构建和测试模型上下文协议(MCP)服务器。它包括具有基本工具的简单MCP服务器的本地(stdio)和远程(SSE)实现。

什么是MCP?

模型上下文协议(MCP)是一种标准化的协议,允许人工智能助手(如克劳德)与外部工具和数据源进行交互。MCP服务器公开了AI模型可以发现和使用的工具。

项目目标

  1. 使用简单的工具(echo、add)构建基本的MCP服务器
  2. 使用MCP Inspector v0.14测试服务器
  3. 远程部署服务器以进行测试
  4. 与Claude Desktop集成以供本地使用

项目结构

mcp-servers/
├── simple_mcp_server.py      # Stdio MCP server (for Claude Desktop)
├── simple_mcp_sse.py          # SSE MCP server (for remote deployment)
├── simple_mcp_http.py         # Basic HTTP API (not MCP protocol)
├── requirements.txt           # Python dependencies
├── runtime.txt               # Python version for deployment
└── README.md                 # This file

先决条件

  • 已安装Python 3.13+
  • 已安装Node.js和npm(用于MCP检查器)
  • Git已安装
  • Claude Desktop(可选,用于本地集成)
  • Render或Vercel帐户(可选,用于部署)

第1部分:构建简单的MCP服务器

1.1安装依赖项

pip install mcp starlette uvicorn sse-starlette

1.2理解服务器代码

这 simple_mcp_server.py 实施:

  • 回声工具:返回前缀为“Echo:”的输入文本
  • 添加工具:将两个数字相加并返回结果

关键部件:

from mcp.server import Server
from mcp.types import Tool, TextContent
import mcp.server.stdio

# Create server instance
server = Server("simple-mcp")

# Define tools
@server.list_tools()
async def list_tools():
    # Returns list of available tools
    
@server.call_tool()
async def call_tool(name: str, arguments: dict):
    # Handles tool execution

1.3本地测试服务器

运行服务器:

python simple_mcp_server.py

服务器将在stdin上等待JSON-RPC消息。测试一下:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | python simple_mcp_server.py

预期输出:具有服务器功能和工具的JSON响应。


第2部分:使用MCP Inspector v0.14进行测试

2.1什么是MCP检查员?

MCP Inspector是一个基于网络的工具,用于测试和调试MCP服务器。它提供了一个用户界面,用于:

  • 连接到MCP服务器
  • 列出可用工具
  • 使用自定义参数执行工具
  • 实时查看响应

2.2安装并运行MCP检查器

无需安装-使用npx:

npx @modelcontextprotocol/inspector@0.14.0

这将:

  1. 下载MCP Inspector v0.14
  2. 启动本地web服务器(通常http://localhost:5173)
  3. 在浏览器中打开检查器

2.3将检查器连接到您的服务器

选项A:自动连接(推荐)

npx @modelcontextprotocol/inspector@0.14.0 python simple_mcp_server.py

选项B:手动连接

  1. 运行检查器: npx @modelcontextprotocol/inspector@0.14.0
  2. 在UI中,配置连接:
    • 运输:stdio
    • 命令: python
    • Args: simple_mcp_server.py

2.4测试工具

在MCP检查器UI中:

  1. 列出工具:单击“列出工具”查看可用工具

  2. 测试回声工具:

    • 选择“回声”工具
    • 输入: {"text": "Hello MCP!"}
    • 点击“执行”
    • 预期产量: "Echo: Hello MCP!"
  3. 测试添加工具:

    • 选择“添加”工具
    • 输入: {"a": 5, "b": 3}
    • 点击“执行”
    • 预期产量: "Result: 8"

第3部分:与Claude Desktop集成

3.1配置克劳德桌面

编辑配置文件:

  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Mac/Linux: ~/.config/Claude/claude_desktop_config.json

添加您的服务器:

{
  "mcpServers": {
    "simple-mcp": {
      "command": "python",
      "args": ["D:\\path\\to\\simple_mcp_server.py"]
    }
  }
}

将路径替换为实际文件位置。

3.2重新启动克劳德桌面

  1. 完全退出Claude Desktop(检查Windows上的任务管理器)
  2. 启动克劳德桌面
  3. 检查开发人员设置以验证服务器是否已连接

3.3使用Claude中的工具

在Claude Desktop中,您现在可以问:

  • “回显文本‘Hello World’”
  • “加42和58”

Claude将自动使用您的MCP服务器工具进行响应。


第4部分:部署到渲染(远程测试)

4.1为什么要远程部署?

远程部署允许:

  • 随时随地测试
  • 与团队成员分享
  • 测试SSE传输(不同于stdio)
  • 模拟生产环境

4.2部署准备

创建requirements.txt:

mcp
starlette
uvicorn
sse-starlette

创建runtime.txt(可选):

python-3.13.5

4.3推送到GitHub

git init
git add simple_mcp_sse.py requirements.txt runtime.txt
git commit -m "Initial commit: Simple MCP SSE server"
git branch -M main
git remote add origin https://github.com/yourusername/simple-mcp-server.git
git push -u origin main

4.4渲染部署

  1. 首选https://dashboard.render.com
  2. 点击“新建+”→ “Web服务”
  3. 连接您的GitHub存储库
  4. 配置:
    • 名字: simple-mcp-sse
    • 环境: Python 3
    • 生成命令: pip install -r requirements.txt
    • 开始命令: python simple_mcp_sse.py
    • 实例类型:免费
  5. 点击“创建Web服务”
  6. 等待2-5分钟进行部署

4.5测试已部署的服务器

获取渲染URL(例如。, https://simple-mcp-sse-xxxx.onrender.com)

测试健康终点:

curl https://your-app.onrender.com/health

预期产量: OK

4.6 MCP检验员测试

您可以使用MCP Inspector测试远程服务器,但请注意,Claude Desktop不直接支持远程SSE URL。


故障排除

服务器未启动

  • 检查Python版本: python --version (应为3.13+)
  • 验证依赖关系: pip list | grep mcp
  • 检查服务器文件中的语法错误

克劳德桌面未显示服务器

  • 验证配置文件路径和JSON语法
  • 在配置中使用绝对路径
  • 完全退出并重新启动Claude Desktop
  • 检查Python路径是否正确

MCP检查器连接失败

  • 确保服务器文件路径正确
  • 检查Python是否在您的PATH中
  • 请先尝试手动运行服务器以检查错误

渲染部署失败

  • 检查渲染日志中的特定错误
  • 验证requirements.txt是否包含所有依赖项
  • 确保服务器绑定到 0.0.0.0 不 localhost
  • 检查是否使用了PORT环境变量

关键概念

MCP协议版本

  • 本项目使用MCP协议版本 2024-11-05
  • Python MCP库版本: 1.26.0

运输类型

  • 标准:标准输入/输出(适用于Claude Desktop等本地工具)
  • 上海证券交易所:服务器通过HTTP发送事件(用于远程服务器)
  • 超文本传输协议:基本HTTP API(不是MCP协议)

工具架构

工具使用JSON模式定义参数:

Tool(
    name="echo",
    description="Echo back the input text",
    inputSchema={
        "type": "object",
        "properties": {
            "text": {"type": "string"}
        },
        "required": ["text"]
    }
)

后续步骤

  1. 添加更多工具:使用附加功能扩展服务器
  2. 添加身份验证:为远程服务器实现API密钥身份验证
  3. 添加资源:通过MCP公开数据源(文件、数据库)
  4. 添加提示:定义可重用的提示模板
  5. 错误处理:改进错误消息和验证
  6. 日志记录:添加用于调试的全面日志记录

资源


许可证

麻省理工学院许可证-您可以自由使用和修改您的项目。


版本历史记录

  • v0.13:带有echo和添加工具的初始简单MCP服务器
  • v0.14:添加了对远程部署的SSE支持
  • v1.0:生产准备就绪,文件齐全

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

支持

对于问题或疑问:

  • 检查故障排除部分
  • 审查MCP文件
  • 在GitHub上打开一个问题