Google Books MCP Server

Google Books MCP Server

Enables natural language book searches using the Google Books API to retrieve detailed metadata including titles, authors, publishers, and ISBNs. Supports both Japanese and English queries with configurable result counts.

Category
访问服务器

README

Google Books MCP Server

Google Books APIを使って書籍を自然言語で検索し、ISBN付きの書籍リストを返すMCPサーバです。

機能

  • 自然言語のキーワードで書籍を全文検索(日本語・英語対応)
  • タイトル・著者・出版社・ISBN-13/ISBN-10 を一覧表示
  • 取得件数を 1〜40 件の範囲で指定可能

必要環境

  • Node.js 18 以上(組み込み fetch を使用)
  • Google Books API キー

セットアップ

1. Google Books API キーの取得

  1. Google Cloud Console でプロジェクトを作成
  2. 「APIとサービス」→「ライブラリ」で Books API を有効化
  3. 「APIとサービス」→「認証情報」で APIキー を作成

料金:無料(1日1,000リクエストまで)

2. 依存パッケージのインストールとビルド

cd /Users/makiuchi/Documents/mcpsample
npm install
npm run build

build/index.js が生成されます。

ツール仕様

search_books

パラメータ 必須 デフォルト 説明
query string 自然言語の検索クエリ(例:「Pythonの入門書」)
maxResults number 10 取得件数(1〜40)

出力例:

1. 「入門 Python 3」
   著者: Bill Lubanovic
   出版社: オライリー・ジャパン
   ISBN-13: 9784873117386
   ISBN-10: 4873117380

2. 「Pythonチュートリアル」
   著者: Guido van Rossum
   出版社: Python Software Foundation
   ISBN情報なし

動作確認

MCP Inspector で単体テスト(Claude Desktop不要)

GOOGLE_BOOKS_API_KEY=your_api_key npx @modelcontextprotocol/inspector node build/index.js

ブラウザで Inspector が開くので、search_books ツールを選んでクエリを入力してテストできます。

テストケース

クエリ 期待される結果
Python 入門 書籍リストとISBNが返る
machine learning 英語書籍も検索できる
zzzzzznotexist99999 「見つかりませんでした」メッセージ
(APIキー未設定) 明確なエラーメッセージ

AWS App Runner へのデプロイ

HTTPエンドポイント(/mcp)として公開し、AWS App Runner で稼働させる手順です。

前提条件

  • AWS CLI が設定済みであること(aws configure または --profile 指定)
  • Docker がインストール済みであること
  • 対象リージョン: ap-northeast-1(変更する場合は以下のコマンド内を置き換え)

以降の例では <ACCOUNT_ID> を実際の AWS アカウント ID に読み替えてください。


1. ECR リポジトリ作成

aws ecr create-repository --repository-name mcp-booksearch --region ap-northeast-1

2. IAM ロール作成

App Runner → ECR アクセス用ロール(イメージ取得に使用)

aws iam create-role \
  --role-name AppRunnerECRAccessRole \
  --assume-role-policy-document '{
    "Version":"2012-10-17",
    "Statement":[{
      "Effect":"Allow",
      "Principal":{"Service":"build.apprunner.amazonaws.com"},
      "Action":"sts:AssumeRole"
    }]
  }'

aws iam attach-role-policy \
  --role-name AppRunnerECRAccessRole \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSAppRunnerServicePolicyForECRAccess

App Runner インスタンスロール(Secrets Manager アクセスに使用)

aws iam create-role \
  --role-name AppRunnerInstanceRole \
  --assume-role-policy-document '{
    "Version":"2012-10-17",
    "Statement":[{
      "Effect":"Allow",
      "Principal":{"Service":"tasks.apprunner.amazonaws.com"},
      "Action":"sts:AssumeRole"
    }]
  }'

aws iam put-role-policy \
  --role-name AppRunnerInstanceRole \
  --policy-name SecretsManagerAccess \
  --policy-document '{
    "Version":"2012-10-17",
    "Statement":[{
      "Effect":"Allow",
      "Action":"secretsmanager:GetSecretValue",
      "Resource":"arn:aws:secretsmanager:ap-northeast-1:<ACCOUNT_ID>:secret:mcp-booksearch/*"
    }]
  }'

3. Secrets Manager に API キーを登録

注意: シークレットはプレーンな文字列(キーの値のみ)で保存してください。JSON形式にすると環境変数にJSON文字列がそのまま注入されてしまいます。

aws secretsmanager create-secret \
  --name mcp-booksearch/google-books-api-key \
  --secret-string 'YOUR_GOOGLE_BOOKS_API_KEY' \
  --region ap-northeast-1

作成後に表示される ARN(arn:aws:secretsmanager:...:secret:mcp-booksearch/google-books-api-key-XXXXXX)を手順5で使います。

4. Docker イメージをビルドして ECR にプッシュ

Apple Silicon (M1/M2/M3) の場合は --platform linux/amd64 が必須です。

# ECR にログイン
aws ecr get-login-password --region ap-northeast-1 | \
  docker login --username AWS --password-stdin <ACCOUNT_ID>.dkr.ecr.ap-northeast-1.amazonaws.com

# ビルド・タグ・プッシュ
docker build --platform linux/amd64 -t mcp-booksearch .
docker tag mcp-booksearch:latest <ACCOUNT_ID>.dkr.ecr.ap-northeast-1.amazonaws.com/mcp-booksearch:latest
docker push <ACCOUNT_ID>.dkr.ecr.ap-northeast-1.amazonaws.com/mcp-booksearch:latest

5. App Runner サービス作成

aws apprunner create-service \
  --service-name mcp-booksearch \
  --source-configuration '{
    "ImageRepository": {
      "ImageIdentifier": "<ACCOUNT_ID>.dkr.ecr.ap-northeast-1.amazonaws.com/mcp-booksearch:latest",
      "ImageConfiguration": {
        "Port": "8080",
        "RuntimeEnvironmentSecrets": {
          "GOOGLE_BOOKS_API_KEY": "<SECRET_ARN>"
        }
      },
      "ImageRepositoryType": "ECR"
    },
    "AuthenticationConfiguration": {
      "AccessRoleArn": "arn:aws:iam::<ACCOUNT_ID>:role/AppRunnerECRAccessRole"
    }
  }' \
  --instance-configuration '{
    "Cpu": "0.25 vCPU",
    "Memory": "0.5 GB",
    "InstanceRoleArn": "arn:aws:iam::<ACCOUNT_ID>:role/AppRunnerInstanceRole"
  }' \
  --health-check-configuration '{
    "Protocol": "HTTP",
    "Path": "/health",
    "Interval": 10,
    "Timeout": 5,
    "HealthyThreshold": 1,
    "UnhealthyThreshold": 5
  }' \
  --region ap-northeast-1

デプロイ完了(RUNNING になるまで約5〜8分)を確認:

aws apprunner describe-service \
  --service-arn <SERVICE_ARN> \
  --region ap-northeast-1 \
  --query 'Service.Status' --output text

6. 動作確認

# ヘルスチェック
curl https://<SERVICE_URL>/health
# → {"status":"ok"}

# MCP initialize
curl -X POST https://<SERVICE_URL>/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

# 書籍検索
curl -X POST https://<SERVICE_URL>/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_books","arguments":{"query":"Pythonの入門書","maxResults":3}}}'

7. MCP クライアントへの登録

{
  "mcpServers": {
    "google-books": {
      "url": "https://<SERVICE_URL>/mcp"
    }
  }
}

イメージ更新・再デプロイ

コードを変更した場合は手順4を再実行後、以下で再デプロイします:

aws apprunner start-deployment \
  --service-arn <SERVICE_ARN> \
  --region ap-northeast-1

API キーの更新

aws secretsmanager update-secret \
  --secret-id mcp-booksearch/google-books-api-key \
  --secret-string 'NEW_API_KEY' \
  --region ap-northeast-1

更新後は再デプロイが必要です。


Claude Desktop への登録

~/Library/Application Support/Claude/claude_desktop_config.json に追記します。

{
  "mcpServers": {
    "google-books": {
      "command": "node",
      "args": ["/Users/makiuchi/Documents/mcpsample/build/index.js"],
      "env": {
        "GOOGLE_BOOKS_API_KEY": "your_api_key_here"
      }
    }
  }
}

設定後は Claude Desktop を完全に再起動してください。

登録後は「Pythonの入門書を探して」などと質問するだけで書籍を検索できます。

ファイル構成

mcpsample/
├── src/
│   └── index.ts        # MCPサーバ本体
├── build/              # コンパイル後(git除外)
├── package.json
├── tsconfig.json
└── .gitignore

開発

TypeScriptのウォッチモード(ファイル変更を検知して自動コンパイル):

npm run dev

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选