Token导航 LogoToken导航TokenDH.com
Poc MCP Python logo
运维云端未说明官方级别未说明来源级核验

Poc MCP Python

MCP Server

一个基于Python的MCP(Model Context Protocol)服务器,作为HTTP API和MCP客户端之间的桥梁,支持通过JSON文件定义工具、资源和提示,无需手动编程端点。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
HTTP服务器协议转换Python

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

rpopuc

提供方

rpopuc

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

⚠️ 重要通知

这个仓库是……的一部分 实验研究 关于使用…… 使用Python创建一个通用的MCP服务器,能够服务 *工具*, *资源* e *提示(词)* 通过JSON以声明式的方式。

此处包含的代码和示例 不应在生产中使用。 没有稳定性、安全性、兼容性或维护方面的保证。 使用后果自负。

MCP HTTP 中心(或“集线器”)

服务器 MCP(模型上下文协议) 在Python中,作为...作用的 HTTP API与MCP客户端之间的通用网关 (如ChatGPT、Copilot或其他支持该协议的应用程序)。

允许定义 *工具*, *资源* e *提示* 在JSON文件中——无需手动编写端点代码。 支持:

  • 电话 HTTP(超文本传输协议) (GET, POST, PUT 等)
  • 发送 表单编码(form-urlencoded) e multipart/form-data
  • 答案 JSON(JavaScript Object Notation,JavaScript对象表示法)文本 或者 二进制的
  • 认证(Bearer、API密钥、Basic、OAuth2客户端凭据)
  • 带有变量的占位符{id}{token}
  • JSON响应中的过滤器
  • 通过(某种方式/途径)进行配置 .env

______________________________________________________________________

📦 安装

docker-compose up -d

之后,需要在容器内部安装依赖项:

docker-compose exec --user 1000 app bash -c 'pip install -r requirements.txt'

______________________________________________________________________

🧩 设置 .env

创建一个文件 .env 在项目根目录下(或复制到 .env.example):

# Servidor MCP
HOST=0.0.0.0
PORT=8030
SERVER_NAME=MCP-HTTP-Hub

# Arquivos de definição
TOOLS_FILE=config/tools.json
PROMPTS_FILE=config/prompts.json
RESOURCES_FILE=config/resources.json

# HTTP padrão
HTTP_TIMEOUT=15
HTTP_VERIFY_SSL=false
MAX_MULTIPART_MB=25

# Logs
LOG_LEVEL=debug

# Tokens de exemplo
API_TOKEN=seu_token_aqui
MAPS_KEY=chave_googlemaps
CRM_CLIENT_ID=abc123
CRM_CLIENT_SECRET=def456

______________________________________________________________________

🚀 执行

docker-compose exec app python mcp-server.py

预期输出:

DEBUG:    Carregando tools de config/tools.json
DEBUG:    Tool carregada: product-details - Obtém informações de um produto
INFO:     Started server process [53]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8030 (Press CTRL+C to quit)

______________________________________________________________________

🧠 概念

每种定义都从一个JSON文件中读取:

类型功能
工具可操作的活动(HTTP调用、API)
资源 可通过URI查询的端点content://...)
提示(或触发词)文本消息模型(本地或HTTP)

______________________________________________________________________

🔧 定义工具

文件: config/tools.json

每个工具都是一个具有以下属性的对象:

字段描述
name 工具的唯一名称
description简要描述
args参数和类型 (intstrboolfloat
httpHTTP 配置(详情如下)

示例1 — 简单的GET请求

[
  {
    "name": "mystore-produto",
    "description": "Busca informações de produto",
    "args": { "codigo": "str" },
    "http": {
      "method": "GET",
      "url": "https://api.my.store/products/{codigo}",
      "response": "json"
    }
  }
]

示例2 — 使用POST方法 form-urlencoded

[
  {
    "name": "login",
    "description": "Autentica o usuário no serviço X",
    "args": { "username": "str", "password": "str" },
    "http": {
      "method": "POST",
      "url": "https://example.com/api/login",
      "form": {
        "user": "{username}",
        "pass": "{password}"
      },
      "response": "json"
    }
  }
]

示例3 — 文件上传(多部分)

[
  {
    "name": "upload-avatar",
    "description": "Envia um avatar de usuário",
    "args": { "user_id": "int", "path": "str" },
    "http": {
      "method": "POST",
      "url": "https://api.example.com/users/{user_id}/avatar",
      "multipart": {
        "avatar": {
          "file": "{path}",
          "filename": "avatar-{user_id}.png",
          "content_type": "image/png"
        },
        "note": "Upload via MCP"
      },
      "response": "json"
    }
  }
]

______________________________________________________________________

📚 定义资源

文件: config/resources.json

嗯 *资源* 由URI读取 content://...可以带有参数:

[
  {
    "uri": "content://my.store/produto/{codigo}",
    "description": "Detalhe do produto por código",
    "args": { "codigo": "str" },
    "http": {
      "method": "GET",
      "url": "https://api.my.store/products/{codigo}",
      "response": "json"
    }
  }
]

______________________________________________________________________

💬 定义提示词

文件: config/prompts.json

示例1 — 静态文本

[
  {
    "name": "saudacao",
    "description": "Mensagem de boas-vindas",
    "text": "Olá! Em que posso ajudar hoje?"
  }
]

示例2 — 带有参数的模板

[
  {
    "name": "pergunta",
    "description": "Gera uma pergunta com base em um tema",
    "content": "Qual a sua opinião sobre {tema}?",
    "params": ["tema"]
  }
]

示例3 — 通过HTTP进行动态提示

[
  {
    "name": "noticias",
    "description": "Obtém manchetes de tecnologia",
    "http": {
      "method": "GET",
      "url": "https://api.example.com/news?topic=tech",
      "response": "json"
    },
    "render": {
      "mode": "text",
      "template": "Principais manchetes: {titles}"
    }
  }
]

______________________________________________________________________

🔐 认证 (http.auth)

钥匙 auth 可以在任何区块内添加 "http"。 它支持四种主要类型:

类型描述
bearer 简单令牌(Authorization: Bearer ...)
api_key在头部或查询字符串中的键
basic基本HTTP认证
oauth2_client_credentials带令牌缓存的完整OAuth2流程

______________________________________________________________________

1️⃣ 持有者令牌(Bearer Token)

"auth": {
  "type": "bearer",
  "token_env": "API_TOKEN"
}

或者使用论据:

"auth": {
  "type": "bearer",
  "token_template": "{token}"
}

______________________________________________________________________

2️⃣ API密钥

头球

"auth": {
  "type": "api_key",
  "in": "header",
  "name": "X-API-Key",
  "value_env": "API_KEY"
}

查询字符串:

"auth": {
  "type": "api_key",
  "in": "query",
  "name": "key",
  "value_env": "MAPS_KEY"
}

______________________________________________________________________

3️⃣ 基本认证

"auth": {
  "type": "basic",
  "username_env": "BASIC_USER",
  "password_env": "BASIC_PASS"
}

______________________________________________________________________

4️⃣ OAuth2 客户端凭据

具有自动缓存和在收到401响应时刷新的功能:

"auth": {
  "type": "oauth2_client_credentials",
  "token_url": "https://auth.example.com/oauth/token",
  "client_id_env": "CRM_CLIENT_ID",
  "client_secret_env": "CRM_CLIENT_SECRET",
  "scope": "contacts.read",
  "audience": "https://api.crm.example.com/",
  "timeout": 10
}

Token 已获取,并已缓存 expires_in - 30s并重复使用直到过期。

______________________________________________________________________

⚡️ 快速小贴士

  • 占位符: {variavel} 它被上下文值(参数 + 环境)所替代。
  • JSON过滤器: "filter": {"where_contains": {"campo": "{q}"}} 过滤结果。
  • 表格: "form"application/x-www-form-urlencoded
  • 文件"multipart"multipart/form-data.
  • SSL 自签名证书: HTTP_VERIFY_SSL=false 忽略验证。
  • 日志LOG_LEVEL=debug 显示加载和请求的详细信息。

______________________________________________________________________

🧪 测试中

工具列表:

http POST http://localhost:8030/mcp \
    jsonrpc=2.0 id:=1 \
    method=tools/list

召唤一个工具:

http POST http://localhost:8030/mcp \
    jsonrpc=2.0 id:=2 \
    method=tools/call \
    params:='{"name":"product-details","arguments":{"codigo":"ABC123"}}'

在目录内 tests 有一些带有使用示例的Bash脚本。

______________________________________________________________________

🛠️ 许可证

MIT(麻省理工学院)——免费使用和修改。

目录标签

目录标签

HTTP服务器协议转换Python本地部署API桥接JSON配置自动化工具

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP