mcpField
S
Sports Hub

Sports Hub

本地服务
github.com/lacausecrypto游戏娱乐402 周前更新

关于 Sports Hub

Sports Hub 是一款 MCP 服务,将 42 个体育 API 提供方整合到一个服务中,提供覆盖 70 多种运动的比分、统计和赔率工具,适合需要体育数据的 MCP 客户端。提供方可按需加载,许多提供方无需 API 密钥即可使用。

主要功能

  1. 01整合 42 个体育 API 提供方
  2. 02提供覆盖 70 多种运动的 410 个工具
  3. 03涵盖比分、统计和赔率
  4. 04支持选择提供方及预设
  5. 05筛选字段并限制响应大小
  6. 06提供 stdio 和 HTTP/SSE 传输

适用场景

  1. 01查询多种运动的比分
  2. 02比较受支持提供方的赔率
  3. 03查询国际象棋、电竞或赛车数据
  4. 04让 MCP 客户端连接选定的体育 API

MCP 相关

通过 stdio 或 HTTP/SSE 向 MCP 客户端提供体育数据工具。默认预设加载 19 个提供方;也可选择其他提供方,需要 API 密钥的仅限相应提供方。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"lacausecrypto-sports-hub": {
"command": "npx",
"args": [
"-y",
"mcp-sports-hub"
],
"env": {
"SPORTS_HUB_PROVIDERS": "<SPORTS_HUB_PROVIDERS>",
"API_SPORTS_KEY": "<API_SPORTS_KEY>",
"PANDASCORE_TOKEN": "<PANDASCORE_TOKEN>",
"THE_ODDS_API_KEY": "<THE_ODDS_API_KEY>"
}
}
}
}
启动命令npx -y mcp-sports-hub
需要配置的环境变量
SPORTS_HUB_PROVIDERSComma-separated provider names or a preset (free, us-major, soccer, f1, motorsport, esports, odds, cricket, golf, chess, all). Omit to load the free preset (19 no-key providers).
API_SPORTS_KEY密钥API-Sports key (free at api-sports.io)
PANDASCORE_TOKEN密钥PandaScore esports token (free at pandascore.co)
THE_ODDS_API_KEY密钥The Odds API key (free at the-odds-api.com)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-sports-hub1.4.1

工具

165

收录的工具列表 · 更新于 2 周前

参数类型必填说明
sportstring是运动代码,例如 "football"、"basketball"、"baseball"、"hockey"、"soccer"、"mma"、"golf"、"tennis"、"racing"
leaguestring是联赛代码,例如 "nfl"、"nba"、"mlb"、"nhl"、"wnba"、"college-football"、"mens-college-basketball"、"eng.1"、"usa.1"、"ufc"、"pga"、"atp"、"f1"
datesstring否YYYYMMDD 格式的日期筛选条件(例如 20240115)
limitinteger否要返回的事件的最大数量

详细介绍

体育中心

体育中心 MCP 服务

npm 版本 npm 下载量 CI 许可证

42 个提供商 410 个工具 MCP 注册表

macOS Linux Windows Node.js TypeScript

一个统一的 MCP 服务,将 42 个体育 API 提供商整合为单一服务。410 个工具涵盖比分、统计数据、赔率、电子竞技、大学体育、国际象棋、赛车运动、拳击、AFL 等,覆盖 70 多种体育项目。

每个提供商都可独立运行。你只需为所用的提供商配置 API 密钥。缺少密钥不会阻止服务启动——调用工具时若未提供相应密钥,工具会返回错误。

兼容: Claude ChatGPT Cursor Windsurf Zed Continue Cline

演示

mcp-sports-hub 演示

NBA 比分、英超赔率、网球交锋记录——尽在一个 MCP 服务中。

兼容性

平台
操作系统状态
macOS支持
Linux支持
Windows支持
MCP 客户端
客户端状态备注
Claude Desktop支持Anthropic 桌面应用
Claude Code (CLI)支持claude mcp add
Cursor支持内置 MCP
Windsurf (Codeium)支持内置 MCP
Continue.dev支持开源 AI 助手
Cline支持VS Code 扩展
Zed支持内置 MCP
ChatGPT Desktop支持OpenAI 桌面应用
Gemini CLI支持Google 命令行工具
任意 MCP 客户端支持Stdio + HTTP/SSE 传输

使用 MCP SDK 提供的 stdio 传输。兼容任何大模型(Claude、GPT、Gemini、Llama、Mistral 等)。

要求:Node.js 18+、npm。

提供商(42 个)

即刻可用——无需 API 密钥,无需注册(19 个提供方,约 165 个工具)

这些提供方开箱即用。只需构建并运行。

前缀提供方覆盖范围工具备注
espn_ESPN20 多种体育项目10非官方——可能失效
nhl_NHL Web APINHL13未编写文档,但稳定
mlb_MLB Stats APIMLB/MiLB13官方,未编写文档
f1_Jolpica F1Formula 1(1950 年至今)13由社区维护
openf1_OpenF1F1 实时遥测12仅限比赛周末提供实时数据
openliga_OpenLigaDB德国足球10以 Bundesliga 为主
sportsdb_TheSportsDB40 多种体育项目13自动使用测试密钥,带水印
ncaa_NCAA API大学体育8速率限制为 5 次请求/秒
sportsrc_SportSRC足球、篮球、MMA 及直播流7V1 免费,V2 需要付费密钥
lichess_Lichess国际象棋(用户、顶尖棋手、直播、每日谜题)7每个 IP 约 20 次请求/秒
chesscom_Chess.com国际象棋(个人资料、统计数据、俱乐部、排行榜)7并行调用时会限流
squiggle_SquiggleAFL(澳大利亚足球联盟)6必须使用如实的 UA
motogp_MotoGPMotoGP/Moto2/Moto3/MotoE7非官方——可能失效
formulae_Formula EFormula E7非官方——可能失效
nascar_NASCARNASCAR Cup/Xfinity/Truck3非官方 CDN 数据源
opendota_OpenDotaDota 2 数据分析11每分钟 60 次请求,每月 5 万次
sleeper_SleeperNFL 梦幻体育10每分钟约 1000 次请求
euroleague_EuroLeagueEuroLeague 和 EuroCup 篮球6无密钥数据源
footballdata_uk_Football-Data.co.uk历史足球赛果及赔率2CSV,覆盖 25 个以上联赛

提示:使用 SPORTS_HUB_PROVIDERS=free 仅加载这 19 个提供方(约 165 个工具)。

使用 API 密钥的免费套餐 — 需要注册,无需信用卡(23 个提供商,约 245 个工具)

注册只需 1-2 分钟。所有密钥均免费。

前缀提供商覆盖范围工具免费额度获取密钥
pandascore_PandaScore电子竞技(13 个项目)141000 req/hr注册
apifootball_API-Football足球(960+ 个联赛)15100 req/day注册
apisports_API-Sports9 项运动10100 req/day/sport注册
apitennis_API-Tennis网球(ATP/WTA/ITF)12100 req/day注册
bdl_BallDontLieNBA/NFL/MLB/NHL10Basic tier注册
cricket_CricketData板球10100 req/day注册
entitycricket_Entity Sport板球(250+ 项赛事)12免费计划注册
footballdata_football-data.org足球(12 个联赛)1110 req/min注册
sportmonks_Sportmonks足球123000 req/hr注册
sportsdata_SportsDataIO9 项运动121000 req/mo注册
odds_The Odds API70+ 项运动的赔率9500 req/mo注册
oddsio_Odds-API.io34 项运动的赔率10免费账户注册
sgo_Sports Game Odds55+ 个联赛的赔率10试用注册
lumify_Lumify赔率、盘口变化及 AI 投注分析(8 项运动)14免费试用密钥注册
mma_Fighting TomatoesMMA8200 req/mo注册
livegolf_Live Golf API高尔夫(PGA/DP World)8免费套餐注册
isports_iSportsAPI足球/篮球(亚洲)10免费套餐注册
sportdevs_SportDevs橄榄球/排球/手球12试用注册
msf_MySportsFeedsNFL/NBA/MLB/NHL12免费非商业使用注册
golfcourse_GolfCourseAPI30K+ 个高尔夫球场6300 req/day注册
cfbd_College Football DataNCAA 橄榄球141000 req/mo注册
boxing_Boxing Data API职业拳击(拳手/比赛/头衔)8100 req/mo注册
highlightly_Highlightly多项运动集锦及赔率6100 req/day注册

缺少密钥的提供商不会阻止服务运行 — 仅在调用时返回错误。需要时可逐步注册密钥。

安装

快速开始(npx — 无需安装)
npx mcp-sports-hub
全局安装 npm 包
npm install -g mcp-sports-hub
mcp-sports-hub
从源代码安装
git clone https://github.com/lacausecrypto/mcp-sports-hub.git
cd mcp-sports-hub
npm install
npm run build
MCP Registry

此服务已作为 io.github.lacausecrypto/sports-hub 发布在官方 MCP Registry 上。支持该注册表的 MCP 客户端可以自动发现并安装它。

传输模式

Stdio(默认 — Claude Desktop、Cursor 等)
npx mcp-sports-hub
HTTP/SSE(远程客户端、Web 应用、自定义集成)
# Via flag
npx mcp-sports-hub --http

# Via env
SPORTS_HUB_HTTP=1 SPORTS_HUB_PORT=3000 npx mcp-sports-hub

端点:

  • POST /mcp — MCP 协议(使用 SSE 的 Streamable HTTP)
  • GET /health — 健康检查({"status":"ok","providers":19,"sessions":0,"mode":"session"})

支持 CORS,并通过 mcp-session-id 标头管理多个客户端会话。默认端口:3000。

每个客户端都会获得独立会话,该会话在 initialize 时创建,之后通过其会话 ID 寻址。为包含 165 个工具的 free 预设创建会话约需 90 毫秒,每个客户端只需支付一次,而非每次请求都支付。空闲会话会被回收。

SPORTS_HUB_MAX_SESSIONS=200   # concurrent sessions before new ones get a 503
SPORTS_HUB_SESSION_TTL=1800   # seconds a session may sit idle
SPORTS_HUB_STATELESS=1        # opt out: build a throwaway server per request

SPORTS_HUB_STATELESS=1 适用于负载均衡器后方的多个副本,且无需会话粘性路由的场景。它会在每次调用时支付构建开销,因此单实例更适合使用会话。

⚠ 安全:HTTP 模式默认绑定到 127.0.0.1(环回地址)。设置 SPORTS_HUB_HOST=0.0.0.0 会将未经过身份验证的 MCP 端点暴露给整个网络——任何能够访问该端点的人都可以使用你配置的 API 密钥。DNS 重绑定防护只能阻止来自浏览器的攻击,无法阻止直接客户端。仅可在带身份验证/TLS 的反向代理后暴露该端点。SPORTS_HUB_CORS_ORIGINS 必须列出明确的来源(不接受字面值 *)。

托管(Smithery)

项目包含用于在 Smithery 上通过容器托管的 Dockerfile 和 smithery.yaml。托管端点提供无需密钥的 free 预设,因此客户端无需任何设置即可连接。由于 Smithery 的代理会转发非 localhost 的 Host 标头,部署会设置 SPORTS_HUB_DNS_REBINDING_PROTECTION=0。

SPORTS_HUB_DNS_REBINDING_PROTECTION=0 会禁用 Host/Origin 检查(默认启用)。仅当服务运行在负责路由的可信代理后方时才设置此项——切勿在浏览器可通过 localhost 直接访问的服务上设置。

配置

环境变量

只需设置你要使用的服务提供商对应的密钥:

# Free — no key needed:
# ESPN, NHL, MLB, Jolpica F1, OpenF1, OpenLigaDB, NCAA, TheSportsDB (test key),
# SportSRC (V1), Lichess, Chess.com, Squiggle (AFL),
# MotoGP, Formula E, NASCAR, OpenDota, Sleeper

# Optional (defaults to test key)
export THESPORTSDB_API_KEY="your-key"          # https://www.thesportsdb.com/

# Requires free registration
export PANDASCORE_TOKEN="your-token"            # https://pandascore.co/
export API_SPORTS_KEY="your-key"                # https://api-sports.io/
export API_FOOTBALL_KEY="your-key"              # https://www.api-football.com/
export API_TENNIS_KEY="your-key"                # https://api-tennis.com/
export BALLDONTLIE_API_KEY="your-key"           # https://www.balldontlie.io/
export CRICKETDATA_API_KEY="your-key"           # https://cricketdata.org/
export ENTITY_SPORT_KEY="your-key"              # https://www.entitysport.com/
export FOOTBALL_DATA_API_KEY="your-key"         # https://www.football-data.org/
export SPORTMONKS_API_KEY="your-key"            # https://www.sportmonks.com/
export SPORTSDATA_IO_KEY="your-key"             # https://sportsdata.io/
export THE_ODDS_API_KEY="your-key"              # https://the-odds-api.com/
export ODDS_API_IO_KEY="your-key"               # https://odds-api.io/
export SPORTS_GAME_ODDS_KEY="your-key"          # https://sportsgameodds.com/
export FIGHTING_TOMATOES_API_KEY="your-key"     # https://fightingtomatoes.com/
export LIVE_GOLF_API_KEY="your-key"             # https://livegolfapi.com/
export ISPORTSAPI_KEY="your-key"                # https://www.isportsapi.com/
export SPORTDEVS_API_KEY="your-key"             # https://sportdevs.com/
export GOLFCOURSE_API_KEY="your-key"            # https://golfcourseapi.com/
export MYSPORTSFEEDS_USER="your-user"           # https://www.mysportsfeeds.com/
export MYSPORTSFEEDS_PASS="your-pass"
export CFBD_API_KEY="your-key"                  # https://collegefootballdata.com/key
export LUMIFY_API_KEY="your-key"                # https://lumify.ai/

Windows(PowerShell):

$env:API_SPORTS_KEY = "your-key"
$env:PANDASCORE_TOKEN = "your-token"

Windows(cmd):

set API_SPORTS_KEY=your-key
set PANDASCORE_TOKEN=your-token
响应大小和 fields 参数

体育 API 会返回非常宽泛的对象,而工具返回的每个字节都会占用模型的上下文窗口。单个类似 espn_get_scoreboard 的球队列表约有 300 KB 的 JSON,其中用户真正需要的部分不到 3 KB。

每个工具都接受可选的 fields 参数:以逗号分隔的键名列表,用于保留指定键;匹配会在任意深度进行。没有匹配项的分支会被丢弃,而匹配到的键会保留其完整值。

// espn_get_teams { "sport": "basketball", "league": "nba" }
//   -> 297 KB

// espn_get_teams { "sport": "basketball", "league": "nba",
//                  "fields": "id,abbreviation,displayName,location" }
//   -> 2.9 KB, same 30 teams

如果 fields 没有匹配项,工具会说明这一点,并列出它发现的顶层键,而不是返回空对象。

响应也有大小上限。超出限制时,会缩短负载中最长的列表,直到符合上限(因此 JSON 仍可解析),并附注说明丢弃了多少项。

SPORTS_HUB_MAX_RESULT_BYTES=40000   # default; serialized bytes per tool result
Claude Desktop

配置文件位置:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Linux:~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "sports-hub": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"],
      "env": {
        "PANDASCORE_TOKEN": "your-token",
        "API_SPORTS_KEY": "your-key",
        "THE_ODDS_API_KEY": "your-key"
      }
    }
  }
}

Windows 路径:"args": ["C:/Users/you/mcp-sports-hub/dist/index.js"]

仅包含你需要的服务提供商对应的环境变量。若只使用免费服务提供商,则完全省略 env。

Claude Code(CLI)
claude mcp add sports-hub node /absolute/path/to/mcp-sports-hub/dist/index.js

或者写入 .claude/settings.json:

{
  "mcpServers": {
    "sports-hub": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-sports-hub/dist/index.js"],
      "env": {
        "PANDASCORE_TOKEN": "your-token"
      }
    }
  }
}

服务提供商筛选

默认情况下,只会加载 free 预设(19 个服务提供商、约 165 个工具——无需 API 密钥)。使用 SPORTS_HUB_PROVIDERS 更改加载内容:

# Default — free providers only (no config needed)
npx mcp-sports-hub

# Load ALL 42 providers (410 tools)
SPORTS_HUB_PROVIDERS=all npx mcp-sports-hub

# Use a preset
SPORTS_HUB_PROVIDERS=us-major npx mcp-sports-hub

# Pick specific providers
SPORTS_HUB_PROVIDERS=espn,nhl,odds npx mcp-sports-hub

# Exclude from all (prefix with -)
SPORTS_HUB_PROVIDERS=-sportsdata,-mma npx mcp-sports-hub
预设
预设提供方工具需要密钥?
free(默认)19 个无需密钥的提供方(espn、nhl、mlb、f1、openf1、openliga、sportsdb、ncaa、sportsrc、lichess、chesscom、squiggle、motogp、formulae、nascar、opendota、sleeper、euroleague、footballdatauk)约 165否
all全部 42 个提供方410是(需要密钥的提供方)
chesslichess、chesscom14否
us-majorespn、nhl、mlb、ncaa、cfbd、bdl、msf、nascar、sleeper约 93部分需要
soccerespn、apifootball、footballdata、sportmonks、openliga、sportsrc、footballdatauk、highlightly约 73部分需要
f1f1、openf125否
motorsportf1、openf1、motogp、formulae、nascar约 42否
esportspandascore、opendota25部分需要
oddsodds、oddsio、sgo、lumify43是
cricketcricket、entitycricket22是
golflivegolf、golfcourse14部分需要
缓存

默认情况下,所有 GET 响应都会在内存中缓存 60 秒。这可以避免重复调用和浪费速率限制配额。可通过以下方式配置:

SPORTS_HUB_CACHE_TTL=120  # seconds (0 to disable)

缓存键包含请求身份验证标头的摘要,因此两个 API 密钥不会读取彼此的缓存条目。并发的相同请求会合并为一次上游调用;此外,404/410 响应会被短暂记忆(SPORTS_HUB_NEGATIVE_CACHE_TTL,默认 30s),以避免错误 ID 被反复请求。

速率限制与重试

对于 429 和 5xx 响应,会采用指数退避进行重试;如果上游发送了 Retry-After,则会遵循该值。客户端错误(除 408/425/429 之外的 4xx)和超时不会重试。

SPORTS_HUB_MAX_RETRIES=2        # extra attempts after the first (0 disables)
SPORTS_HUB_RETRY_BASE_MS=300    # backoff base; doubles per attempt

在 Claude Desktop 配置中:

"env": {
  "SPORTS_HUB_PROVIDERS": "us-major",
  "THE_ODDS_API_KEY": "your-key"
}

工具命名

所有工具均遵循 {provider}_{action} 格式:

espn_get_scoreboard        — Live scores (ESPN)
nhl_get_standings          — NHL standings
mlb_get_game_boxscore      — MLB box score
f1_get_race_results        — F1 results (1950+)
openf1_get_laps            — F1 live telemetry
pandascore_get_lives       — Live esports matches
apifootball_get_fixtures   — Soccer fixtures (960+ leagues)
odds_get_odds              — Betting odds (70+ sports)
sportsrc_get_xg_stats      — Expected goals (xG)

MCP 资源与提示词

除了工具,服务还会提供:

资源(可读取的目录,不发起 API 调用):

  • sportshub://providers — 完整的提供方目录(前缀、名称、覆盖范围、所需密钥)
  • sportshub://presets — 所有预设及其加载的提供方
  • sportshub://provider/{key} — 单个提供方的详情(支持密钥自动补全)

提示词(覆盖这 410 个工具的精选斜杠命令工作流):

  • whats-on-today · compare-odds {event} · motorsport-weekend {series} · league-standings {league} · team-deep-dive {team} · f1-race {season} {round}

所有工具均标注为 readOnly / idempotent,客户端可据此跳过确认提示。

架构

src/
├── index.ts                    # Imports + registers all 42 providers; transports
├── shared/
│   ├── http.ts                 # fetchJson, fetchText, buildUrl, toolResult, errorResult
│   │                           #   + retry/backoff, coalescing, keyed cache
│   ├── catalog.ts              # provider catalog + presets (single source of truth)
│   ├── annotations.ts          # central read-only annotations + titles
│   ├── tool-pipeline.ts        # central `fields` param, size cap, empty-result hints
│   ├── projection.ts           # field projection used by the pipeline
│   ├── slim.ts                 # strips $schema boilerplate from tools/list
│   ├── resources.ts            # MCP resources (provider/preset catalogs)
│   └── prompts.ts              # MCP prompts (curated workflows)
└── providers/
    ├── espn.ts                 #  10 tools — no key
    ├── nhl.ts                  #  13 tools — no key
    ├── mlb-stats.ts            #  13 tools — no key
    ├── jolpica-f1.ts           #  13 tools — no key
    ├── openf1.ts               #  12 tools — no key
    ├── openligadb.ts           #  10 tools — no key
    ├── golfcourse.ts           #   6 tools — GOLFCOURSE_API_KEY
    ├── thesportsdb.ts          #  13 tools — optional key
    ├── pandascore.ts           #  14 tools — PANDASCORE_TOKEN
    ├── api-football.ts         #  15 tools — API_FOOTBALL_KEY
    ├── api-sports.ts           #  10 tools — API_SPORTS_KEY
    ├── api-tennis.ts           #  12 tools — API_TENNIS_KEY
    ├── balldontlie.ts          #  10 tools — BALLDONTLIE_API_KEY
    ├── cricketdata.ts          #  10 tools — CRICKETDATA_API_KEY
    ├── entity-sport-cricket.ts #  12 tools — ENTITY_SPORT_KEY
    ├── football-data.ts        #  11 tools — FOOTBALL_DATA_API_KEY
    ├── sportmonks.ts           #  12 tools — SPORTMONKS_API_KEY
    ├── sportsdata-io.ts        #  12 tools — SPORTSDATA_IO_KEY
    ├── the-odds-api.ts         #   9 tools — THE_ODDS_API_KEY
    ├── odds-api-io.ts          #  10 tools — ODDS_API_IO_KEY
    ├── sports-game-odds.ts     #  10 tools — SPORTS_GAME_ODDS_KEY
    ├── lumify.ts               #  14 tools — LUMIFY_API_KEY
    ├── fighting-tomatoes.ts    #   8 tools — FIGHTING_TOMATOES_API_KEY
    ├── live-golf.ts            #   8 tools — LIVE_GOLF_API_KEY
    ├── isportsapi.ts           #  10 tools — ISPORTSAPI_KEY
    ├── sportdevs.ts            #  12 tools — SPORTDEVS_API_KEY
    ├── mysportsfeeds.ts        #  12 tools — MYSPORTSFEEDS_USER/PASS
    ├── sportsrc.ts             #   7 tools — V1 free, V2 needs paid key (not exposed)
    ├── ncaa.ts                 #   8 tools — no key
    ├── cfbd.ts                 #  14 tools — CFBD_API_KEY
    ├── lichess.ts              #   7 tools — no key
    ├── chess-com.ts            #   7 tools — no key
    ├── squiggle.ts             #   6 tools — no key
    ├── motogp.ts               #   7 tools — no key
    ├── formula-e.ts            #   7 tools — no key
    ├── nascar.ts               #   3 tools — no key
    ├── opendota.ts             #  11 tools — no key
    ├── sleeper.ts              #  10 tools — no key
    ├── euroleague.ts           #   6 tools — no key
    ├── football-data-uk.ts     #   2 tools — no key (CSV)
    ├── boxing.ts               #   8 tools — BOXING_DATA_API_KEY
    └── highlightly.ts          #   6 tools — HIGHLIGHTLY_API_KEY

每个提供方都会导出 register(server)。密钥在调用时检查,而非启动时检查。

贡献

  1. Fork 此仓库
  2. 创建导出 register(server: McpServer) 的 src/providers/my-api.ts
  3. 为工具名称添加前缀:myapi_get_something
  4. 在 src/index.ts 中导入并调用
  5. 运行 npm run build 进行验证
  6. 提交 PR

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。