Initial commit
This commit is contained in:
11
.claude-plugin/plugin.json
Normal file
11
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "mcp-integrations",
|
||||
"description": "Integration guides and setup for MCP servers (Database, Vector DB, Cloud Providers, Docker/K8s, GitHub)",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Brock"
|
||||
},
|
||||
"commands": [
|
||||
"./commands"
|
||||
]
|
||||
}
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# mcp-integrations
|
||||
|
||||
Integration guides and setup for MCP servers (Database, Vector DB, Cloud Providers, Docker/K8s, GitHub)
|
||||
449
commands/setup-mcps.md
Normal file
449
commands/setup-mcps.md
Normal file
@@ -0,0 +1,449 @@
|
||||
# MCP Server Integration Guide
|
||||
|
||||
Complete guide for setting up Model Context Protocol (MCP) servers with Claude Code.
|
||||
|
||||
## What are MCP Servers?
|
||||
|
||||
MCP servers provide Claude Code with direct access to external systems and data sources. They enable real-time interaction with databases, cloud providers, Docker/Kubernetes, and more.
|
||||
|
||||
## Available MCP Servers
|
||||
|
||||
### 1. Database MCP
|
||||
Connect to SQL and NoSQL databases for real-time queries and schema exploration.
|
||||
|
||||
### 2. Vector Database MCP
|
||||
Integrate with Pinecone, Weaviate, or Qdrant for AI/ML workflows.
|
||||
|
||||
### 3. Cloud Provider MCPs
|
||||
Direct integration with AWS, GCP, and Azure services.
|
||||
|
||||
### 4. Docker/Kubernetes MCP
|
||||
Manage containers and clusters directly from Claude Code.
|
||||
|
||||
### 5. GitHub MCP
|
||||
Enhanced Git operations, PR reviews, and issue management.
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
```bash
|
||||
# Node.js 18+ required
|
||||
node --version
|
||||
|
||||
# Claude Code CLI
|
||||
claude --version
|
||||
```
|
||||
|
||||
### General MCP Setup
|
||||
|
||||
1. Install MCP server package:
|
||||
```bash
|
||||
npm install -g @modelcontextprotocol/server-{name}
|
||||
```
|
||||
|
||||
2. Configure in Claude Code settings:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"server-name": {
|
||||
"command": "mcp-server-name",
|
||||
"args": ["--config", "path/to/config.json"],
|
||||
"env": {
|
||||
"API_KEY": "your-api-key"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
3. Restart Claude Code to load the MCP server
|
||||
|
||||
## Database MCP Setup
|
||||
|
||||
### PostgreSQL
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-postgres
|
||||
|
||||
# Configure (~/.claude/config.json)
|
||||
{
|
||||
"mcpServers": {
|
||||
"postgres": {
|
||||
"command": "mcp-server-postgres",
|
||||
"args": [],
|
||||
"env": {
|
||||
"DATABASE_URL": "postgresql://user:pass@localhost:5432/dbname"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/query SELECT * FROM users WHERE email = 'test@example.com'
|
||||
/schema users
|
||||
/indexes users
|
||||
```
|
||||
|
||||
### MongoDB
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-mongodb
|
||||
|
||||
# Configure
|
||||
{
|
||||
"mcpServers": {
|
||||
"mongodb": {
|
||||
"command": "mcp-server-mongodb",
|
||||
"env": {
|
||||
"MONGODB_URI": "mongodb://localhost:27017/mydb"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/find users {"email": "test@example.com"}
|
||||
/aggregate users [{"$group": {"_id": "$role", "count": {"$sum": 1}}}]
|
||||
```
|
||||
|
||||
## Vector Database MCP Setup
|
||||
|
||||
### Pinecone
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-pinecone
|
||||
|
||||
# Configure
|
||||
{
|
||||
"mcpServers": {
|
||||
"pinecone": {
|
||||
"command": "mcp-server-pinecone",
|
||||
"env": {
|
||||
"PINECONE_API_KEY": "your-api-key",
|
||||
"PINECONE_ENVIRONMENT": "us-east-1-aws"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/vector-search "machine learning concepts" --top-k 5
|
||||
/upsert-vectors [{"id": "vec1", "values": [...], "metadata": {...}}]
|
||||
/delete-vectors ["vec1", "vec2"]
|
||||
```
|
||||
|
||||
## Cloud Provider MCP Setup
|
||||
|
||||
### AWS
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-aws
|
||||
|
||||
# Configure
|
||||
{
|
||||
"mcpServers": {
|
||||
"aws": {
|
||||
"command": "mcp-server-aws",
|
||||
"env": {
|
||||
"AWS_ACCESS_KEY_ID": "your-access-key",
|
||||
"AWS_SECRET_ACCESS_KEY": "your-secret-key",
|
||||
"AWS_REGION": "us-east-1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/aws s3 ls s3://my-bucket
|
||||
/aws ec2 describe-instances --filters "Name=tag:Environment,Values=production"
|
||||
/aws lambda invoke my-function --payload '{"key": "value"}'
|
||||
/aws rds describe-db-instances
|
||||
```
|
||||
|
||||
### GCP
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-gcp
|
||||
|
||||
# Configure
|
||||
{
|
||||
"mcpServers": {
|
||||
"gcp": {
|
||||
"command": "mcp-server-gcp",
|
||||
"env": {
|
||||
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",
|
||||
"GCP_PROJECT_ID": "my-project"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/gcp compute instances list
|
||||
/gcp storage buckets list
|
||||
/gcp sql instances list
|
||||
```
|
||||
|
||||
## Docker/Kubernetes MCP Setup
|
||||
|
||||
### Docker
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-docker
|
||||
|
||||
# Configure
|
||||
{
|
||||
"mcpServers": {
|
||||
"docker": {
|
||||
"command": "mcp-server-docker",
|
||||
"args": ["--socket", "/var/run/docker.sock"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/docker ps
|
||||
/docker images
|
||||
/docker logs container-name --tail 100
|
||||
/docker exec container-name ls -la
|
||||
/docker stats
|
||||
```
|
||||
|
||||
### Kubernetes
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-kubernetes
|
||||
|
||||
# Configure
|
||||
{
|
||||
"mcpServers": {
|
||||
"k8s": {
|
||||
"command": "mcp-server-kubernetes",
|
||||
"env": {
|
||||
"KUBECONFIG": "~/.kube/config"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/kubectl get pods -n production
|
||||
/kubectl describe deployment myapp
|
||||
/kubectl logs deployment/myapp --tail=100
|
||||
/kubectl get services
|
||||
/kubectl top pods
|
||||
```
|
||||
|
||||
## GitHub MCP Setup
|
||||
|
||||
```bash
|
||||
# Install
|
||||
npm install -g @modelcontextprotocol/server-github
|
||||
|
||||
# Configure
|
||||
{
|
||||
"mcpServers": {
|
||||
"github": {
|
||||
"command": "mcp-server-github",
|
||||
"env": {
|
||||
"GITHUB_TOKEN": "ghp_your_token_here"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
```
|
||||
/gh pr list --repo owner/repo
|
||||
/gh pr view 123
|
||||
/gh pr review 123 --comment "LGTM"
|
||||
/gh issue create --title "Bug" --body "Description"
|
||||
/gh workflow run ci.yml
|
||||
```
|
||||
|
||||
## Security Best Practices
|
||||
|
||||
1. **Store credentials securely**:
|
||||
```bash
|
||||
# Use environment variables
|
||||
export DATABASE_URL="postgresql://..."
|
||||
|
||||
# Or use a secrets manager
|
||||
{
|
||||
"mcpServers": {
|
||||
"postgres": {
|
||||
"command": "mcp-server-postgres",
|
||||
"env": {
|
||||
"DATABASE_URL": "${env:DATABASE_URL}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
2. **Use read-only access when possible**:
|
||||
```sql
|
||||
-- Create read-only database user
|
||||
CREATE USER readonly_user WITH PASSWORD 'secure_password';
|
||||
GRANT CONNECT ON DATABASE mydb TO readonly_user;
|
||||
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
|
||||
```
|
||||
|
||||
3. **Limit permissions**:
|
||||
- Use least privilege principle
|
||||
- Create service accounts with minimal permissions
|
||||
- Regularly rotate credentials
|
||||
|
||||
4. **Monitor usage**:
|
||||
- Log all MCP operations
|
||||
- Set up alerts for unusual activity
|
||||
- Review access logs regularly
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### MCP Server Not Starting
|
||||
```bash
|
||||
# Check if server is installed
|
||||
which mcp-server-postgres
|
||||
|
||||
# Test server manually
|
||||
mcp-server-postgres
|
||||
|
||||
# Check logs
|
||||
tail -f ~/.claude/logs/mcp-server-name.log
|
||||
```
|
||||
|
||||
### Connection Issues
|
||||
```bash
|
||||
# Test database connection
|
||||
psql postgresql://user:pass@localhost:5432/dbname
|
||||
|
||||
# Test API credentials
|
||||
curl -H "Authorization: Bearer $API_KEY" https://api.provider.com/test
|
||||
```
|
||||
|
||||
### Permission Errors
|
||||
- Verify credentials are correct
|
||||
- Check IAM roles/permissions
|
||||
- Ensure firewall allows connections
|
||||
- Verify network connectivity
|
||||
|
||||
## Creating Custom MCP Servers
|
||||
|
||||
### Basic MCP Server Template
|
||||
|
||||
```typescript
|
||||
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
||||
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
||||
|
||||
const server = new Server(
|
||||
{
|
||||
name: 'my-custom-server',
|
||||
version: '1.0.0',
|
||||
},
|
||||
{
|
||||
capabilities: {
|
||||
tools: {},
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
// Define tools
|
||||
server.setRequestHandler('tools/list', async () => {
|
||||
return {
|
||||
tools: [
|
||||
{
|
||||
name: 'my_tool',
|
||||
description: 'Description of what this tool does',
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
param1: {
|
||||
type: 'string',
|
||||
description: 'Parameter description',
|
||||
},
|
||||
},
|
||||
required: ['param1'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
});
|
||||
|
||||
// Handle tool calls
|
||||
server.setRequestHandler('tools/call', async (request) => {
|
||||
const { name, arguments: args } = request.params;
|
||||
|
||||
if (name === 'my_tool') {
|
||||
const result = await doSomething(args.param1);
|
||||
return {
|
||||
content: [
|
||||
{
|
||||
type: 'text',
|
||||
text: JSON.stringify(result, null, 2),
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
throw new Error(`Unknown tool: ${name}`);
|
||||
});
|
||||
|
||||
// Start server
|
||||
const transport = new StdioServerTransport();
|
||||
await server.connect(transport);
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Test MCP servers locally before deploying**
|
||||
2. **Use version control for MCP configurations**
|
||||
3. **Document custom MCP servers**
|
||||
4. **Monitor performance and errors**
|
||||
5. **Keep MCP servers updated**
|
||||
6. **Implement proper error handling**
|
||||
7. **Use connection pooling for databases**
|
||||
8. **Cache frequently accessed data**
|
||||
9. **Set appropriate timeouts**
|
||||
10. **Log operations for debugging**
|
||||
|
||||
## Example Workflows
|
||||
|
||||
### Database Query & Analysis
|
||||
```
|
||||
1. /query SELECT * FROM users WHERE created_at > NOW() - INTERVAL '7 days'
|
||||
2. Analyze results
|
||||
3. /query UPDATE users SET status = 'active' WHERE ...
|
||||
4. Verify changes
|
||||
```
|
||||
|
||||
### Cloud Deployment
|
||||
```
|
||||
1. /docker build -t myapp:latest .
|
||||
2. /docker push myapp:latest
|
||||
3. /kubectl set image deployment/myapp myapp=myapp:latest
|
||||
4. /kubectl rollout status deployment/myapp
|
||||
```
|
||||
|
||||
### AI/ML Workflow
|
||||
```
|
||||
1. Generate embeddings for documents
|
||||
2. /vector-search "relevant query" --top-k 10
|
||||
3. Use results in RAG pipeline
|
||||
4. /upsert-vectors with new documents
|
||||
```
|
||||
45
plugin.lock.json
Normal file
45
plugin.lock.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:Dieshen/claude_marketplace:plugins/mcp-integrations",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "3bffce42c380c0d05b9d4f3751312a7355560973",
|
||||
"treeHash": "3e33c126a2d8b2d4de29c14ca643b673130572de29b0e6684ee23678174a0870",
|
||||
"generatedAt": "2025-11-28T10:10:25.204458Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "mcp-integrations",
|
||||
"description": "Integration guides and setup for MCP servers (Database, Vector DB, Cloud Providers, Docker/K8s, GitHub)",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "dbd93fb54cf9d681e7849aaa59970667087d49a815db33fdf5a8f16a9454f31c"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "8752fdf764ee977d9f31c904e3ac16e2b95e5d48bcefdd318dfb49d7803380f7"
|
||||
},
|
||||
{
|
||||
"path": "commands/setup-mcps.md",
|
||||
"sha256": "4e16c42f5c189a5bef37d046fda5c0480221dfd09793583e847d5d76465a5a93"
|
||||
}
|
||||
],
|
||||
"dirSha256": "3e33c126a2d8b2d4de29c14ca643b673130572de29b0e6684ee23678174a0870"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user