iflow-mcp_benhaotang_mcp-mma-docs 0.1.0__py3-none-any.whl

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.
.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ /__pycache__
2
+ /.vscode
3
+ /.notebook
2976_process.log ADDED
@@ -0,0 +1,3 @@
1
+ [2026-02-04 04:28:00] [START] 开始处理项目: benhaotang/mcp-mma-docs
2
+ [2026-02-04 04:28:04] [SUCCESS] 步骤2完成: 项目类型为Python MCP服务端项目
3
+ [2026-02-04 04:29:58] [SUCCESS] 步骤3完成: 本地测试通过,检测到2个工具
LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Benhao Tang
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.
PKG-INFO ADDED
@@ -0,0 +1,90 @@
1
+ Metadata-Version: 2.4
2
+ Name: iflow-mcp_benhaotang_mcp-mma-docs
3
+ Version: 0.1.0
4
+ Summary: Mathematica Documentation MCP server using wolframscript CLI
5
+ License-File: LICENSE
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: aiohttp
8
+ Requires-Dist: mcp>=1.3.0
9
+ Requires-Dist: pydantic
10
+ Requires-Dist: uvicorn
11
+ Description-Content-Type: text/markdown
12
+
13
+ # Mathematica Documentation MCP server
14
+
15
+ ## General & Usage
16
+
17
+ Made with [mcp-python-sdk](https://github.com/modelcontextprotocol/python-sdk)
18
+
19
+ > [!IMPORTANT]
20
+ > if you are still using FastMCP version of this mcp server, please consider pull this repo again and update to newer versions as FastMCP is already deprecated.
21
+
22
+ Requirements: `pip install -r requirements.txt` and have Mathematica installed (or at least `wolframscript` callable from terminal, e.g. via [free wolfram engine for developers](https://www.wolfram.com/engine/index.php.en)).
23
+
24
+ Run `mcp dev path/to/mcp-mma-doc.py` to initialize the server.
25
+
26
+ Run `mcp install path/to/mcp-mma-doc.py` to install to claude or add following to claude/cline config:
27
+
28
+ ```json
29
+ "mathematica-docs": {
30
+ "command": "uv",
31
+ "args": [
32
+ "run",
33
+ "--with",
34
+ "mcp",
35
+ "mcp",
36
+ "run",
37
+ "/path/to/mcp-mma-doc.py"
38
+ ]
39
+ }
40
+ ```
41
+
42
+ > [!NOTE]
43
+ > Currently using `uv` with `mcp` seems to break certain Linux/macOS version of Claude-desktop, you might need to set as:
44
+ > ```json
45
+ > "mathematica-docs": {
46
+ > "command": "/path/to/mcp",
47
+ > "args": [
48
+ > "run",
49
+ > "/path/to/mcp-mma-doc.py"
50
+ > ]
51
+ > }
52
+ > ```
53
+ > instead, with `/path/to/mcp` got from running `which mcp` in terminal
54
+
55
+ ## Custom wolframscript install path
56
+
57
+ If you need custom path to `wolframscript`, or it is not in system path, you can set via environmental variable by
58
+ ```bash
59
+ export WOLFRAMSCRIPT_PATH="/usr/bin/wolframscript"
60
+ ```
61
+ or set as an `env` key in mcp config
62
+ ```json
63
+ "mathematica-docs": {
64
+ "command": ...,
65
+ "args": ....
66
+ "env": {
67
+ "WOLFRAMSCRIPT_PATH": "/usr/bin/wolframscript"
68
+ }
69
+ }
70
+ ```
71
+
72
+ ## Tools
73
+
74
+ The plugin provides the following commands:
75
+
76
+ - get_docs: support factory functions, function via an addon, and function via a package.
77
+ - Basic usage: get_docs("Plot")
78
+ - With package: get_docs("WeightSystem", packages=["LieART"])
79
+ - With addon: get_docs("FCFeynmanParametrize", packages=["FeynCalc"], load_addons=["FeynArts"])
80
+ - list_package_symbols: list all symbols/functions in a package.
81
+ - Basic usage: list_package_symbols("FeynCalc")
82
+
83
+ ## Known issues
84
+
85
+ - If you see things like `INFO Processing request of type __init__.py:431 ListToolsRequest` in cline, you can ignore them as this will not affect it from working, this is because cline parse tool list together with console debug infos, and current python-sdk cannot disable console messages. This will not affect any function calling part other than seeing this warning.
86
+ - Some MMA docs may contain complex styling format, and is not easy to remove with simple regex, your llm may be influenced by this, please instruct it to ignore the styling format and write in InputForm only.
87
+
88
+ ## Screenshots
89
+
90
+ ![screenshot](image.png)
README.md ADDED
@@ -0,0 +1,78 @@
1
+ # Mathematica Documentation MCP server
2
+
3
+ ## General & Usage
4
+
5
+ Made with [mcp-python-sdk](https://github.com/modelcontextprotocol/python-sdk)
6
+
7
+ > [!IMPORTANT]
8
+ > if you are still using FastMCP version of this mcp server, please consider pull this repo again and update to newer versions as FastMCP is already deprecated.
9
+
10
+ Requirements: `pip install -r requirements.txt` and have Mathematica installed (or at least `wolframscript` callable from terminal, e.g. via [free wolfram engine for developers](https://www.wolfram.com/engine/index.php.en)).
11
+
12
+ Run `mcp dev path/to/mcp-mma-doc.py` to initialize the server.
13
+
14
+ Run `mcp install path/to/mcp-mma-doc.py` to install to claude or add following to claude/cline config:
15
+
16
+ ```json
17
+ "mathematica-docs": {
18
+ "command": "uv",
19
+ "args": [
20
+ "run",
21
+ "--with",
22
+ "mcp",
23
+ "mcp",
24
+ "run",
25
+ "/path/to/mcp-mma-doc.py"
26
+ ]
27
+ }
28
+ ```
29
+
30
+ > [!NOTE]
31
+ > Currently using `uv` with `mcp` seems to break certain Linux/macOS version of Claude-desktop, you might need to set as:
32
+ > ```json
33
+ > "mathematica-docs": {
34
+ > "command": "/path/to/mcp",
35
+ > "args": [
36
+ > "run",
37
+ > "/path/to/mcp-mma-doc.py"
38
+ > ]
39
+ > }
40
+ > ```
41
+ > instead, with `/path/to/mcp` got from running `which mcp` in terminal
42
+
43
+ ## Custom wolframscript install path
44
+
45
+ If you need custom path to `wolframscript`, or it is not in system path, you can set via environmental variable by
46
+ ```bash
47
+ export WOLFRAMSCRIPT_PATH="/usr/bin/wolframscript"
48
+ ```
49
+ or set as an `env` key in mcp config
50
+ ```json
51
+ "mathematica-docs": {
52
+ "command": ...,
53
+ "args": ....
54
+ "env": {
55
+ "WOLFRAMSCRIPT_PATH": "/usr/bin/wolframscript"
56
+ }
57
+ }
58
+ ```
59
+
60
+ ## Tools
61
+
62
+ The plugin provides the following commands:
63
+
64
+ - get_docs: support factory functions, function via an addon, and function via a package.
65
+ - Basic usage: get_docs("Plot")
66
+ - With package: get_docs("WeightSystem", packages=["LieART"])
67
+ - With addon: get_docs("FCFeynmanParametrize", packages=["FeynCalc"], load_addons=["FeynArts"])
68
+ - list_package_symbols: list all symbols/functions in a package.
69
+ - Basic usage: list_package_symbols("FeynCalc")
70
+
71
+ ## Known issues
72
+
73
+ - If you see things like `INFO Processing request of type __init__.py:431 ListToolsRequest` in cline, you can ignore them as this will not affect it from working, this is because cline parse tool list together with console debug infos, and current python-sdk cannot disable console messages. This will not affect any function calling part other than seeing this warning.
74
+ - Some MMA docs may contain complex styling format, and is not easy to remove with simple regex, your llm may be influenced by this, please instruct it to ignore the styling format and write in InputForm only.
75
+
76
+ ## Screenshots
77
+
78
+ ![screenshot](image.png)
@@ -0,0 +1,90 @@
1
+ Metadata-Version: 2.4
2
+ Name: iflow-mcp_benhaotang_mcp-mma-docs
3
+ Version: 0.1.0
4
+ Summary: Mathematica Documentation MCP server using wolframscript CLI
5
+ License-File: LICENSE
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: aiohttp
8
+ Requires-Dist: mcp>=1.3.0
9
+ Requires-Dist: pydantic
10
+ Requires-Dist: uvicorn
11
+ Description-Content-Type: text/markdown
12
+
13
+ # Mathematica Documentation MCP server
14
+
15
+ ## General & Usage
16
+
17
+ Made with [mcp-python-sdk](https://github.com/modelcontextprotocol/python-sdk)
18
+
19
+ > [!IMPORTANT]
20
+ > if you are still using FastMCP version of this mcp server, please consider pull this repo again and update to newer versions as FastMCP is already deprecated.
21
+
22
+ Requirements: `pip install -r requirements.txt` and have Mathematica installed (or at least `wolframscript` callable from terminal, e.g. via [free wolfram engine for developers](https://www.wolfram.com/engine/index.php.en)).
23
+
24
+ Run `mcp dev path/to/mcp-mma-doc.py` to initialize the server.
25
+
26
+ Run `mcp install path/to/mcp-mma-doc.py` to install to claude or add following to claude/cline config:
27
+
28
+ ```json
29
+ "mathematica-docs": {
30
+ "command": "uv",
31
+ "args": [
32
+ "run",
33
+ "--with",
34
+ "mcp",
35
+ "mcp",
36
+ "run",
37
+ "/path/to/mcp-mma-doc.py"
38
+ ]
39
+ }
40
+ ```
41
+
42
+ > [!NOTE]
43
+ > Currently using `uv` with `mcp` seems to break certain Linux/macOS version of Claude-desktop, you might need to set as:
44
+ > ```json
45
+ > "mathematica-docs": {
46
+ > "command": "/path/to/mcp",
47
+ > "args": [
48
+ > "run",
49
+ > "/path/to/mcp-mma-doc.py"
50
+ > ]
51
+ > }
52
+ > ```
53
+ > instead, with `/path/to/mcp` got from running `which mcp` in terminal
54
+
55
+ ## Custom wolframscript install path
56
+
57
+ If you need custom path to `wolframscript`, or it is not in system path, you can set via environmental variable by
58
+ ```bash
59
+ export WOLFRAMSCRIPT_PATH="/usr/bin/wolframscript"
60
+ ```
61
+ or set as an `env` key in mcp config
62
+ ```json
63
+ "mathematica-docs": {
64
+ "command": ...,
65
+ "args": ....
66
+ "env": {
67
+ "WOLFRAMSCRIPT_PATH": "/usr/bin/wolframscript"
68
+ }
69
+ }
70
+ ```
71
+
72
+ ## Tools
73
+
74
+ The plugin provides the following commands:
75
+
76
+ - get_docs: support factory functions, function via an addon, and function via a package.
77
+ - Basic usage: get_docs("Plot")
78
+ - With package: get_docs("WeightSystem", packages=["LieART"])
79
+ - With addon: get_docs("FCFeynmanParametrize", packages=["FeynCalc"], load_addons=["FeynArts"])
80
+ - list_package_symbols: list all symbols/functions in a package.
81
+ - Basic usage: list_package_symbols("FeynCalc")
82
+
83
+ ## Known issues
84
+
85
+ - If you see things like `INFO Processing request of type __init__.py:431 ListToolsRequest` in cline, you can ignore them as this will not affect it from working, this is because cline parse tool list together with console debug infos, and current python-sdk cannot disable console messages. This will not affect any function calling part other than seeing this warning.
86
+ - Some MMA docs may contain complex styling format, and is not easy to remove with simple regex, your llm may be influenced by this, please instruct it to ignore the styling format and write in InputForm only.
87
+
88
+ ## Screenshots
89
+
90
+ ![screenshot](image.png)
@@ -0,0 +1,17 @@
1
+ ./.gitignore,sha256=Tp_5t-qmGciZkIW0PL1gI9H0tBrVxbATsSDT2agRYtk,32
2
+ ./2976_process.log,sha256=wP3S6ZogHA27WeYSCdU8Te5cAmZDYkVICtPyhnSf_UE,250
3
+ ./LICENSE,sha256=Cvml_wulzZNCilnTty6-VIh3-TTeXAAC7g-vH5o_LvI,1068
4
+ ./PKG-INFO,sha256=kIcwpqw3w5I4qrKRj9kqMqZPZ54HeQoI-TRgr7V1U7k,3122
5
+ ./README.md,sha256=I5H5d3GUnkQtFXP1Xg1650CINOnRnsgPShxlAWoIbfg,2792
6
+ ./image.png,sha256=zpQEvjuuFdRKBQdNFy2KEvQN0UNip7NPMxfvPb3aSdc,345603
7
+ ./language.json,sha256=J-z0poNcsv31IHB413--iOY8LoHBKiTHeybHX3abokI,7
8
+ ./mcp_mma_doc.py,sha256=rUzeI4H7fYLDUbkVuZwcGBTh1UoCw9aISywFKQ5lfdg,5469
9
+ ./package_name,sha256=uiG761JJpS1_nt44jmTWcL75xBm2GrUYpnq4YlaRBpc,34
10
+ ./push_info.json,sha256=Jz8OEDaoQQKK0sv77svuai4-uRrZDIXXq0jyLkl82Hc,127
11
+ ./pyproject.toml,sha256=xSg3xENfPv1YRwrbFq0QaDaB4aF3X_DvF_kJ8ul9h9w,457
12
+ ./requirements.txt,sha256=kSvH1Ps78BRZs5CHbGf26-TRTsL0Rmm94TYVwdNitBg,35
13
+ iflow_mcp_benhaotang_mcp_mma_docs-0.1.0.dist-info/METADATA,sha256=kIcwpqw3w5I4qrKRj9kqMqZPZ54HeQoI-TRgr7V1U7k,3122
14
+ iflow_mcp_benhaotang_mcp_mma_docs-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
15
+ iflow_mcp_benhaotang_mcp_mma_docs-0.1.0.dist-info/entry_points.txt,sha256=NCngI4hCK9T9v-aRm8MzIqyra5u2CeXI5McmhjX5RBg,50
16
+ iflow_mcp_benhaotang_mcp_mma_docs-0.1.0.dist-info/licenses/LICENSE,sha256=Cvml_wulzZNCilnTty6-VIh3-TTeXAAC7g-vH5o_LvI,1068
17
+ iflow_mcp_benhaotang_mcp_mma_docs-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ mcp-mma-docs = mcp_mma_doc:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Benhao Tang
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.
image.png ADDED
Binary file
language.json ADDED
@@ -0,0 +1 @@
1
+ python
mcp_mma_doc.py ADDED
@@ -0,0 +1,159 @@
1
+ from mcp.server.fastmcp import FastMCP
2
+ from typing import Optional, List
3
+ from pydantic import Field
4
+ import subprocess
5
+ import os
6
+
7
+ # Get wolframscript path from environment variable
8
+ wolframscript = os.environ.get("WOLFRAMSCRIPT_PATH")
9
+
10
+ if not wolframscript:
11
+ wolframscript='wolframscript'
12
+
13
+ # Create the MCP server
14
+ mcp = FastMCP(
15
+ "Mathematica Documentation Search 📚",
16
+ dependencies=["pydantic"]
17
+ )
18
+
19
+ def run_wolframscript(cmd: str) -> str:
20
+ """Run a wolframscript command and return its output"""
21
+ try:
22
+ full_cmd = [wolframscript, '-code', cmd]
23
+
24
+ # Run the command and capture output
25
+ result = subprocess.run(
26
+ full_cmd,
27
+ capture_output=True,
28
+ text=True,
29
+ check=True
30
+ )
31
+
32
+ return result.stdout.strip()
33
+ except subprocess.CalledProcessError as e:
34
+ return f"Error executing Mathematica command: {e.stderr}"
35
+ except Exception as e:
36
+ return f"Error: {str(e)}"
37
+
38
+ @mcp.tool()
39
+ async def get_docs(
40
+ symbol: str = Field(..., description="The Mathematica symbol or function to look up (e.g., 'Plot', 'FCFeynmanParametrize')"),
41
+ packages: Optional[List[str]] = Field(
42
+ None,
43
+ description="Optional list of packages to load before looking up documentation (e.g., ['FeynCalc'])"
44
+ ),
45
+ load_addons: Optional[List[str]] = Field(
46
+ None,
47
+ description="Optional list of addons to load (e.g., ['FeynArts'])"
48
+ )
49
+ ) -> str:
50
+ """
51
+ Get documentation for a Mathematica symbol or function using wolframscript CLI.
52
+ Can optionally load packages and addons before looking up documentation.
53
+
54
+ Examples:
55
+ - Basic usage: get_docs("Plot")
56
+ - With package: get_docs("WeightSystem", packages=["LieART"])
57
+ - With addon: get_docs("FCFeynmanParametrize", packages=["FeynCalc"], load_addons=["FeynArts"])
58
+ """
59
+ # Build the Mathematica command
60
+ cmd_parts = []
61
+
62
+ # Add addons if specified
63
+ if load_addons:
64
+ addons_list = "{" + ",".join(f'"{addon}"' for addon in load_addons) + "}"
65
+ cmd_parts.append(f'$LoadAddOns = {addons_list};')
66
+
67
+ # Add packages to load
68
+ if packages:
69
+ for package in packages:
70
+ cmd_parts.append(f'<< {package}`')
71
+
72
+ # Add the documentation query
73
+ cmd_parts.append(f'?{symbol}')
74
+
75
+ # Join all parts with semicolons
76
+ cmd = "; ".join(cmd_parts)
77
+
78
+ # Get the documentation
79
+ result = run_wolframscript(cmd)
80
+
81
+ if not result:
82
+ return f"No documentation found for {symbol}. Make sure the symbol exists and any required packages are specified."
83
+
84
+ # Format the output
85
+ markdown = f"# Documentation for `{symbol}`\n\n"
86
+ markdown += "```\n" # Use code block for preserving formatting
87
+ markdown += result
88
+ markdown += "\n```\n\n**Notices for AI assistents: The Doc above may contain format related functions like `DisplayForm[...]` or some `*Box[...]` e.g. RowBox, StyleBox, they are NOT relevant for getting the final result and SHOULD NOT be included in your final code!!! The reason is because Mathematica will automatically render InputForm or StandardForm into this DisplayForm in their frontend, so the users are not suppose to see and use these 'format related functions'. So please ALWAYS FIRST convert the doc from this 'unrendered DisplayForm' format to StandardForm in your mind and always ONLY write your code in StandardForm to user.**\n\n"
89
+
90
+ # Add loading information if applicable
91
+ if packages or load_addons:
92
+ markdown += "\n*Documentation retrieved after loading:*\n"
93
+ if packages:
94
+ markdown += f"- Packages: {', '.join(packages)}\n"
95
+ if load_addons:
96
+ markdown += f"- Addons: {', '.join(load_addons)}\n"
97
+
98
+ return markdown
99
+
100
+ @mcp.tool()
101
+ async def list_package_symbols(
102
+ package: str = Field(..., description="The Mathematica package to list symbols from (e.g., 'FeynCalc')"),
103
+ load_addons: Optional[List[str]] = Field(
104
+ None,
105
+ description="Optional list of addons to load before listing symbols (e.g., ['FeynArts'])"
106
+ )
107
+ ) -> str:
108
+ """
109
+ List all available symbols from a specific Mathematica package using wolframscript CLI.
110
+
111
+ Example:
112
+ - List FeynCalc symbols: list_package_symbols("FeynCalc", load_addons=["FeynArts"])
113
+ """
114
+ # Build the Mathematica command
115
+ cmd_parts = []
116
+
117
+ # Add addons if specified
118
+ if load_addons:
119
+ addons_list = "{" + ",".join(f'"{addon}"' for addon in load_addons) + "}"
120
+ cmd_parts.append(f'$LoadAddOns = {addons_list};')
121
+
122
+ # Load package and get symbols
123
+ cmd_parts.extend([
124
+ f'<< {package}`',
125
+ f'Names["{package}`*"]'
126
+ ])
127
+
128
+ # Join commands
129
+ cmd = "; ".join(cmd_parts)
130
+
131
+ # Get the symbols
132
+ result = run_wolframscript(cmd)
133
+
134
+ if not result or result.startswith("Error"):
135
+ return f"Error listing symbols from package {package}: {result}"
136
+
137
+ # Parse the output (it comes as a Mathematica list)
138
+ # Remove curly braces and split by commas
139
+ symbols = result.strip("{}").split(",")
140
+ symbols = [s.strip().strip('"') for s in symbols]
141
+
142
+ # Format the output
143
+ markdown = f"# Symbols available in {package}\n\n"
144
+ for symbol in sorted(symbols):
145
+ markdown += f"- `{symbol}`\n"
146
+
147
+ if load_addons:
148
+ markdown += f"\n*Symbols listed after loading addons: {', '.join(load_addons)}*\n"
149
+
150
+ return markdown
151
+
152
+
153
+ def main():
154
+ """Main entry point for the MCP server"""
155
+ mcp.run()
156
+
157
+
158
+ if __name__ == "__main__":
159
+ main()
package_name ADDED
@@ -0,0 +1 @@
1
+ iflow-mcp_benhaotang_mcp-mma-docs
push_info.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "push_platform": "github",
3
+ "fork_url": "https://github.com/iflow-mcp/benhaotang-mcp-mma-docs",
4
+ "fork_branch": "iflow"
5
+ }
pyproject.toml ADDED
@@ -0,0 +1,22 @@
1
+ [project]
2
+ name = "iflow-mcp_benhaotang_mcp-mma-docs"
3
+ version = "0.1.0"
4
+ description = "Mathematica Documentation MCP server using wolframscript CLI"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ dependencies = [
8
+ "mcp>=1.3.0",
9
+ "aiohttp",
10
+ "pydantic",
11
+ "uvicorn",
12
+ ]
13
+
14
+ [project.scripts]
15
+ mcp-mma-docs = "mcp_mma_doc:main"
16
+
17
+ [build-system]
18
+ requires = ["hatchling"]
19
+ build-backend = "hatchling.build"
20
+
21
+ [tool.hatch.build.targets.wheel]
22
+ packages = ["."]
requirements.txt ADDED
@@ -0,0 +1,4 @@
1
+ mcp>=1.3.0
2
+ aiohttp
3
+ pydantic
4
+ uvicorn