pinescript-mcp 0.7.2__tar.gz → 0.7.3__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 (46) hide show
  1. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/PKG-INFO +2 -2
  2. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/README.md +1 -1
  3. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/pyproject.toml +1 -1
  4. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/__init__.py +1 -1
  5. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/server.py +33 -1
  6. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/.gitignore +0 -0
  7. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/LICENSE +0 -0
  8. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/__main__.py +0 -0
  9. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/LLM_MANIFEST.md +0 -0
  10. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/concepts/colors_and_display.md +0 -0
  11. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/concepts/common_errors.md +0 -0
  12. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/concepts/execution_model.md +0 -0
  13. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/concepts/methods.md +0 -0
  14. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/concepts/objects.md +0 -0
  15. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/concepts/timeframes.md +0 -0
  16. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/pine_v6_functions.json +0 -0
  17. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/annotations.md +0 -0
  18. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/constants.md +0 -0
  19. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/functions/collections.md +0 -0
  20. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/functions/drawing.md +0 -0
  21. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/functions/general.md +0 -0
  22. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/functions/request.md +0 -0
  23. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/functions/strategy.md +0 -0
  24. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/functions/ta.md +0 -0
  25. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/keywords.md +0 -0
  26. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/migration_v5_to_v6.md +0 -0
  27. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/operators.md +0 -0
  28. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/pine_v6_cheatsheet.md +0 -0
  29. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/pine_v6_functions.json +0 -0
  30. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/types.md +0 -0
  31. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/reference/variables.md +0 -0
  32. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/backgrounds.md +0 -0
  33. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/bar_coloring.md +0 -0
  34. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/bar_plotting.md +0 -0
  35. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/colors.md +0 -0
  36. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/fills.md +0 -0
  37. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/levels.md +0 -0
  38. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/lines_and_boxes.md +0 -0
  39. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/overview.md +0 -0
  40. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/plots.md +0 -0
  41. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/tables.md +0 -0
  42. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/visuals/texts_and_shapes.md +0 -0
  43. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/writing_scripts/debugging.md +0 -0
  44. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/writing_scripts/limitations.md +0 -0
  45. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/writing_scripts/profiling_and_optimization.md +0 -0
  46. {pinescript_mcp-0.7.2 → pinescript_mcp-0.7.3}/src/pinescript_mcp/docs/writing_scripts/style_guide.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pinescript-mcp
3
- Version: 0.7.2
3
+ Version: 0.7.3
4
4
  Summary: MCP server providing Pine Script v6 documentation for AI assistants
5
5
  Project-URL: Homepage, https://github.com/paulieb89/pinescript-mcp
6
6
  Project-URL: Documentation, https://github.com/paulieb89/pinescript-mcp#readme
@@ -121,7 +121,7 @@ Documentation is bundled in the package — each version contains a frozen snaps
121
121
  "mcpServers": {
122
122
  "pinescript-docs": {
123
123
  "command": "uvx",
124
- "args": ["pinescript-mcp==0.7.0"]
124
+ "args": ["pinescript-mcp==0.7.3"]
125
125
  }
126
126
  }
127
127
  }
@@ -91,7 +91,7 @@ Documentation is bundled in the package — each version contains a frozen snaps
91
91
  "mcpServers": {
92
92
  "pinescript-docs": {
93
93
  "command": "uvx",
94
- "args": ["pinescript-mcp==0.7.0"]
94
+ "args": ["pinescript-mcp==0.7.3"]
95
95
  }
96
96
  }
97
97
  }
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pinescript-mcp"
7
- version = "0.7.2"
7
+ version = "0.7.3"
8
8
  description = "MCP server providing Pine Script v6 documentation for AI assistants"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -4,4 +4,4 @@ Provides tools to list, search, and read Pine Script v6 documentation
4
4
  for use with AI assistants like Claude.
5
5
  """
6
6
 
7
- __version__ = "0.7.1"
7
+ __version__ = "0.7.3"
@@ -930,6 +930,31 @@ async def metrics(request):
930
930
  return Response(generate_latest(METRICS_REGISTRY), media_type=CONTENT_TYPE_LATEST)
931
931
 
932
932
 
933
+ class _AcceptNormalizer:
934
+ """Normalize Accept header on /mcp to prevent 406 Not Acceptable.
935
+
936
+ Workaround for modelcontextprotocol/python-sdk#2349 — the MCP SDK
937
+ requires both application/json AND text/event-stream in the Accept
938
+ header (even in SSE mode), but Anthropic's MCP proxy and other
939
+ clients send them separately per request type. Stamp the combined
940
+ value on /mcp only; SSE paths (/sse, /messages) pass through.
941
+ """
942
+ def __init__(self, app, mcp_path: str = "/mcp"):
943
+ self.app = app
944
+ self._mcp_path = mcp_path.rstrip("/")
945
+
946
+ async def __call__(self, scope, receive, send):
947
+ if scope.get("type") == "http" and scope.get("path", "").rstrip("/") == self._mcp_path:
948
+ headers = [
949
+ (b"accept", b"application/json, text/event-stream")
950
+ if name.lower() == b"accept"
951
+ else (name, value)
952
+ for name, value in scope.get("headers", [])
953
+ ]
954
+ scope = {**scope, "headers": headers}
955
+ await self.app(scope, receive, send)
956
+
957
+
933
958
  def main():
934
959
  """Entry point for the CLI."""
935
960
  import argparse
@@ -965,7 +990,14 @@ def main():
965
990
  else:
966
991
  await streamable_app(scope, receive, send)
967
992
 
968
- config = uvicorn.Config(app, host=args.host, port=args.port, log_level="info")
993
+ config = uvicorn.Config(
994
+ _AcceptNormalizer(app),
995
+ host=args.host,
996
+ port=args.port,
997
+ log_level="info",
998
+ forwarded_allow_ips="*",
999
+ proxy_headers=True,
1000
+ )
969
1001
  server = uvicorn.Server(config)
970
1002
  asyncio.run(server.serve())
971
1003
  else:
File without changes