Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
39fdbf6
Add Docker support with Nginx and update README for usage instructions
sreenathnair Dec 3, 2025
52957eb
Bump pdbe-mcp-server version to 1.0.1 in uv.lock
sreenathnair Dec 3, 2025
3d656a6
Add GitLab CI configuration for Docker build and deployment
sreenathnair Dec 3, 2025
955abe1
Allow POST method for SSE endpoint in main server route
sreenathnair Dec 4, 2025
207ad31
Add ROOT_PREFIX support for server route paths
sreenathnair Dec 4, 2025
4ce6ab7
Added graph run functionality
sreenathnair Mar 28, 2026
0629fcc
Bump version to 1.0.4
sreenathnair Mar 28, 2026
04915c6
fixed linting
sreenathnair Mar 28, 2026
43a50b0
fixed linting
sreenathnair Mar 28, 2026
a2ab936
fixed pyright issue with query type
sreenathnair Mar 28, 2026
c51ee60
Added Neo4j as main dependency
sreenathnair Mar 28, 2026
8750326
bumped up version
sreenathnair Mar 28, 2026
06b2625
Merge branch 'main' into graph-run
sreenathnair Mar 28, 2026
016c91c
Updated graph tools to add more flexibility to the cypher syntax check,
sreenathnair Apr 2, 2026
1ce831b
Add Neo4j Cypher query execution and enhance search resilience
sreenathnair Apr 2, 2026
eec580b
Add remote server entry point with HTTP interface
sreenathnair Apr 3, 2026
dc0598a
Refactor Dockerfile to run single MCP server via uvicorn
sreenathnair Apr 3, 2026
325637e
Add PDBe graph indexes tool and refactor health checks
sreenathnair Apr 5, 2026
8a11dd4
Enable async Neo4j driver and query execution
sreenathnair Apr 12, 2026
3cfdc7f
Add automatic wildcard and case handling for PDBe search
sreenathnair Apr 18, 2026
5ecbac8
Bump version to 1.0.6
sreenathnair Apr 18, 2026
38a8cc7
Update test expectation to use escaped query syntax
sreenathnair Apr 18, 2026
25c1d6f
Bump pdbe-mcp-server version to 1.0.6
sreenathnair Apr 18, 2026
9ecf202
Merge branch 'search-optim' into remote
sreenathnair Apr 18, 2026
48f7c0a
Merge branch 'main' into remote
sreenathnair Apr 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
.venv
venv/
ENV/
env/

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store

# Testing and coverage
.pytest_cache/
.coverage
htmlcov/
.tox/
.nox/
coverage.xml
*.cover
*.py,cover
tests/

# Linting and formatting
.ruff_cache/
.mypy_cache/
.pyright/

# Build tools
.hatch/
.hypothesis/

# Documentation
docs/_build/

# CI/CD
.github/
.gitlab-ci.yml

# Config files
.env
.env.*
*.env

# Notes and temporary files
notes.md
demo.md
*.md.backup

# Development docs
DEVELOPMENT.md
CONTRIBUTING.md
28 changes: 28 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
docker_build:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- |
mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context $CI_PROJECT_DIR --destination ${CI_REGISTRY_IMAGE}/app:$CI_COMMIT_SHORT_SHA
tags:
- pdbe-docker

trigger_deploy:
stage: deploy
inherit:
variables: false
variables:
UPSTREAM_REF: $CI_COMMIT_REF_NAME
IMAGE_PATHS: ${CI_REGISTRY_IMAGE}/app:$CI_COMMIT_SHORT_SHA
IMAGE_NAMES: pdbe-mcp-server
APP_NAME: pdbe-mcp-server
trigger:
project: pdbe/backend/k8s-deploy-configs
branch: main
strategy: depend
needs:
- docker_build
26 changes: 26 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Single-stage Dockerfile for MCP remote server using uv
FROM python:3.11-slim

# Install uv
RUN pip install uv

WORKDIR /app

# Copy only necessary files first for better caching
COPY pyproject.toml README.md ./
COPY pdbe_mcp_server/py.typed ./pdbe_mcp_server/py.typed

# Create a virtual environment
RUN uv venv

# Install dependencies using uv pip install
RUN uv pip install --no-cache-dir .

# Copy application source
COPY pdbe_mcp_server/ ./pdbe_mcp_server/

# Expose port
EXPOSE 8000

# Run with uv
CMD ["uv", "run", "pdbe-mcp-remote-server", "--host", "0.0.0.0", "--port", "8000"]
17 changes: 16 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,21 @@ Common searchable fields include:
Use `get_search_schema` to discover all available fields and their descriptions.

## Development and Advanced Usage
### Docker (single container with Nginx)

Build and run all three MCP servers behind Nginx using the included Dockerfile:

```bash
docker build -t pdbe-mcp-servers:latest .
docker run --rm -p 8080:8080 pdbe-mcp-servers:latest
```

Endpoints:
- `http://localhost:8080/api/sse` and `http://localhost:8080/api/messages/`
- `http://localhost:8080/graph/sse` and `http://localhost:8080/graph/messages/`
- `http://localhost:8080/search/sse` and `http://localhost:8080/search/messages/`
- Health: `http://localhost:8080/health`


### Development Installation

Expand Down Expand Up @@ -281,7 +296,7 @@ uv run pdbe-mcp-server --server-type pdbe_graph_server --transport sse

This server supports executing custom Cypher queries against a Neo4j graph database. The `pdbe_run_cypher_query` tool is only available when the following environment variables are set:

- `NEO4J_URL`: The Neo4j database URL (e.g., `bolt://localhost:7687`)
- `NEO4J_URI`: The Neo4j database URL (e.g., `bolt://localhost:7687`)
- `NEO4J_USERNAME`: The Neo4j username
- `NEO4J_PASSWORD`: The Neo4j password
- `NEO4J_DATABASE` (optional): The database name. When set, this is passed to the Neo4j driver for Neo4j 4+. For Neo4j 3.5 compatibility, omit this variable to use the default database.
Expand Down
Loading
Loading