MCP, MCP server
io.github.alex-feel/mcp-context-server
io.github.alex-feel/mcp-context-server, an MCP server listed in the PlugVet directory.
Compatibility: Not stated.
Grade C
One Medium finding. Read the findings before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
INSTALL_REMOTE_SCRIPT
Why this grade
- INSTALL_REMOTE_SCRIPT Medium
Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).
docs/semantic-search.md, line 114
curl -fsSL https://ollama.com/install.sh | sh
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Note
requests shell access. The manifest names this permission.
PERMISSION_SHELL_DECLARED
agents/claude-code/hooks/user_prompt_context_saver.py, line 342
result = subprocess.run(
agents/claude-code/hooks/user_prompt_context_saver.py, line 1706
result = subprocess.run(
agents/claude-code/hooks/worktree_context.py, line 200
result = subprocess.run(
Install and update
Serious
install fetches a script from the network.
INSTALL_REMOTE_SCRIPT
docs/semantic-search.md, line 114
curl -fsSL https://ollama.com/install.sh | sh
Network
Concern
can reach a host that is not written as a fixed address.
NETWORK_NO_FIXED_HOST
app/cli/_embedding_introspect.py, line 154
rows = await conn.fetch('SELECT DISTINCT model_name FROM embedding_metadata')
app/cli/_embedding_introspect.py, line 178
rows = await conn.fetch('SELECT DISTINCT dimensions FROM embedding_metadata')
app/cli/migrate_embeddings.py, line 323
rows = await conn.fetch(
Show more
app/cli/migrate_reembed.py, line 287
rows = await conn.fetch(
app/cli/migrate_compression/compress.py, line 230
rows = await conn.fetch(
app/cli/migrate_compression/decompress.py, line 404
rows = await conn.fetch(
app/cli/migrate_uuid/pg_embeddings.py, line 49
rows = await source.fetch(select_sql)
app/cli/migrate_uuid/pg_embeddings.py, line 179
rows = await source.fetch(select_sql)
Dockerfile, line 79
CMD python -c "import os, urllib.request; urllib.request.urlopen('http://127.0.0.1:' + os.environ.get('FASTMCP_PORT', '8000') + '/health').read()" || exit 1
docs/deployment/docker.md, line 1103
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health').read()"]
Secrets
Concern
reads a credential or environment file.
SECRETS_PATH_DOTENV
app/auth/simple_token.py, line 80
'Set via environment variable or .env file.'
app/settings/base.py, line 1
"""Settings base classes: the shared environment and ``.env`` configuration, and the tri-state feature toggle."""
app/settings/base.py, line 12
"""Base for the settings classes: values come from the environment and the nearest ``.env`` file, and are frozen."""
Show more
app/startup/__init__.py, line 327
This function bridges the gap when users configure via .env file or settings.
app/startup/providers.py, line 36
# This enables LangSmith SDK auto-detection when users configure via .env file
.dockerignore, line 47
# Environment files (secrets - should use Docker secrets/env vars instead)
.dockerignore, line 49
deploy/docker/.env
.gitignore, line 133
# Environments
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Note
a file was over the read cap and was not fully read. the file cap was reached before every file was read.
OBFUSCATION_FILE_OVER_READ_CAP OBFUSCATION_FILE_CAP_REACHED
uv.lock, line 1
version = 1
tests/cli/__init__.py, line 1
"""Tests for the migration CLI."""
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit ce21253ad297. requests shell access. The manifest names this permission. install fetches a script from the network. can reach a host that is not written as a fixed address. reads a credential or environment file. a file was over the read cap and was not fully read. the file cap was reached before every file was read.
Date and source
Date checked:
github.com
Commit graded: ce21253ad2979ede817d961c9fcd04dc4bf7e1e6
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.