-
Notifications
You must be signed in to change notification settings - Fork 0
Add Pinecone MCP server with vector database, similarity search, and RAG support #22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a comprehensive Pinecone MCP server for vector database operations, enabling embeddings storage, similarity search, and RAG applications.
- Implements complete Pinecone API coverage with 13 tools for index management, vector operations, and statistics
- Provides serverless and pod-based index support with multiple distance metrics and metadata filtering
- Includes comprehensive documentation, Docker containerization, and test configuration
Reviewed Changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| servers/pinecone/server.py | Core MCP server implementation with all Pinecone API tools and async HTTP client operations |
| servers/pinecone/server.json | Server configuration with metadata, deployment settings, and environment variables |
| servers/pinecone/requirements.txt | Python dependencies for FastMCP, HTTP client, and web server |
| servers/pinecone/README.md | Comprehensive documentation with API examples, best practices, and RAG implementation guide |
| servers/pinecone/test.json | Test configuration for validating core index and vector operations |
| servers/pinecone/Dockerfile | Container configuration for streamable-http deployment |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| params = { | ||
| "ids": ids, | ||
| "namespace": namespace | ||
| } | ||
|
|
||
| response = await client.get( | ||
| f"{index_host}/vectors/fetch", | ||
| headers=get_headers(), | ||
| params=params, |
Copilot
AI
Oct 8, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The params dictionary contains a list in the ids field, but URL parameters typically expect scalar values. This may not serialize correctly for the GET request. Consider using POST with JSON body or proper URL encoding for the list parameter.
| params = { | |
| "ids": ids, | |
| "namespace": namespace | |
| } | |
| response = await client.get( | |
| f"{index_host}/vectors/fetch", | |
| headers=get_headers(), | |
| params=params, | |
| payload = { | |
| "ids": ids, | |
| "namespace": namespace | |
| } | |
| response = await client.post( | |
| f"{index_host}/vectors/fetch", | |
| headers=get_headers(), | |
| json=payload, |
| response = await client.post( | ||
| f"{index_host}/describe_index_stats", | ||
| headers=get_headers(), | ||
| json=payload if filter else None, |
Copilot
AI
Oct 8, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent payload handling: when filter is None, the request sends None as JSON body instead of an empty dict or omitting the body entirely. This could cause API issues. Consider using json=payload or {} or conditional request construction.
| json=payload if filter else None, | |
| json=payload, |
Add Pinecone MCP Server
Vector database for embeddings, similarity search, and RAG (Retrieval Augmented Generation) applications.
Features
Configuration
Use Cases
Key Features
Integration Examples
Validation
✅ All validations pass:
npm run validate-servers