@mhalder/qdrant-mcp-server 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +92 -0
- package/.github/workflows/ci.yml +61 -0
- package/.github/workflows/claude-code-review.yml +57 -0
- package/.github/workflows/claude.yml +50 -0
- package/.github/workflows/release.yml +52 -0
- package/.husky/commit-msg +1 -0
- package/.husky/pre-commit +1 -0
- package/.releaserc.json +59 -0
- package/.yamlfmt +4 -0
- package/CHANGELOG.md +73 -0
- package/CONTRIBUTING.md +176 -0
- package/LICENSE +21 -0
- package/README.md +714 -0
- package/build/embeddings/base.d.ts +23 -0
- package/build/embeddings/base.d.ts.map +1 -0
- package/build/embeddings/base.js +2 -0
- package/build/embeddings/base.js.map +1 -0
- package/build/embeddings/cohere.d.ts +17 -0
- package/build/embeddings/cohere.d.ts.map +1 -0
- package/build/embeddings/cohere.js +102 -0
- package/build/embeddings/cohere.js.map +1 -0
- package/build/embeddings/cohere.test.d.ts +2 -0
- package/build/embeddings/cohere.test.d.ts.map +1 -0
- package/build/embeddings/cohere.test.js +279 -0
- package/build/embeddings/cohere.test.js.map +1 -0
- package/build/embeddings/factory.d.ts +10 -0
- package/build/embeddings/factory.d.ts.map +1 -0
- package/build/embeddings/factory.js +98 -0
- package/build/embeddings/factory.js.map +1 -0
- package/build/embeddings/factory.test.d.ts +2 -0
- package/build/embeddings/factory.test.d.ts.map +1 -0
- package/build/embeddings/factory.test.js +329 -0
- package/build/embeddings/factory.test.js.map +1 -0
- package/build/embeddings/ollama.d.ts +18 -0
- package/build/embeddings/ollama.d.ts.map +1 -0
- package/build/embeddings/ollama.js +135 -0
- package/build/embeddings/ollama.js.map +1 -0
- package/build/embeddings/ollama.test.d.ts +2 -0
- package/build/embeddings/ollama.test.d.ts.map +1 -0
- package/build/embeddings/ollama.test.js +399 -0
- package/build/embeddings/ollama.test.js.map +1 -0
- package/build/embeddings/openai.d.ts +16 -0
- package/build/embeddings/openai.d.ts.map +1 -0
- package/build/embeddings/openai.js +108 -0
- package/build/embeddings/openai.js.map +1 -0
- package/build/embeddings/openai.test.d.ts +2 -0
- package/build/embeddings/openai.test.d.ts.map +1 -0
- package/build/embeddings/openai.test.js +283 -0
- package/build/embeddings/openai.test.js.map +1 -0
- package/build/embeddings/voyage.d.ts +19 -0
- package/build/embeddings/voyage.d.ts.map +1 -0
- package/build/embeddings/voyage.js +113 -0
- package/build/embeddings/voyage.js.map +1 -0
- package/build/embeddings/voyage.test.d.ts +2 -0
- package/build/embeddings/voyage.test.d.ts.map +1 -0
- package/build/embeddings/voyage.test.js +371 -0
- package/build/embeddings/voyage.test.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +534 -0
- package/build/index.js.map +1 -0
- package/build/index.test.d.ts +2 -0
- package/build/index.test.d.ts.map +1 -0
- package/build/index.test.js +241 -0
- package/build/index.test.js.map +1 -0
- package/build/qdrant/client.d.ts +37 -0
- package/build/qdrant/client.d.ts.map +1 -0
- package/build/qdrant/client.js +142 -0
- package/build/qdrant/client.js.map +1 -0
- package/build/qdrant/client.test.d.ts +2 -0
- package/build/qdrant/client.test.d.ts.map +1 -0
- package/build/qdrant/client.test.js +340 -0
- package/build/qdrant/client.test.js.map +1 -0
- package/commitlint.config.js +25 -0
- package/docker-compose.yml +22 -0
- package/docs/test_report.md +259 -0
- package/examples/README.md +315 -0
- package/examples/basic/README.md +111 -0
- package/examples/filters/README.md +262 -0
- package/examples/knowledge-base/README.md +207 -0
- package/examples/rate-limiting/README.md +376 -0
- package/package.json +59 -0
- package/scripts/verify-providers.js +238 -0
- package/src/embeddings/base.ts +25 -0
- package/src/embeddings/cohere.test.ts +408 -0
- package/src/embeddings/cohere.ts +152 -0
- package/src/embeddings/factory.test.ts +453 -0
- package/src/embeddings/factory.ts +163 -0
- package/src/embeddings/ollama.test.ts +543 -0
- package/src/embeddings/ollama.ts +196 -0
- package/src/embeddings/openai.test.ts +402 -0
- package/src/embeddings/openai.ts +158 -0
- package/src/embeddings/voyage.test.ts +520 -0
- package/src/embeddings/voyage.ts +168 -0
- package/src/index.test.ts +304 -0
- package/src/index.ts +614 -0
- package/src/qdrant/client.test.ts +456 -0
- package/src/qdrant/client.ts +195 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +37 -0
package/.env.example
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Qdrant Configuration
|
|
2
|
+
QDRANT_URL=http://localhost:6333
|
|
3
|
+
|
|
4
|
+
# ============================================================================
|
|
5
|
+
# Embedding Provider Configuration
|
|
6
|
+
# ============================================================================
|
|
7
|
+
# Choose your embedding provider: openai, cohere, voyage, ollama
|
|
8
|
+
# Default: ollama (no API key required, works out of the box)
|
|
9
|
+
EMBEDDING_PROVIDER=ollama
|
|
10
|
+
|
|
11
|
+
# ============================================================================
|
|
12
|
+
# Ollama Configuration (Local/Self-hosted) - DEFAULT
|
|
13
|
+
# ============================================================================
|
|
14
|
+
# No API key required! Just start Ollama and pull a model:
|
|
15
|
+
# docker compose up -d
|
|
16
|
+
# docker exec ollama ollama pull nomic-embed-text
|
|
17
|
+
|
|
18
|
+
EMBEDDING_BASE_URL=http://localhost:11434
|
|
19
|
+
|
|
20
|
+
# Optional: Override defaults
|
|
21
|
+
# EMBEDDING_MODEL=nomic-embed-text
|
|
22
|
+
# EMBEDDING_DIMENSIONS=768
|
|
23
|
+
# EMBEDDING_MAX_REQUESTS_PER_MINUTE=1000
|
|
24
|
+
# EMBEDDING_RETRY_ATTEMPTS=3
|
|
25
|
+
# EMBEDDING_RETRY_DELAY=500
|
|
26
|
+
|
|
27
|
+
# Available Ollama models (depends on what you have pulled):
|
|
28
|
+
# - nomic-embed-text (768 dimensions) - recommended
|
|
29
|
+
# - mxbai-embed-large (1024 dimensions)
|
|
30
|
+
# - all-minilm (384 dimensions)
|
|
31
|
+
# Run `docker exec ollama ollama pull <model-name>` to download models
|
|
32
|
+
|
|
33
|
+
# ============================================================================
|
|
34
|
+
# OpenAI Configuration (Alternative Provider)
|
|
35
|
+
# ============================================================================
|
|
36
|
+
# Uncomment to use OpenAI instead of Ollama:
|
|
37
|
+
# EMBEDDING_PROVIDER=openai
|
|
38
|
+
# OPENAI_API_KEY=sk-your-api-key-here
|
|
39
|
+
|
|
40
|
+
# Optional: Override defaults
|
|
41
|
+
# EMBEDDING_MODEL=text-embedding-3-small
|
|
42
|
+
# EMBEDDING_DIMENSIONS=1536
|
|
43
|
+
# EMBEDDING_MAX_REQUESTS_PER_MINUTE=3500
|
|
44
|
+
# EMBEDDING_RETRY_ATTEMPTS=3
|
|
45
|
+
# EMBEDDING_RETRY_DELAY=1000
|
|
46
|
+
|
|
47
|
+
# ============================================================================
|
|
48
|
+
# Cohere Configuration
|
|
49
|
+
# ============================================================================
|
|
50
|
+
# EMBEDDING_PROVIDER=cohere
|
|
51
|
+
# COHERE_API_KEY=your-cohere-api-key-here
|
|
52
|
+
|
|
53
|
+
# Optional: Override defaults
|
|
54
|
+
# EMBEDDING_MODEL=embed-english-v3.0
|
|
55
|
+
# EMBEDDING_DIMENSIONS=1024
|
|
56
|
+
# EMBEDDING_MAX_REQUESTS_PER_MINUTE=100
|
|
57
|
+
# EMBEDDING_RETRY_ATTEMPTS=3
|
|
58
|
+
# EMBEDDING_RETRY_DELAY=1000
|
|
59
|
+
|
|
60
|
+
# Available Cohere models:
|
|
61
|
+
# - embed-english-v3.0 (1024 dimensions)
|
|
62
|
+
# - embed-multilingual-v3.0 (1024 dimensions)
|
|
63
|
+
# - embed-english-light-v3.0 (384 dimensions)
|
|
64
|
+
# - embed-multilingual-light-v3.0 (384 dimensions)
|
|
65
|
+
|
|
66
|
+
# ============================================================================
|
|
67
|
+
# Voyage AI Configuration
|
|
68
|
+
# ============================================================================
|
|
69
|
+
# EMBEDDING_PROVIDER=voyage
|
|
70
|
+
# VOYAGE_API_KEY=your-voyage-api-key-here
|
|
71
|
+
|
|
72
|
+
# Optional: Override defaults
|
|
73
|
+
# EMBEDDING_MODEL=voyage-2
|
|
74
|
+
# EMBEDDING_DIMENSIONS=1024
|
|
75
|
+
# EMBEDDING_BASE_URL=https://api.voyageai.com/v1
|
|
76
|
+
# EMBEDDING_MAX_REQUESTS_PER_MINUTE=300
|
|
77
|
+
# EMBEDDING_RETRY_ATTEMPTS=3
|
|
78
|
+
# EMBEDDING_RETRY_DELAY=1000
|
|
79
|
+
|
|
80
|
+
# Available Voyage models:
|
|
81
|
+
# - voyage-2 (1024 dimensions)
|
|
82
|
+
# - voyage-large-2 (1536 dimensions)
|
|
83
|
+
# - voyage-code-2 (1536 dimensions)
|
|
84
|
+
# - voyage-lite-02-instruct (1024 dimensions)
|
|
85
|
+
|
|
86
|
+
# ============================================================================
|
|
87
|
+
# Notes
|
|
88
|
+
# ============================================================================
|
|
89
|
+
# - For OpenAI, Cohere, and Voyage: API key is required
|
|
90
|
+
# - For Ollama: No API key needed (local deployment)
|
|
91
|
+
# - EMBEDDING_MODEL, EMBEDDING_DIMENSIONS, and rate limit configs are optional
|
|
92
|
+
# - Each provider has sensible defaults if not specified
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-and-test:
|
|
11
|
+
name: Build and Test
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
node-version: [20.x, 22.x]
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout code
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Setup Node.js ${{ matrix.node-version }}
|
|
23
|
+
uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: ${{ matrix.node-version }}
|
|
26
|
+
cache: 'npm'
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: npm ci
|
|
30
|
+
|
|
31
|
+
- name: Type check
|
|
32
|
+
run: npm run type-check
|
|
33
|
+
|
|
34
|
+
- name: Build project
|
|
35
|
+
run: npm run build
|
|
36
|
+
|
|
37
|
+
- name: Run unit tests
|
|
38
|
+
if: matrix.node-version != '22.x'
|
|
39
|
+
run: npm test -- --run
|
|
40
|
+
|
|
41
|
+
- name: Run provider verification tests
|
|
42
|
+
if: matrix.node-version != '22.x'
|
|
43
|
+
run: npm run test:providers
|
|
44
|
+
|
|
45
|
+
- name: Run tests with coverage (Node 22.x only)
|
|
46
|
+
if: matrix.node-version == '22.x'
|
|
47
|
+
run: npm run test:coverage
|
|
48
|
+
|
|
49
|
+
- name: Run provider verification tests (Node 22.x only)
|
|
50
|
+
if: matrix.node-version == '22.x'
|
|
51
|
+
run: npm run test:providers
|
|
52
|
+
|
|
53
|
+
- name: Upload coverage to Codecov (Node 22.x only)
|
|
54
|
+
if: matrix.node-version == '22.x'
|
|
55
|
+
uses: codecov/codecov-action@v4
|
|
56
|
+
continue-on-error: true
|
|
57
|
+
with:
|
|
58
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
59
|
+
directory: ./coverage
|
|
60
|
+
flags: unittests
|
|
61
|
+
fail_ci_if_error: false
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: Claude Code Review
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [opened, synchronize]
|
|
6
|
+
# Optional: Only run on specific file changes
|
|
7
|
+
# paths:
|
|
8
|
+
# - "src/**/*.ts"
|
|
9
|
+
# - "src/**/*.tsx"
|
|
10
|
+
# - "src/**/*.js"
|
|
11
|
+
# - "src/**/*.jsx"
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
claude-review:
|
|
15
|
+
# Optional: Filter by PR author
|
|
16
|
+
# if: |
|
|
17
|
+
# github.event.pull_request.user.login == 'external-contributor' ||
|
|
18
|
+
# github.event.pull_request.user.login == 'new-developer' ||
|
|
19
|
+
# github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
|
|
20
|
+
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
pull-requests: read
|
|
25
|
+
issues: read
|
|
26
|
+
id-token: write
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout repository
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
with:
|
|
32
|
+
fetch-depth: 1
|
|
33
|
+
|
|
34
|
+
- name: Run Claude Code Review
|
|
35
|
+
id: claude-review
|
|
36
|
+
uses: anthropics/claude-code-action@v1
|
|
37
|
+
with:
|
|
38
|
+
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
39
|
+
prompt: |
|
|
40
|
+
REPO: ${{ github.repository }}
|
|
41
|
+
PR NUMBER: ${{ github.event.pull_request.number }}
|
|
42
|
+
|
|
43
|
+
Please review this pull request and provide feedback on:
|
|
44
|
+
- Code quality and best practices
|
|
45
|
+
- Potential bugs or issues
|
|
46
|
+
- Performance considerations
|
|
47
|
+
- Security concerns
|
|
48
|
+
- Test coverage
|
|
49
|
+
|
|
50
|
+
Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback.
|
|
51
|
+
|
|
52
|
+
Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR.
|
|
53
|
+
|
|
54
|
+
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
|
|
55
|
+
# or https://docs.claude.com/en/docs/claude-code/cli-reference for available options
|
|
56
|
+
claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)"'
|
|
57
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Claude Code
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issue_comment:
|
|
5
|
+
types: [created]
|
|
6
|
+
pull_request_review_comment:
|
|
7
|
+
types: [created]
|
|
8
|
+
issues:
|
|
9
|
+
types: [opened, assigned]
|
|
10
|
+
pull_request_review:
|
|
11
|
+
types: [submitted]
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
claude:
|
|
15
|
+
if: |
|
|
16
|
+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
17
|
+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
|
|
18
|
+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
|
|
19
|
+
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
pull-requests: read
|
|
24
|
+
issues: read
|
|
25
|
+
id-token: write
|
|
26
|
+
actions: read # Required for Claude to read CI results on PRs
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout repository
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
fetch-depth: 1
|
|
32
|
+
|
|
33
|
+
- name: Run Claude Code
|
|
34
|
+
id: claude
|
|
35
|
+
uses: anthropics/claude-code-action@v1
|
|
36
|
+
with:
|
|
37
|
+
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
38
|
+
|
|
39
|
+
# This is an optional setting that allows Claude to read CI results on PRs
|
|
40
|
+
additional_permissions: |
|
|
41
|
+
actions: read
|
|
42
|
+
|
|
43
|
+
# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
|
|
44
|
+
# prompt: 'Update the pull request description to include a summary of changes.'
|
|
45
|
+
|
|
46
|
+
# Optional: Add claude_args to customize behavior and configuration
|
|
47
|
+
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
|
|
48
|
+
# or https://docs.claude.com/en/docs/claude-code/cli-reference for available options
|
|
49
|
+
# claude_args: '--allowed-tools Bash(gh pr:*)'
|
|
50
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
issues: write
|
|
11
|
+
pull-requests: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
release:
|
|
16
|
+
name: Release
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout code
|
|
22
|
+
uses: actions/checkout@v4
|
|
23
|
+
with:
|
|
24
|
+
fetch-depth: 0
|
|
25
|
+
persist-credentials: false
|
|
26
|
+
|
|
27
|
+
- name: Setup Node.js
|
|
28
|
+
uses: actions/setup-node@v4
|
|
29
|
+
with:
|
|
30
|
+
node-version: '22.x'
|
|
31
|
+
cache: 'npm'
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
run: npm ci
|
|
35
|
+
|
|
36
|
+
- name: Type check
|
|
37
|
+
run: npm run type-check
|
|
38
|
+
|
|
39
|
+
- name: Build project
|
|
40
|
+
run: npm run build
|
|
41
|
+
|
|
42
|
+
- name: Run tests
|
|
43
|
+
run: npm test -- --run
|
|
44
|
+
|
|
45
|
+
- name: Run provider verification tests
|
|
46
|
+
run: npm run test:providers
|
|
47
|
+
|
|
48
|
+
- name: Release
|
|
49
|
+
env:
|
|
50
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
51
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
52
|
+
run: npx semantic-release
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npx --no -- commitlint --edit $1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
npm test -- --run
|
package/.releaserc.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"branches": ["main"],
|
|
3
|
+
"plugins": [
|
|
4
|
+
[
|
|
5
|
+
"@semantic-release/commit-analyzer",
|
|
6
|
+
{
|
|
7
|
+
"preset": "conventionalcommits",
|
|
8
|
+
"releaseRules": [
|
|
9
|
+
{ "type": "feat", "release": "minor" },
|
|
10
|
+
{ "type": "fix", "release": "patch" },
|
|
11
|
+
{ "type": "perf", "release": "patch" },
|
|
12
|
+
{ "type": "docs", "release": "patch" },
|
|
13
|
+
{ "type": "refactor", "release": "patch" },
|
|
14
|
+
{ "type": "style", "release": false },
|
|
15
|
+
{ "type": "test", "release": false },
|
|
16
|
+
{ "type": "chore", "release": false },
|
|
17
|
+
{ "type": "ci", "release": false },
|
|
18
|
+
{ "type": "build", "release": false },
|
|
19
|
+
{ "breaking": true, "release": "major" }
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
[
|
|
24
|
+
"@semantic-release/release-notes-generator",
|
|
25
|
+
{
|
|
26
|
+
"preset": "conventionalcommits",
|
|
27
|
+
"presetConfig": {
|
|
28
|
+
"types": [
|
|
29
|
+
{ "type": "feat", "section": "Features" },
|
|
30
|
+
{ "type": "fix", "section": "Bug Fixes" },
|
|
31
|
+
{ "type": "perf", "section": "Performance Improvements" },
|
|
32
|
+
{ "type": "docs", "section": "Documentation" },
|
|
33
|
+
{ "type": "refactor", "section": "Code Refactoring" },
|
|
34
|
+
{ "type": "style", "section": "Styles", "hidden": true },
|
|
35
|
+
{ "type": "test", "section": "Tests", "hidden": true },
|
|
36
|
+
{ "type": "chore", "section": "Chores", "hidden": true },
|
|
37
|
+
{ "type": "ci", "section": "CI/CD", "hidden": true },
|
|
38
|
+
{ "type": "build", "section": "Build System", "hidden": true }
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
"@semantic-release/changelog",
|
|
45
|
+
{
|
|
46
|
+
"changelogFile": "CHANGELOG.md"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"@semantic-release/npm",
|
|
50
|
+
[
|
|
51
|
+
"@semantic-release/git",
|
|
52
|
+
{
|
|
53
|
+
"assets": ["package.json", "package-lock.json", "CHANGELOG.md"],
|
|
54
|
+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"@semantic-release/github"
|
|
58
|
+
]
|
|
59
|
+
}
|
package/.yamlfmt
ADDED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
## 1.1.0 (2025-10-11)
|
|
2
|
+
|
|
3
|
+
* feat: enable scoped package publishing ([6b1b33f](https://github.com/mhalder/qdrant-mcp-server/commit/6b1b33f))
|
|
4
|
+
* chore: scope package to @mhalder namespace for npm publishing ([9518827](https://github.com/mhalder/qdrant-mcp-server/commit/9518827))
|
|
5
|
+
|
|
6
|
+
## 1.0.0 (2025-10-11)
|
|
7
|
+
|
|
8
|
+
* chore: add docker compose configuration for qdrant ([ad1773f](https://github.com/mhalder/qdrant-mcp-server/commit/ad1773f))
|
|
9
|
+
* chore: add environment configuration template ([872be20](https://github.com/mhalder/qdrant-mcp-server/commit/872be20))
|
|
10
|
+
* chore: add ollama_storage to .gitignore ([4fb550e](https://github.com/mhalder/qdrant-mcp-server/commit/4fb550e))
|
|
11
|
+
* chore: configure semantic-release for automated versioning ([fb1d64a](https://github.com/mhalder/qdrant-mcp-server/commit/fb1d64a))
|
|
12
|
+
* chore: initial project setup ([7930b0f](https://github.com/mhalder/qdrant-mcp-server/commit/7930b0f))
|
|
13
|
+
* "Claude Code Review workflow" ([8739c72](https://github.com/mhalder/qdrant-mcp-server/commit/8739c72))
|
|
14
|
+
* "Claude PR Assistant workflow" ([01ad2e7](https://github.com/mhalder/qdrant-mcp-server/commit/01ad2e7))
|
|
15
|
+
* Merge pull request #12 from mhalder/add-claude-github-actions-1759866978728 ([6783076](https://github.com/mhalder/qdrant-mcp-server/commit/6783076)), closes [#12](https://github.com/mhalder/qdrant-mcp-server/issues/12)
|
|
16
|
+
* Merge pull request #13 from mhalder/examples-directory ([9e7c312](https://github.com/mhalder/qdrant-mcp-server/commit/9e7c312)), closes [#13](https://github.com/mhalder/qdrant-mcp-server/issues/13)
|
|
17
|
+
* Merge pull request #15 from mhalder/add-mit-license ([6e9525d](https://github.com/mhalder/qdrant-mcp-server/commit/6e9525d)), closes [#15](https://github.com/mhalder/qdrant-mcp-server/issues/15)
|
|
18
|
+
* Merge pull request #16 from mhalder/feat/rate-limiting-issue-6 ([fa3601e](https://github.com/mhalder/qdrant-mcp-server/commit/fa3601e)), closes [#16](https://github.com/mhalder/qdrant-mcp-server/issues/16)
|
|
19
|
+
* Merge pull request #17 from mhalder/feat/alternative-embedding-providers-issue-2 ([4670e29](https://github.com/mhalder/qdrant-mcp-server/commit/4670e29)), closes [#17](https://github.com/mhalder/qdrant-mcp-server/issues/17)
|
|
20
|
+
* Merge pull request #19 from mhalder/feat/use-ollama-as-default-issue-18 ([8b1075f](https://github.com/mhalder/qdrant-mcp-server/commit/8b1075f)), closes [#19](https://github.com/mhalder/qdrant-mcp-server/issues/19)
|
|
21
|
+
* test: add comprehensive tests for embedding provider architecture ([b2db1b4](https://github.com/mhalder/qdrant-mcp-server/commit/b2db1b4))
|
|
22
|
+
* test: add comprehensive unit tests for openai embeddings ([466a012](https://github.com/mhalder/qdrant-mcp-server/commit/466a012))
|
|
23
|
+
* test: add comprehensive unit tests for qdrant client ([0f6c3a9](https://github.com/mhalder/qdrant-mcp-server/commit/0f6c3a9))
|
|
24
|
+
* test: add comprehensive validation tests for environment variables ([1ae89b6](https://github.com/mhalder/qdrant-mcp-server/commit/1ae89b6))
|
|
25
|
+
* test: add functional testing round 3 for multi-provider architecture ([9588810](https://github.com/mhalder/qdrant-mcp-server/commit/9588810))
|
|
26
|
+
* test: add integration tests for mcp server tools ([b504329](https://github.com/mhalder/qdrant-mcp-server/commit/b504329))
|
|
27
|
+
* test: add interactive MCP testing round 4 results ([0cdc763](https://github.com/mhalder/qdrant-mcp-server/commit/0cdc763))
|
|
28
|
+
* test: add testing infrastructure with vitest ([35beed7](https://github.com/mhalder/qdrant-mcp-server/commit/35beed7))
|
|
29
|
+
* test: fix error handling tests and improve coverage ([1219574](https://github.com/mhalder/qdrant-mcp-server/commit/1219574))
|
|
30
|
+
* test: improve coverage for error handling paths ([833b3ef](https://github.com/mhalder/qdrant-mcp-server/commit/833b3ef))
|
|
31
|
+
* test: improve coverage reporting to 95.75% ([0a061d2](https://github.com/mhalder/qdrant-mcp-server/commit/0a061d2))
|
|
32
|
+
* test: update test expectations for ID normalization and document feature ([dce948d](https://github.com/mhalder/qdrant-mcp-server/commit/dce948d))
|
|
33
|
+
* fix: add copyright holder to LICENSE file ([d4f926b](https://github.com/mhalder/qdrant-mcp-server/commit/d4f926b))
|
|
34
|
+
* fix: add package-lock.json for reproducible builds ([ffc6385](https://github.com/mhalder/qdrant-mcp-server/commit/ffc6385))
|
|
35
|
+
* fix: add type guard for message.toLowerCase() call ([b622650](https://github.com/mhalder/qdrant-mcp-server/commit/b622650))
|
|
36
|
+
* fix: add validation for Retry-After header parsing ([f6e2d0f](https://github.com/mhalder/qdrant-mcp-server/commit/f6e2d0f))
|
|
37
|
+
* fix: address code quality issues and version mismatch ([8f48300](https://github.com/mhalder/qdrant-mcp-server/commit/8f48300))
|
|
38
|
+
* fix: convert simple key-value filters to Qdrant filter format ([cf7f684](https://github.com/mhalder/qdrant-mcp-server/commit/cf7f684))
|
|
39
|
+
* fix: generate coverage files before Codecov upload ([5e7369c](https://github.com/mhalder/qdrant-mcp-server/commit/5e7369c))
|
|
40
|
+
* fix: improve API key validation and Ollama error messages ([a556358](https://github.com/mhalder/qdrant-mcp-server/commit/a556358)), closes [#19](https://github.com/mhalder/qdrant-mcp-server/issues/19)
|
|
41
|
+
* fix: normalize string IDs to UUID format and enhance error handling ([75478e3](https://github.com/mhalder/qdrant-mcp-server/commit/75478e3))
|
|
42
|
+
* fix: select provider-specific API key in factory ([be2ed4b](https://github.com/mhalder/qdrant-mcp-server/commit/be2ed4b))
|
|
43
|
+
* feat: add Ollama model existence validation on startup ([3086563](https://github.com/mhalder/qdrant-mcp-server/commit/3086563))
|
|
44
|
+
* feat: add support for alternative embedding providers ([3762c43](https://github.com/mhalder/qdrant-mcp-server/commit/3762c43)), closes [#2](https://github.com/mhalder/qdrant-mcp-server/issues/2)
|
|
45
|
+
* feat: implement mcp server with semantic search tools ([3b99fce](https://github.com/mhalder/qdrant-mcp-server/commit/3b99fce))
|
|
46
|
+
* feat: implement OpenAI API rate limiting with exponential backoff ([c619570](https://github.com/mhalder/qdrant-mcp-server/commit/c619570)), closes [#6](https://github.com/mhalder/qdrant-mcp-server/issues/6)
|
|
47
|
+
* feat: implement openai embeddings provider ([e44c50c](https://github.com/mhalder/qdrant-mcp-server/commit/e44c50c))
|
|
48
|
+
* feat: implement qdrant client wrapper ([3195e63](https://github.com/mhalder/qdrant-mcp-server/commit/3195e63))
|
|
49
|
+
* feat: support both simple and Qdrant filter formats ([e5bb8fe](https://github.com/mhalder/qdrant-mcp-server/commit/e5bb8fe))
|
|
50
|
+
* feat: use Ollama as default embedding provider ([4342591](https://github.com/mhalder/qdrant-mcp-server/commit/4342591)), closes [#18](https://github.com/mhalder/qdrant-mcp-server/issues/18)
|
|
51
|
+
* docs: add Codecov badge to README ([fff50d2](https://github.com/mhalder/qdrant-mcp-server/commit/fff50d2))
|
|
52
|
+
* docs: add comment about Bottleneck reservoir configuration ([252fa9f](https://github.com/mhalder/qdrant-mcp-server/commit/252fa9f))
|
|
53
|
+
* docs: add comprehensive examples directory ([7ef9cf5](https://github.com/mhalder/qdrant-mcp-server/commit/7ef9cf5)), closes [#4](https://github.com/mhalder/qdrant-mcp-server/issues/4)
|
|
54
|
+
* docs: add comprehensive README with setup instructions ([4517207](https://github.com/mhalder/qdrant-mcp-server/commit/4517207))
|
|
55
|
+
* docs: add functional test report ([c0838bf](https://github.com/mhalder/qdrant-mcp-server/commit/c0838bf))
|
|
56
|
+
* docs: add MIT LICENSE file and update README ([3e427df](https://github.com/mhalder/qdrant-mcp-server/commit/3e427df))
|
|
57
|
+
* docs: add testing documentation to README ([cb5d62b](https://github.com/mhalder/qdrant-mcp-server/commit/cb5d62b))
|
|
58
|
+
* docs: comprehensive update to README with filtering examples ([66ec1b5](https://github.com/mhalder/qdrant-mcp-server/commit/66ec1b5))
|
|
59
|
+
* docs: streamline test report with latest MCP integration results ([b30cd04](https://github.com/mhalder/qdrant-mcp-server/commit/b30cd04))
|
|
60
|
+
* docs: update CI badge with correct GitHub username ([9d8bdfb](https://github.com/mhalder/qdrant-mcp-server/commit/9d8bdfb))
|
|
61
|
+
* docs: update configuration for claude code on linux ([429d514](https://github.com/mhalder/qdrant-mcp-server/commit/429d514))
|
|
62
|
+
* docs: update documentation for multi-provider support ([18196a1](https://github.com/mhalder/qdrant-mcp-server/commit/18196a1))
|
|
63
|
+
* docs: update documentation for Ollama as default provider ([60818dd](https://github.com/mhalder/qdrant-mcp-server/commit/60818dd))
|
|
64
|
+
* docs: update examples and version for Ollama as default ([eb7bd4d](https://github.com/mhalder/qdrant-mcp-server/commit/eb7bd4d))
|
|
65
|
+
* docs: update test report and README with v2 integration test results ([1ff1e22](https://github.com/mhalder/qdrant-mcp-server/commit/1ff1e22))
|
|
66
|
+
* ci: add GitHub Actions workflow for automated testing ([9420261](https://github.com/mhalder/qdrant-mcp-server/commit/9420261))
|
|
67
|
+
* ci: add provider verification tests to GitHub Actions ([f4d1f7d](https://github.com/mhalder/qdrant-mcp-server/commit/f4d1f7d))
|
|
68
|
+
* ci: remove Node.js 18.x from test matrix ([bf5f478](https://github.com/mhalder/qdrant-mcp-server/commit/bf5f478))
|
|
69
|
+
* ci: test Codecov integration with updated token ([60b5f2c](https://github.com/mhalder/qdrant-mcp-server/commit/60b5f2c))
|
|
70
|
+
* style: format CI workflow with yamlfmt ([cedf0f8](https://github.com/mhalder/qdrant-mcp-server/commit/cedf0f8))
|
|
71
|
+
* perf: optimize Ollama batch embedding with parallel processing ([7736c32](https://github.com/mhalder/qdrant-mcp-server/commit/7736c32))
|
|
72
|
+
* refactor: move verification script to scripts/ folder ([a25373f](https://github.com/mhalder/qdrant-mcp-server/commit/a25373f))
|
|
73
|
+
* refactor: replace error:any with typed OpenAIError interface ([08a0d23](https://github.com/mhalder/qdrant-mcp-server/commit/08a0d23))
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Contributing to qdrant-mcp-server
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to qdrant-mcp-server! This document provides guidelines and instructions for contributing to the project.
|
|
4
|
+
|
|
5
|
+
## Code of Conduct
|
|
6
|
+
|
|
7
|
+
Please be respectful and constructive in your interactions with other contributors.
|
|
8
|
+
|
|
9
|
+
## Getting Started
|
|
10
|
+
|
|
11
|
+
1. Fork the repository
|
|
12
|
+
2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/qdrant-mcp-server.git`
|
|
13
|
+
3. Install dependencies: `npm install`
|
|
14
|
+
4. Create a branch for your changes: `git checkout -b feat/your-feature-name`
|
|
15
|
+
|
|
16
|
+
## Development Workflow
|
|
17
|
+
|
|
18
|
+
### Running the Project
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Build the project
|
|
22
|
+
npm run build
|
|
23
|
+
|
|
24
|
+
# Run in development mode
|
|
25
|
+
npm run dev
|
|
26
|
+
|
|
27
|
+
# Run tests
|
|
28
|
+
npm test
|
|
29
|
+
|
|
30
|
+
# Run tests with UI
|
|
31
|
+
npm run test:ui
|
|
32
|
+
|
|
33
|
+
# Run tests with coverage
|
|
34
|
+
npm run test:coverage
|
|
35
|
+
|
|
36
|
+
# Run provider verification tests
|
|
37
|
+
npm run test:providers
|
|
38
|
+
|
|
39
|
+
# Type check
|
|
40
|
+
npm run type-check
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Making Changes
|
|
44
|
+
|
|
45
|
+
1. Make your changes in your feature branch
|
|
46
|
+
2. Add tests for your changes
|
|
47
|
+
3. Ensure all tests pass: `npm test -- --run`
|
|
48
|
+
4. Ensure type checking passes: `npm run type-check`
|
|
49
|
+
5. Build the project: `npm run build`
|
|
50
|
+
6. Commit your changes using conventional commits (see below)
|
|
51
|
+
|
|
52
|
+
## Commit Message Convention
|
|
53
|
+
|
|
54
|
+
This project uses [Conventional Commits](https://www.conventionalcommits.org/) for commit messages. This enables automated versioning and changelog generation.
|
|
55
|
+
|
|
56
|
+
### Commit Message Format
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
<type>(<scope>): <subject>
|
|
60
|
+
|
|
61
|
+
<body>
|
|
62
|
+
|
|
63
|
+
<footer>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Commit Types
|
|
67
|
+
|
|
68
|
+
- **feat**: A new feature (triggers minor version bump)
|
|
69
|
+
- **fix**: A bug fix (triggers patch version bump)
|
|
70
|
+
- **docs**: Documentation changes (triggers patch version bump)
|
|
71
|
+
- **style**: Code style changes (formatting, missing semicolons, etc.)
|
|
72
|
+
- **refactor**: Code refactoring without changing functionality (triggers patch version bump)
|
|
73
|
+
- **perf**: Performance improvements (triggers patch version bump)
|
|
74
|
+
- **test**: Adding or updating tests
|
|
75
|
+
- **chore**: Changes to build process, dependencies, etc.
|
|
76
|
+
- **ci**: Changes to CI/CD configuration
|
|
77
|
+
- **build**: Changes to build system
|
|
78
|
+
|
|
79
|
+
### Breaking Changes
|
|
80
|
+
|
|
81
|
+
For breaking changes, add `BREAKING CHANGE:` in the commit body or footer, or append `!` after the type:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
feat!: remove support for Node 16
|
|
85
|
+
|
|
86
|
+
BREAKING CHANGE: Node 16 is no longer supported
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Examples
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Feature
|
|
93
|
+
feat(embeddings): add support for new embedding provider
|
|
94
|
+
|
|
95
|
+
# Bug fix
|
|
96
|
+
fix(search): correct similarity score calculation
|
|
97
|
+
|
|
98
|
+
# Documentation
|
|
99
|
+
docs: update installation instructions
|
|
100
|
+
|
|
101
|
+
# Breaking change
|
|
102
|
+
feat!: change collection schema format
|
|
103
|
+
|
|
104
|
+
BREAKING CHANGE: collection schema now requires version field
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Commit Message Validation
|
|
108
|
+
|
|
109
|
+
Commit messages are validated using commitlint. Invalid commit messages will be rejected. The validation enforces:
|
|
110
|
+
|
|
111
|
+
- Commit message must follow conventional commits format
|
|
112
|
+
- Type must be one of: feat, fix, docs, style, refactor, perf, test, chore, ci, build
|
|
113
|
+
- Subject must not be empty
|
|
114
|
+
- Subject must not end with a period
|
|
115
|
+
- Header must not exceed 100 characters
|
|
116
|
+
- Subject must not start with uppercase
|
|
117
|
+
|
|
118
|
+
## Pull Request Process
|
|
119
|
+
|
|
120
|
+
1. Update the README.md with details of changes if needed
|
|
121
|
+
2. Update tests to cover your changes
|
|
122
|
+
3. Ensure all CI checks pass
|
|
123
|
+
4. Request review from maintainers
|
|
124
|
+
5. Once approved, your PR will be merged
|
|
125
|
+
|
|
126
|
+
### PR Title
|
|
127
|
+
|
|
128
|
+
PR titles should also follow conventional commit format:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
feat: add new search feature
|
|
132
|
+
fix: resolve connection timeout issue
|
|
133
|
+
docs: improve setup documentation
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Release Process
|
|
137
|
+
|
|
138
|
+
This project uses [semantic-release](https://semantic-release.gitbook.io/) for automated releases.
|
|
139
|
+
|
|
140
|
+
- Releases are automatically created when changes are merged to the `main` branch
|
|
141
|
+
- Version numbers follow [Semantic Versioning](https://semver.org/)
|
|
142
|
+
- Changelog is automatically generated from commit messages
|
|
143
|
+
- Packages are automatically published to npm
|
|
144
|
+
|
|
145
|
+
### Version Bumping
|
|
146
|
+
|
|
147
|
+
- `feat` commits → minor version bump (1.x.0)
|
|
148
|
+
- `fix`, `perf`, `docs`, `refactor` commits → patch version bump (1.0.x)
|
|
149
|
+
- Commits with `BREAKING CHANGE` → major version bump (x.0.0)
|
|
150
|
+
|
|
151
|
+
## Project Structure
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
qdrant-mcp-server/
|
|
155
|
+
├── src/ # Source code
|
|
156
|
+
├── build/ # Compiled output
|
|
157
|
+
├── scripts/ # Utility scripts
|
|
158
|
+
├── .github/ # GitHub Actions workflows
|
|
159
|
+
├── .husky/ # Git hooks
|
|
160
|
+
└── tests/ # Test files
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Testing
|
|
164
|
+
|
|
165
|
+
- Write tests for all new features and bug fixes
|
|
166
|
+
- Maintain or improve code coverage
|
|
167
|
+
- Run the full test suite before submitting PRs
|
|
168
|
+
- Include both unit tests and integration tests where appropriate
|
|
169
|
+
|
|
170
|
+
## Questions?
|
|
171
|
+
|
|
172
|
+
If you have questions about contributing, please open an issue for discussion.
|
|
173
|
+
|
|
174
|
+
## License
|
|
175
|
+
|
|
176
|
+
By contributing to qdrant-mcp-server, you agree that your contributions will be licensed under the project's MIT License.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Martin Halder and contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|