python-docs-mcp-server 0.1.3__tar.gz → 0.1.4__tar.gz

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.
Files changed (77) hide show
  1. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/.github/workflows/release.yml +39 -1
  2. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/PKG-INFO +2 -1
  3. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/README.md +1 -0
  4. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/pyproject.toml +1 -1
  5. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/server.json +2 -2
  6. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/uv.lock +1 -1
  7. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/.cursorignore +0 -0
  8. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/.github/INTEGRATION-TEST.md +0 -0
  9. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/.github/RELEASE.md +0 -0
  10. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/.github/workflows/ci.yml +0 -0
  11. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/.github/workflows/e2e.yml +0 -0
  12. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/.gitignore +0 -0
  13. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/AGENTS.md +0 -0
  14. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/CLAUDE.md +0 -0
  15. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/CONTRIBUTING.md +0 -0
  16. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/LICENSE +0 -0
  17. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/glama.json +0 -0
  18. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/__init__.py +0 -0
  19. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/__main__.py +0 -0
  20. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/app_context.py +0 -0
  21. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/data/synonyms.yaml +0 -0
  22. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/detection.py +0 -0
  23. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/diagnostics.py +0 -0
  24. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/errors.py +0 -0
  25. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/ingestion/__init__.py +0 -0
  26. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/ingestion/cpython_versions.py +0 -0
  27. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/ingestion/inventory.py +0 -0
  28. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/ingestion/publish.py +0 -0
  29. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/ingestion/sphinx_json.py +0 -0
  30. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/models.py +0 -0
  31. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/py.typed +0 -0
  32. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/retrieval/__init__.py +0 -0
  33. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/retrieval/budget.py +0 -0
  34. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/retrieval/query.py +0 -0
  35. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/retrieval/ranker.py +0 -0
  36. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/server.py +0 -0
  37. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/__init__.py +0 -0
  38. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/cache.py +0 -0
  39. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/content.py +0 -0
  40. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/observability.py +0 -0
  41. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/package_docs.py +0 -0
  42. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/persistent_cache.py +0 -0
  43. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/search.py +0 -0
  44. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/version.py +0 -0
  45. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/services/version_resolution.py +0 -0
  46. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/storage/__init__.py +0 -0
  47. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/storage/db.py +0 -0
  48. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/src/mcp_server_python_docs/storage/schema.sql +0 -0
  49. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/__init__.py +0 -0
  50. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/conftest.py +0 -0
  51. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/retrieval_regression_cases.json +0 -0
  52. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/sample_broken.fjson +0 -0
  53. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/sample_library.fjson +0 -0
  54. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/schema-get_docs-input.json +0 -0
  55. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/schema-get_docs-output.json +0 -0
  56. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/schema-list_versions-output.json +0 -0
  57. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/schema-search_docs-input.json +0 -0
  58. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/fixtures/schema-search_docs-output.json +0 -0
  59. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_ci_workflows.py +0 -0
  60. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_doctor.py +0 -0
  61. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_ingestion.py +0 -0
  62. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_mcp_get_docs_cache_smoke.py +0 -0
  63. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_multi_version.py +0 -0
  64. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_package_docs.py +0 -0
  65. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_packaging.py +0 -0
  66. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_persistent_docs_cache.py +0 -0
  67. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_phase1_integration.py +0 -0
  68. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_publish.py +0 -0
  69. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_retrieval.py +0 -0
  70. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_retrieval_regression.py +0 -0
  71. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_schema.py +0 -0
  72. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_schema_snapshot.py +0 -0
  73. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_services.py +0 -0
  74. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_stability.py +0 -0
  75. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_stdio_hygiene.py +0 -0
  76. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_stdio_smoke.py +0 -0
  77. {python_docs_mcp_server-0.1.3 → python_docs_mcp_server-0.1.4}/tests/test_synonyms.py +0 -0
@@ -35,6 +35,16 @@ jobs:
35
35
  echo "::error::Tag ${GITHUB_REF_NAME} does not match pyproject.toml version ${PKG_VERSION}"
36
36
  exit 1
37
37
  fi
38
+ SERVER_VERSION=$(uv run python -c "import json; print(json.load(open('server.json'))['version'])")
39
+ PACKAGE_VERSION=$(uv run python -c "import json; print(json.load(open('server.json'))['packages'][0]['version'])")
40
+ if [ "$TAG_VERSION" != "$SERVER_VERSION" ]; then
41
+ echo "::error::Tag ${GITHUB_REF_NAME} does not match server.json version ${SERVER_VERSION}"
42
+ exit 1
43
+ fi
44
+ if [ "$TAG_VERSION" != "$PACKAGE_VERSION" ]; then
45
+ echo "::error::Tag ${GITHUB_REF_NAME} does not match server.json package version ${PACKAGE_VERSION}"
46
+ exit 1
47
+ fi
38
48
  echo "Version check passed: ${PKG_VERSION}"
39
49
 
40
50
  - name: Run linter
@@ -97,9 +107,37 @@ jobs:
97
107
  - name: Publish to PyPI
98
108
  uses: pypa/gh-action-pypi-publish@release/v1
99
109
 
100
- github-release:
110
+ publish-mcp-registry:
101
111
  needs: publish
102
112
  runs-on: ubuntu-latest
113
+ name: Publish to MCP Registry
114
+ timeout-minutes: 10
115
+ permissions:
116
+ id-token: write
117
+ contents: read
118
+
119
+ steps:
120
+ - uses: actions/checkout@v6
121
+
122
+ - name: Install mcp-publisher
123
+ run: |
124
+ curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" \
125
+ | tar xz mcp-publisher
126
+
127
+ - name: Validate server.json
128
+ run: ./mcp-publisher validate server.json
129
+
130
+ - name: Authenticate to MCP Registry
131
+ run: ./mcp-publisher login github-oidc
132
+
133
+ - name: Publish to MCP Registry
134
+ run: ./mcp-publisher publish
135
+
136
+ github-release:
137
+ needs:
138
+ - publish
139
+ - publish-mcp-registry
140
+ runs-on: ubuntu-latest
103
141
  name: Create GitHub Release
104
142
  timeout-minutes: 10
105
143
  permissions:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-docs-mcp-server
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: A read-only, version-aware MCP retrieval server over Python standard library documentation
5
5
  Author-email: Aymen Hammouda <hammouda.aymen@gmail.com>
6
6
  License-Expression: MIT
@@ -31,6 +31,7 @@ Description-Content-Type: text/markdown
31
31
  <!-- mcp-name: io.github.ayhammouda/python-docs-mcp-server -->
32
32
 
33
33
  [![CI](https://github.com/ayhammouda/python-docs-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/ayhammouda/python-docs-mcp-server/actions/workflows/ci.yml)
34
+ [![python-docs-mcp-server MCP server](https://glama.ai/mcp/servers/ayhammouda/python-docs-mcp-server/badges/score.svg)](https://glama.ai/mcp/servers/ayhammouda/python-docs-mcp-server)
34
35
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
35
36
  [![Python 3.12+](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/)
36
37
  [![No API Keys](https://img.shields.io/badge/API%20keys-none-success)](#why-teams-like-this)
@@ -3,6 +3,7 @@
3
3
  <!-- mcp-name: io.github.ayhammouda/python-docs-mcp-server -->
4
4
 
5
5
  [![CI](https://github.com/ayhammouda/python-docs-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/ayhammouda/python-docs-mcp-server/actions/workflows/ci.yml)
6
+ [![python-docs-mcp-server MCP server](https://glama.ai/mcp/servers/ayhammouda/python-docs-mcp-server/badges/score.svg)](https://glama.ai/mcp/servers/ayhammouda/python-docs-mcp-server)
6
7
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
8
  [![Python 3.12+](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/)
8
9
  [![No API Keys](https://img.shields.io/badge/API%20keys-none-success)](#why-teams-like-this)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "python-docs-mcp-server"
7
- version = "0.1.3"
7
+ version = "0.1.4"
8
8
  description = "A read-only, version-aware MCP retrieval server over Python standard library documentation"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -8,13 +8,13 @@
8
8
  "url": "https://github.com/ayhammouda/python-docs-mcp-server",
9
9
  "source": "github"
10
10
  },
11
- "version": "0.1.3",
11
+ "version": "0.1.4",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "pypi",
15
15
  "registryBaseUrl": "https://pypi.org",
16
16
  "identifier": "python-docs-mcp-server",
17
- "version": "0.1.3",
17
+ "version": "0.1.4",
18
18
  "runtimeHint": "uvx",
19
19
  "transport": {
20
20
  "type": "stdio"
@@ -541,7 +541,7 @@ wheels = [
541
541
 
542
542
  [[package]]
543
543
  name = "python-docs-mcp-server"
544
- version = "0.1.3"
544
+ version = "0.1.4"
545
545
  source = { editable = "." }
546
546
  dependencies = [
547
547
  { name = "beautifulsoup4" },