ims-mcp 1.0.0__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.
ims_mcp-1.0.0/LICENSE ADDED
@@ -0,0 +1,52 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Igor Solomatov
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.
22
+
23
+ ================================================================================
24
+ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
25
+ ================================================================================
26
+
27
+ This package integrates with and depends on R2R (RAG to Riches), which is
28
+ licensed under the MIT License:
29
+
30
+ R2R - Advanced AI Retrieval System
31
+ Copyright (c) 2024 SciPhi AI
32
+ Repository: https://github.com/SciPhi-AI/R2R
33
+ License: MIT
34
+
35
+ Permission is hereby granted, free of charge, to any person obtaining a copy
36
+ of this software and associated documentation files (the "Software"), to deal
37
+ in the Software without restriction, including without limitation the rights
38
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
39
+ copies of the Software, and to permit persons to whom the Software is
40
+ furnished to do so, subject to the following conditions:
41
+
42
+ The above copyright notice and this permission notice shall be included in all
43
+ copies or substantial portions of the Software.
44
+
45
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
46
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
47
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
48
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
49
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
50
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
51
+ SOFTWARE.
52
+
ims_mcp-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,326 @@
1
+ Metadata-Version: 2.4
2
+ Name: ims-mcp
3
+ Version: 1.0.0
4
+ Summary: Model Context Protocol server for IMS (Instruction Management Systems)
5
+ Author: Igor Solomatov
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://pypi.org/project/ims-mcp/
8
+ Keywords: mcp,ims,retrieval,rag,ai,llm,model-context-protocol,knowledge-base
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: r2r>=3.6.0
21
+ Requires-Dist: mcp>=1.0.0
22
+ Provides-Extra: dev
23
+ Requires-Dist: build>=1.0.0; extra == "dev"
24
+ Requires-Dist: twine>=4.0.0; extra == "dev"
25
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
26
+ Dynamic: license-file
27
+
28
+ # ims-mcp
29
+
30
+ **Model Context Protocol (MCP) server for Rosetta (Enterprise Engineering Governance and Instructions Management System)**
31
+
32
+ *Powered by R2R technology for advanced RAG capabilities*
33
+
34
+ This package provides a FastMCP server that connects to IMS servers for advanced retrieval-augmented generation (RAG) capabilities. It enables AI assistants like Claude Desktop, Cursor, and other MCP clients to search, retrieve, and manage documents in Rosetta knowledge bases.
35
+
36
+ ## Features
37
+
38
+ - 🔍 **Semantic Search** - Vector-based and full-text search across documents
39
+ - 🤖 **RAG Queries** - Retrieval-augmented generation with configurable LLM settings
40
+ - 📝 **Document Management** - Upload, update, list, and delete documents with upsert semantics
41
+ - 🏷️ **Metadata Filtering** - Advanced filtering by tags, domain, and custom metadata
42
+ - 🌐 **Environment-Based Config** - Zero configuration, reads from environment variables
43
+
44
+ ## Installation
45
+
46
+ ### Using uvx (recommended)
47
+
48
+ The easiest way to use ims-mcp is with `uvx`, which automatically handles installation:
49
+
50
+ ```bash
51
+ uvx ims-mcp
52
+ ```
53
+
54
+ ### Using pip
55
+
56
+ Install globally or in a virtual environment:
57
+
58
+ ```bash
59
+ pip install ims-mcp
60
+ ```
61
+
62
+ Then run:
63
+
64
+ ```bash
65
+ ims-mcp
66
+ ```
67
+
68
+ ### As a Python Module
69
+
70
+ You can also run it as a module:
71
+
72
+ ```bash
73
+ python -m ims_mcp
74
+ ```
75
+
76
+ ## Configuration
77
+
78
+ The server automatically reads configuration from environment variables:
79
+
80
+ | Variable | Description | Default |
81
+ |----------|-------------|---------|
82
+ | `R2R_API_BASE` or `R2R_BASE_URL` | IMS server URL | `http://localhost:7272` |
83
+ | `R2R_COLLECTION` | Collection name for queries | Server default |
84
+ | `R2R_API_KEY` | API key for authentication | None |
85
+
86
+ **Note:** Environment variables use `R2R_` prefix for compatibility with the underlying R2R SDK.
87
+
88
+ ## Usage with MCP Clients
89
+
90
+ ### Cursor IDE
91
+
92
+ Add to `.cursor/mcp.json`:
93
+
94
+ ```json
95
+ {
96
+ "mcpServers": {
97
+ "KnowledgeBase": {
98
+ "command": "uvx",
99
+ "args": ["ims-mcp"],
100
+ "env": {
101
+ "R2R_API_BASE": "http://localhost:7272",
102
+ "R2R_COLLECTION": "aia-r1"
103
+ }
104
+ }
105
+ }
106
+ }
107
+ ```
108
+
109
+ ### Claude Desktop
110
+
111
+ Add to Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
112
+
113
+ ```json
114
+ {
115
+ "mcpServers": {
116
+ "ims": {
117
+ "command": "uvx",
118
+ "args": ["ims-mcp"],
119
+ "env": {
120
+ "R2R_API_BASE": "http://localhost:7272",
121
+ "R2R_COLLECTION": "my-collection"
122
+ }
123
+ }
124
+ }
125
+ }
126
+ ```
127
+
128
+ ### Other MCP Clients
129
+
130
+ Any MCP client can use ims-mcp by specifying the command and environment variables:
131
+
132
+ ```json
133
+ {
134
+ "command": "uvx",
135
+ "args": ["ims-mcp"],
136
+ "env": {
137
+ "R2R_API_BASE": "http://localhost:7272"
138
+ }
139
+ }
140
+ ```
141
+
142
+ ## Available MCP Tools
143
+
144
+ ### 1. search
145
+
146
+ Perform semantic and full-text search across documents.
147
+
148
+ **Parameters:**
149
+ - `query` (str): Search query
150
+ - `filters` (dict, optional): Metadata filters (e.g., `{"tags": {"$in": ["agents"]}}`)
151
+ - `limit` (int, optional): Maximum results
152
+ - `use_semantic_search` (bool, optional): Enable vector search
153
+ - `use_fulltext_search` (bool, optional): Enable full-text search
154
+
155
+ **Example:**
156
+ ```python
157
+ search("machine learning", filters={"tags": {"$in": ["research"]}}, limit=5)
158
+ ```
159
+
160
+ ### 2. rag
161
+
162
+ Retrieval-augmented generation with LLM.
163
+
164
+ **Parameters:**
165
+ - `query` (str): Question to answer
166
+ - `filters` (dict, optional): Metadata filters
167
+ - `limit` (int, optional): Max search results to use
168
+ - `model` (str, optional): LLM model name
169
+ - `temperature` (float, optional): Response randomness (0-1)
170
+ - `max_tokens` (int, optional): Max response length
171
+
172
+ **Example:**
173
+ ```python
174
+ rag("What is machine learning?", model="gpt-4", temperature=0.7)
175
+ ```
176
+
177
+ ### 3. put_document
178
+
179
+ Upload or update a document with upsert semantics.
180
+
181
+ **Parameters:**
182
+ - `content` (str): Document text content
183
+ - `title` (str): Document title
184
+ - `metadata` (dict, optional): Custom metadata (e.g., `{"tags": ["research"], "author": "John"}`)
185
+ - `document_id` (str, optional): Explicit document ID
186
+
187
+ **Example:**
188
+ ```python
189
+ put_document(
190
+ content="Machine learning is...",
191
+ title="ML Guide",
192
+ metadata={"tags": ["research", "ml"]}
193
+ )
194
+ ```
195
+
196
+ ### 4. list_documents
197
+
198
+ List documents with pagination and optional tag filtering.
199
+
200
+ **Parameters:**
201
+ - `offset` (int, optional): Documents to skip (default: 0)
202
+ - `limit` (int, optional): Max documents (default: 100)
203
+ - `document_ids` (list[str], optional): Specific IDs to retrieve
204
+ - `compact_view` (bool, optional): Show only ID and title (default: False)
205
+ - `tags` (list[str], optional): Filter by tags (e.g., `["agents", "r1"]`)
206
+ - `match_all_tags` (bool, optional): If True, document must have ALL tags; if False (default), document must have ANY tag
207
+
208
+ **Examples:**
209
+ ```python
210
+ # List all documents
211
+ list_documents(offset=0, limit=10, compact_view=False)
212
+
213
+ # Filter by tags (ANY mode - documents with "research" OR "ml")
214
+ list_documents(tags=["research", "ml"])
215
+
216
+ # Filter by tags (ALL mode - documents with both "research" AND "ml")
217
+ list_documents(tags=["research", "ml"], match_all_tags=True)
218
+ ```
219
+
220
+ **Note:** Tag filtering is performed client-side after fetching results. For large collections with complex filtering needs, consider using the `search()` tool with metadata filters instead.
221
+
222
+ ### 5. get_document
223
+
224
+ Retrieve a specific document by ID or title.
225
+
226
+ **Parameters:**
227
+ - `document_id` (str, optional): Document ID
228
+ - `title` (str, optional): Document title
229
+
230
+ **Example:**
231
+ ```python
232
+ get_document(title="ML Guide")
233
+ ```
234
+
235
+ ### 6. delete_document
236
+
237
+ Delete a document by ID.
238
+
239
+ **Parameters:**
240
+ - `document_id` (str, required): The unique identifier of the document to delete
241
+
242
+ **Example:**
243
+ ```python
244
+ delete_document(document_id="550e8400-e29b-41d4-a716-446655440000")
245
+ ```
246
+
247
+ **Returns:**
248
+ - Success message with document ID on successful deletion
249
+ - Error message if document not found or permission denied
250
+
251
+ ## Metadata Filtering
252
+
253
+ All filter operators supported:
254
+
255
+ - `$eq`: Equal
256
+ - `$neq`: Not equal
257
+ - `$gt`, `$gte`: Greater than (or equal)
258
+ - `$lt`, `$lte`: Less than (or equal)
259
+ - `$in`: In array
260
+ - `$nin`: Not in array
261
+ - `$like`, `$ilike`: Pattern matching (case-sensitive/insensitive)
262
+
263
+ **Examples:**
264
+
265
+ ```python
266
+ # Filter by tags
267
+ filters={"tags": {"$in": ["research", "ml"]}}
268
+
269
+ # Filter by domain
270
+ filters={"domain": {"$eq": "instructions"}}
271
+
272
+ # Combined filters
273
+ filters={"tags": {"$in": ["research"]}, "created_at": {"$gte": "2024-01-01"}}
274
+ ```
275
+
276
+ ## Development
277
+
278
+ ### Local Installation
279
+
280
+ Install directly from PyPI:
281
+
282
+ ```bash
283
+ pip install ims-mcp
284
+ ```
285
+
286
+ Or for the latest development version, install from source if you have the code locally:
287
+
288
+ ```bash
289
+ pip install -e .
290
+ ```
291
+
292
+ ### Running Tests
293
+
294
+ ```bash
295
+ pip install -e ".[dev]"
296
+ pytest
297
+ ```
298
+
299
+ ### Building for Distribution
300
+
301
+ ```bash
302
+ python -m build
303
+ ```
304
+
305
+ ## Requirements
306
+
307
+ - Python >= 3.10
308
+ - IMS server running and accessible (powered by R2R Light)
309
+ - r2r Python SDK >= 3.6.0
310
+ - mcp >= 1.0.0
311
+
312
+ ## License
313
+
314
+ MIT License - see LICENSE file for details
315
+
316
+ This package is built on R2R (RAG to Riches) technology by SciPhi AI, which is licensed under the MIT License. We gratefully acknowledge the R2R project and its contributors.
317
+
318
+ ## Links
319
+
320
+ - **R2R Technology**: https://github.com/SciPhi-AI/R2R
321
+ - **Model Context Protocol**: https://modelcontextprotocol.io/
322
+ - **FastMCP**: https://github.com/jlowin/fastmcp
323
+
324
+ ## Support
325
+
326
+ For issues and questions, visit the package page: https://pypi.org/project/ims-mcp/
@@ -0,0 +1,299 @@
1
+ # ims-mcp
2
+
3
+ **Model Context Protocol (MCP) server for Rosetta (Enterprise Engineering Governance and Instructions Management System)**
4
+
5
+ *Powered by R2R technology for advanced RAG capabilities*
6
+
7
+ This package provides a FastMCP server that connects to IMS servers for advanced retrieval-augmented generation (RAG) capabilities. It enables AI assistants like Claude Desktop, Cursor, and other MCP clients to search, retrieve, and manage documents in Rosetta knowledge bases.
8
+
9
+ ## Features
10
+
11
+ - 🔍 **Semantic Search** - Vector-based and full-text search across documents
12
+ - 🤖 **RAG Queries** - Retrieval-augmented generation with configurable LLM settings
13
+ - 📝 **Document Management** - Upload, update, list, and delete documents with upsert semantics
14
+ - 🏷️ **Metadata Filtering** - Advanced filtering by tags, domain, and custom metadata
15
+ - 🌐 **Environment-Based Config** - Zero configuration, reads from environment variables
16
+
17
+ ## Installation
18
+
19
+ ### Using uvx (recommended)
20
+
21
+ The easiest way to use ims-mcp is with `uvx`, which automatically handles installation:
22
+
23
+ ```bash
24
+ uvx ims-mcp
25
+ ```
26
+
27
+ ### Using pip
28
+
29
+ Install globally or in a virtual environment:
30
+
31
+ ```bash
32
+ pip install ims-mcp
33
+ ```
34
+
35
+ Then run:
36
+
37
+ ```bash
38
+ ims-mcp
39
+ ```
40
+
41
+ ### As a Python Module
42
+
43
+ You can also run it as a module:
44
+
45
+ ```bash
46
+ python -m ims_mcp
47
+ ```
48
+
49
+ ## Configuration
50
+
51
+ The server automatically reads configuration from environment variables:
52
+
53
+ | Variable | Description | Default |
54
+ |----------|-------------|---------|
55
+ | `R2R_API_BASE` or `R2R_BASE_URL` | IMS server URL | `http://localhost:7272` |
56
+ | `R2R_COLLECTION` | Collection name for queries | Server default |
57
+ | `R2R_API_KEY` | API key for authentication | None |
58
+
59
+ **Note:** Environment variables use `R2R_` prefix for compatibility with the underlying R2R SDK.
60
+
61
+ ## Usage with MCP Clients
62
+
63
+ ### Cursor IDE
64
+
65
+ Add to `.cursor/mcp.json`:
66
+
67
+ ```json
68
+ {
69
+ "mcpServers": {
70
+ "KnowledgeBase": {
71
+ "command": "uvx",
72
+ "args": ["ims-mcp"],
73
+ "env": {
74
+ "R2R_API_BASE": "http://localhost:7272",
75
+ "R2R_COLLECTION": "aia-r1"
76
+ }
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ ### Claude Desktop
83
+
84
+ Add to Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
85
+
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "ims": {
90
+ "command": "uvx",
91
+ "args": ["ims-mcp"],
92
+ "env": {
93
+ "R2R_API_BASE": "http://localhost:7272",
94
+ "R2R_COLLECTION": "my-collection"
95
+ }
96
+ }
97
+ }
98
+ }
99
+ ```
100
+
101
+ ### Other MCP Clients
102
+
103
+ Any MCP client can use ims-mcp by specifying the command and environment variables:
104
+
105
+ ```json
106
+ {
107
+ "command": "uvx",
108
+ "args": ["ims-mcp"],
109
+ "env": {
110
+ "R2R_API_BASE": "http://localhost:7272"
111
+ }
112
+ }
113
+ ```
114
+
115
+ ## Available MCP Tools
116
+
117
+ ### 1. search
118
+
119
+ Perform semantic and full-text search across documents.
120
+
121
+ **Parameters:**
122
+ - `query` (str): Search query
123
+ - `filters` (dict, optional): Metadata filters (e.g., `{"tags": {"$in": ["agents"]}}`)
124
+ - `limit` (int, optional): Maximum results
125
+ - `use_semantic_search` (bool, optional): Enable vector search
126
+ - `use_fulltext_search` (bool, optional): Enable full-text search
127
+
128
+ **Example:**
129
+ ```python
130
+ search("machine learning", filters={"tags": {"$in": ["research"]}}, limit=5)
131
+ ```
132
+
133
+ ### 2. rag
134
+
135
+ Retrieval-augmented generation with LLM.
136
+
137
+ **Parameters:**
138
+ - `query` (str): Question to answer
139
+ - `filters` (dict, optional): Metadata filters
140
+ - `limit` (int, optional): Max search results to use
141
+ - `model` (str, optional): LLM model name
142
+ - `temperature` (float, optional): Response randomness (0-1)
143
+ - `max_tokens` (int, optional): Max response length
144
+
145
+ **Example:**
146
+ ```python
147
+ rag("What is machine learning?", model="gpt-4", temperature=0.7)
148
+ ```
149
+
150
+ ### 3. put_document
151
+
152
+ Upload or update a document with upsert semantics.
153
+
154
+ **Parameters:**
155
+ - `content` (str): Document text content
156
+ - `title` (str): Document title
157
+ - `metadata` (dict, optional): Custom metadata (e.g., `{"tags": ["research"], "author": "John"}`)
158
+ - `document_id` (str, optional): Explicit document ID
159
+
160
+ **Example:**
161
+ ```python
162
+ put_document(
163
+ content="Machine learning is...",
164
+ title="ML Guide",
165
+ metadata={"tags": ["research", "ml"]}
166
+ )
167
+ ```
168
+
169
+ ### 4. list_documents
170
+
171
+ List documents with pagination and optional tag filtering.
172
+
173
+ **Parameters:**
174
+ - `offset` (int, optional): Documents to skip (default: 0)
175
+ - `limit` (int, optional): Max documents (default: 100)
176
+ - `document_ids` (list[str], optional): Specific IDs to retrieve
177
+ - `compact_view` (bool, optional): Show only ID and title (default: False)
178
+ - `tags` (list[str], optional): Filter by tags (e.g., `["agents", "r1"]`)
179
+ - `match_all_tags` (bool, optional): If True, document must have ALL tags; if False (default), document must have ANY tag
180
+
181
+ **Examples:**
182
+ ```python
183
+ # List all documents
184
+ list_documents(offset=0, limit=10, compact_view=False)
185
+
186
+ # Filter by tags (ANY mode - documents with "research" OR "ml")
187
+ list_documents(tags=["research", "ml"])
188
+
189
+ # Filter by tags (ALL mode - documents with both "research" AND "ml")
190
+ list_documents(tags=["research", "ml"], match_all_tags=True)
191
+ ```
192
+
193
+ **Note:** Tag filtering is performed client-side after fetching results. For large collections with complex filtering needs, consider using the `search()` tool with metadata filters instead.
194
+
195
+ ### 5. get_document
196
+
197
+ Retrieve a specific document by ID or title.
198
+
199
+ **Parameters:**
200
+ - `document_id` (str, optional): Document ID
201
+ - `title` (str, optional): Document title
202
+
203
+ **Example:**
204
+ ```python
205
+ get_document(title="ML Guide")
206
+ ```
207
+
208
+ ### 6. delete_document
209
+
210
+ Delete a document by ID.
211
+
212
+ **Parameters:**
213
+ - `document_id` (str, required): The unique identifier of the document to delete
214
+
215
+ **Example:**
216
+ ```python
217
+ delete_document(document_id="550e8400-e29b-41d4-a716-446655440000")
218
+ ```
219
+
220
+ **Returns:**
221
+ - Success message with document ID on successful deletion
222
+ - Error message if document not found or permission denied
223
+
224
+ ## Metadata Filtering
225
+
226
+ All filter operators supported:
227
+
228
+ - `$eq`: Equal
229
+ - `$neq`: Not equal
230
+ - `$gt`, `$gte`: Greater than (or equal)
231
+ - `$lt`, `$lte`: Less than (or equal)
232
+ - `$in`: In array
233
+ - `$nin`: Not in array
234
+ - `$like`, `$ilike`: Pattern matching (case-sensitive/insensitive)
235
+
236
+ **Examples:**
237
+
238
+ ```python
239
+ # Filter by tags
240
+ filters={"tags": {"$in": ["research", "ml"]}}
241
+
242
+ # Filter by domain
243
+ filters={"domain": {"$eq": "instructions"}}
244
+
245
+ # Combined filters
246
+ filters={"tags": {"$in": ["research"]}, "created_at": {"$gte": "2024-01-01"}}
247
+ ```
248
+
249
+ ## Development
250
+
251
+ ### Local Installation
252
+
253
+ Install directly from PyPI:
254
+
255
+ ```bash
256
+ pip install ims-mcp
257
+ ```
258
+
259
+ Or for the latest development version, install from source if you have the code locally:
260
+
261
+ ```bash
262
+ pip install -e .
263
+ ```
264
+
265
+ ### Running Tests
266
+
267
+ ```bash
268
+ pip install -e ".[dev]"
269
+ pytest
270
+ ```
271
+
272
+ ### Building for Distribution
273
+
274
+ ```bash
275
+ python -m build
276
+ ```
277
+
278
+ ## Requirements
279
+
280
+ - Python >= 3.10
281
+ - IMS server running and accessible (powered by R2R Light)
282
+ - r2r Python SDK >= 3.6.0
283
+ - mcp >= 1.0.0
284
+
285
+ ## License
286
+
287
+ MIT License - see LICENSE file for details
288
+
289
+ This package is built on R2R (RAG to Riches) technology by SciPhi AI, which is licensed under the MIT License. We gratefully acknowledge the R2R project and its contributors.
290
+
291
+ ## Links
292
+
293
+ - **R2R Technology**: https://github.com/SciPhi-AI/R2R
294
+ - **Model Context Protocol**: https://modelcontextprotocol.io/
295
+ - **FastMCP**: https://github.com/jlowin/fastmcp
296
+
297
+ ## Support
298
+
299
+ For issues and questions, visit the package page: https://pypi.org/project/ims-mcp/
@@ -0,0 +1,20 @@
1
+ """IMS MCP Server - Model Context Protocol server for IMS (Instruction Management Systems).
2
+
3
+ This package provides a FastMCP server that connects to IMS
4
+ for advanced retrieval-augmented generation capabilities.
5
+
6
+ Environment Variables:
7
+ R2R_API_BASE: IMS server URL (default: http://localhost:7272)
8
+ R2R_COLLECTION: Collection name for queries (optional)
9
+ R2R_API_KEY: API key for authentication (optional)
10
+
11
+ Note: Environment variables use R2R_ prefix for compatibility with underlying R2R SDK.
12
+ """
13
+
14
+ __version__ = "1.0.0"
15
+ __author__ = "Igor Solomatov"
16
+
17
+ from ims_mcp.server import mcp
18
+
19
+ __all__ = ["mcp", "__version__"]
20
+
@@ -0,0 +1,11 @@
1
+ """Entry point for running ims-mcp as a module.
2
+
3
+ This allows the package to be executed as:
4
+ python -m ims_mcp
5
+ """
6
+
7
+ from ims_mcp.server import main
8
+
9
+ if __name__ == "__main__":
10
+ main()
11
+