
Pinecone MCP server を使って Pinecone 自体のドキュメント検索や、ベクトルデータベースからベクトル検索してみた
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
MCP を使っていますでしょうか。
2025年04月21日に Pinecone でも MCP サーバーがリリースされました。
Pinecone MCP server
Pinecone MCP server は名前の通り、 Pinecone の機能やドキュメントにアクセス可能な MCP サーバーです。執筆時点では以下の機能が提供されています。
かなり多機能な MCP サーバーですね。ベクトルデータベースの作成を含めて RAG の機能を利用可能な MCP サーバーのように思えます。
search-docs
list-indexes
describe-index
describe-index-stats
create-index-for-model
upsert-records
search-records
cascading-search
rerank-documents
やってみる
それでは今回はドキュメント検索、インデックスの作成、クエリ実行までやってみます。
前提条件
前提条件として以下の2つが必要です。
- Pinecone API キーを発行しておくこと
- Node.js をインストールし、PATH に node と npx が実行できること
MCP Client への設定
それでは MCP Client へサーバーを利用するよう設定します。ドキュメントでは Cursor と Claude Desktop が紹介されています。
私は Roo Code で実装しました。MCP Server を選択し、グローバル MCP を編集から利用する MCP サーバーを設定します。
Roo Code では MCP Server の設定は mcp_settings.json
から実装します。
{
"mcpServers": {
"pinecone": {
"command": "npx",
"args": [
"-y", "@pinecone-database/mcp"
],
"env": {
"PINECONE_API_KEY": "YOUR_API_KEY"
}
}
}
}
search-docs
まずはドキュメント検索してみましょう。Tools の integrated inference
という表現が気になったので、「Pinecone の世界での integrated inference って何ですか?
」と聞いてみます。クエリを実行する API 利用を求められました。承諾しちゃいましょう。
回答が返ってきていますね。テキストデータの埋め込み(embedding)やリランキング(reranking)といったAI推論処理を、Pineconeのベクトルデータベースの操作と一体化して自動で行う機能
のようです。
Pineconeの「integrated inference(インテグレーテッド・インファレンス)」とは、テキストデータの埋め込み(embedding)やリランキング(reranking)といったAI推論処理を、Pineconeのベクトルデータベースの操作と一体化して自動で行う機能です。
従来はユーザーが自分でテキストを埋め込みモデルでベクトル化し、そのベクトルをPineconeに登録・検索していましたが、integrated inferenceを使うと、
- インデックス作成時に埋め込みモデルを指定
- テキストデータをそのままupsert(登録)するとPineconeが自動でベクトル化
- 検索時もテキストクエリをそのまま渡すだけでベクトル化・検索・リランキングまで一気通貫
つまり、ユーザーはAI推論の実装や管理から解放され、シンプルなAPI操作だけで高機能なベクトル検索が可能になります。
公式ドキュメントにも「embeddingとrerankingがデータベース操作と統合され、追加の手順なしで利用できる」と明記されています。
list-indexes
続いて list-indexes
です。名前の通り、アカウント内にある Pinecone インデックスを一覧化する Tool です。
わかりやすいよう、「Pinecone インデックスを一覧化して
」と質問してみます。こちらもうまく質問の意図を読み取ってくれました。
検索結果もうまく出力されています。
API の実行結果は以下のとおりです。
{
"indexes": [
{
"name": "knowledge-base-us-west-2",
"dimension": 1024,
"metric": "cosine",
"host": "knowledge-base-us-west-2-XXXXXX.svc.XXXXXXXXXXXXXX.pinecone.io",
"deletionProtection": "disabled",
"spec": {
"serverless": {
"cloud": "aws",
"region": "us-west-2"
}
},
"status": {
"ready": true,
"state": "Ready"
},
"vectorType": "dense"
}
]
}
インデックスの情報取得
続いてインデックス情報を取得する、describe-index
と describe-index-stats
です。先ほど出力された knowledge-base-us-west-2
を例に API 実行してみましょう。
「knowledge-base-us-west-2 について教えて
」と実行してみました。まずは describe-index
が実行されていますね。
実行結果は list-indexes
から特定のインデックスを抜き取ったような形でした。
{
"name": "knowledge-base-us-west-2",
"dimension": 1024,
"metric": "cosine",
"host": "knowledge-base-us-west-2-XXXXXX.svc.XXXXXXXXXXXXXX.pinecone.io",
"deletionProtection": "disabled",
"spec": {
"serverless": {
"cloud": "aws",
"region": "us-west-2"
}
},
"status": {
"ready": true,
"state": "Ready"
},
"vectorType": "dense"
}
続いて describe-index-stats
です。こちらは次の API 実行結果を取得していました。
{
"namespaces": {
"": {
"recordCount": 36
}
},
"dimension": 1024,
"totalRecordCount": 36
}
最終的な回答は以下のとおりでした。うまく回答できていますね。
Pineconeインデックス「knowledge-base-us-west-2」の詳細は以下の通りです。
- インデックス名: knowledge-base-us-west-2
- ベクトル次元数: 1024
- 類似度メトリクス: cosine
- ホスト: knowledge-base-us-west-2-XXXXXX.svc.XXXXXXXXXXXXXX.pinecone.io
- 削除保護: 無効
- サーバーレス: AWS us-west-2
- ステータス: Ready(利用可能)
- ベクトルタイプ: dense
- namespace: デフォルト(空文字列)
- 総レコード数: 36件
このインデックスは、1024次元のdenseベクトルをcosine類似度で検索する構成となっており、現在36件のレコードが格納されています。
create-index-for-model
create-index-for-model は、先ほどの integrated inference で提供されるモデルを利用しながら、インデックスを作成します。
シンプルに「Pinecone インデックスを作りたいです。
」と問い合わせしてみました。すると、インデックス名、使用したい埋め込みモデル、テキストフィールド名の組み合わせを求められました。
今回は インデックス名: my-index、埋め込みモデル: multilingual-e5-large、テキストフィールド名: text
を選択しました。
リクエスト
{
"name": "my-index",
"embed": {
"model": "multilingual-e5-large",
"fieldMap": {
"text": "text"
}
}
}
レスポンス
{
"name": "my-index",
"dimension": 1024,
"metric": "cosine",
"host": "my-index-XXXXXX.svc.XXXXXXXXXXXXXX.pinecone.io",
"deletionProtection": "disabled",
"tags": {
"embedding_model": "multilingual-e5-large",
"source": "mcp"
},
"embed": {
"model": "multilingual-e5-large",
"metric": "cosine",
"dimension": 1024,
"vectorType": "dense",
"fieldMap": {
"text": "text"
},
"readParameters": {
"input_type": "query",
"truncate": "END"
},
"writeParameters": {
"input_type": "passage",
"truncate": "END"
}
},
"spec": {
"serverless": {
"cloud": "aws",
"region": "us-east-1"
}
},
"status": {
"ready": true,
"state": "Ready"
},
"vectorType": "dense"
}
コンソールに入るとインデックスが作成されていました。source:mcp
となっていますね。
upsert-records
upsert-records
でレコードの追加を行います。インデックスに "AWS Summit Japan 2025 は 06/25,26 に開催です!"と追加してください
といった内容で問い合わせしました。こちらも upsert-records を利用してレコードの追加を試みています。
Data upserted successfully
と返答が返ってきていますね。
同じように AWS re:Inforce 2025 は 6月16日から18日までの3日間、ペンシルベニア州フィラデルフィアにて開催です!と追加してください。
と AWS re:Invent 2025 は 12月01日から5日にラスベガスで開催です!と追加してください
と投げかけてレコードを登録しました。
検索
最後に検索です。こちらは search-records
を使います。AWS Summit はいつ開催?
と聞いてみます。
スコアから確認したい内容が上位に来ていることがわかります。
最終的な回答も意図した内容になっています。
まとめ
「Pinecone MCP server を使って Pinecone 自体のドキュメント検索や、ベクトルデータベースからベクトル検索してみた」でした。
インデックスの作成からクエリまでのやりとりが MCP 経由で完結しているため、簡単に RAG 作りたいケースだと重宝しそうな予感がしました。
このブログがどなたかの参考になれば幸いです。クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!