Name | airulermcp JSON |
Version |
0.3.1
JSON |
| download |
home_page | None |
Summary | MCP server for distributing AI rules from GitLab repositories to IDEs |
upload_time | 2025-09-05 22:34:42 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.13 |
license | MIT |
keywords |
ai
gitlab
ide
mcp
model-context-protocol
tools
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# AIMCP
[](https://badge.fury.io/py/aimcp)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
AIMCP is an MCP (Model Context Protocol) server that enables teams to distribute MCP tool specifications from GitLab repositories to IDEs like Cursor and VS Code. The server discovers `tools.json` files in repositories, dynamically generates MCP tools from their specifications, and serves referenced files as resources through a secure URI scheme.
## Features
- **GitLab Integration**: Automatically discovers and fetches `tools.json` files from configured repositories
- **Dynamic Tool Generation**: Creates MCP tools from specifications at runtime
- **Secure Resource Access**: Serves repository files via `aimcp://` URI scheme with access control
- **Dual Caching**: Caches both tool specifications and file content for optimal performance
- **Conflict Resolution**: Handles duplicate tool names across repositories with configurable strategies
- **Async Architecture**: Built on `fastmcp` for high-performance async operations
## Installation
```bash
pip install aimcp
```
## Quick Start
1. Create a configuration file `config.yaml`:
```yaml
gitlab:
base_url: "https://gitlab.example.com"
token: "your-gitlab-token"
repositories:
- path: "team/tools-repo"
branch: "main"
cache:
type: "memory"
ttl: 3600
conflict_resolution: "prefix"
```
2. Run the server:
```bash
aimcp
```
3. Connect your IDE to the MCP server at the configured endpoint.
## Tool Specifications
Each repository must contain a `tools.json` file following the [MCP specification](https://spec.modelcontextprotocol.io/). Example:
```json
{
"tools": [
{
"name": "analyze_code",
"description": "Analyze code quality and suggest improvements",
"resourceRefs": ["analyzer_script", "analyzer_rules"]
}
}
],
"resources": [
{
"name": "analyzer_script",
"uri": "scripts/analyze.py",
},
{
"name": "analyzer_rules",
"uri": "configs/rules.yaml"
}
]
}
```
## Configuration
### Conflict Resolution Strategies
- `prefix`: Add repository prefix to tool names (`repo1_toolname`, `repo2_toolname`)
- `priority`: First repository in configuration order wins
- `error`: Fail startup with detailed conflict report
- `merge`: Combine tool descriptions and resource lists
### Cache Options
- `memory`: In-memory caching (default)
- `redis`: Redis-backed caching for distributed setups (not implemented)
## Development
### Prerequisites
- Python 3.13+
- uv (recommended package manager)
### Setup
```bash
# Clone the repository
git clone https://github.com/yourusername/aimcp.git
cd aimcp
# Install dependencies
uv sync --dev
# Run tests
uv run pytest
# Run linting
uv run ruff check .
# Run type checking
uv run mypy .
```
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## Vibe coding product
Generated with Claude
Raw data
{
"_id": null,
"home_page": null,
"name": "airulermcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.13",
"maintainer_email": "Lenny <rusts-talus-9g@icloud.com>",
"keywords": "ai, gitlab, ide, mcp, model-context-protocol, tools",
"author": null,
"author_email": "Lenny <rusts-talus-9g@icloud.com>",
"download_url": "https://files.pythonhosted.org/packages/a3/26/422a4ca180c65615650afd2129213927d4dc8daf81c6fadf18e0a2908d25/airulermcp-0.3.1.tar.gz",
"platform": null,
"description": "# AIMCP\n\n[](https://badge.fury.io/py/aimcp)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\nAIMCP is an MCP (Model Context Protocol) server that enables teams to distribute MCP tool specifications from GitLab repositories to IDEs like Cursor and VS Code. The server discovers `tools.json` files in repositories, dynamically generates MCP tools from their specifications, and serves referenced files as resources through a secure URI scheme.\n\n## Features\n\n- **GitLab Integration**: Automatically discovers and fetches `tools.json` files from configured repositories\n- **Dynamic Tool Generation**: Creates MCP tools from specifications at runtime\n- **Secure Resource Access**: Serves repository files via `aimcp://` URI scheme with access control\n- **Dual Caching**: Caches both tool specifications and file content for optimal performance\n- **Conflict Resolution**: Handles duplicate tool names across repositories with configurable strategies\n- **Async Architecture**: Built on `fastmcp` for high-performance async operations\n\n## Installation\n\n```bash\npip install aimcp\n```\n\n## Quick Start\n\n1. Create a configuration file `config.yaml`:\n\n```yaml\ngitlab:\n base_url: \"https://gitlab.example.com\"\n token: \"your-gitlab-token\"\n repositories:\n - path: \"team/tools-repo\"\n branch: \"main\"\n\ncache:\n type: \"memory\"\n ttl: 3600\n\nconflict_resolution: \"prefix\"\n```\n\n2. Run the server:\n\n```bash\naimcp\n```\n\n3. Connect your IDE to the MCP server at the configured endpoint.\n\n## Tool Specifications\n\nEach repository must contain a `tools.json` file following the [MCP specification](https://spec.modelcontextprotocol.io/). Example:\n\n```json\n{\n \"tools\": [\n {\n \"name\": \"analyze_code\",\n \"description\": \"Analyze code quality and suggest improvements\",\n \"resourceRefs\": [\"analyzer_script\", \"analyzer_rules\"]\n }\n }\n ],\n \"resources\": [\n {\n \"name\": \"analyzer_script\",\n \"uri\": \"scripts/analyze.py\",\n },\n {\n \"name\": \"analyzer_rules\",\n \"uri\": \"configs/rules.yaml\"\n }\n ]\n}\n```\n\n## Configuration\n\n### Conflict Resolution Strategies\n\n- `prefix`: Add repository prefix to tool names (`repo1_toolname`, `repo2_toolname`)\n- `priority`: First repository in configuration order wins\n- `error`: Fail startup with detailed conflict report\n- `merge`: Combine tool descriptions and resource lists\n\n### Cache Options\n\n- `memory`: In-memory caching (default)\n- `redis`: Redis-backed caching for distributed setups (not implemented)\n\n## Development\n\n### Prerequisites\n\n- Python 3.13+\n- uv (recommended package manager)\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/yourusername/aimcp.git\ncd aimcp\n\n# Install dependencies\nuv sync --dev\n\n# Run tests\nuv run pytest\n\n# Run linting\nuv run ruff check .\n\n# Run type checking\nuv run mypy .\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Vibe coding product\n\nGenerated with Claude\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "MCP server for distributing AI rules from GitLab repositories to IDEs",
"version": "0.3.1",
"project_urls": {
"Documentation": "https://github.com/junqed/aimcp#readme",
"Homepage": "https://github.com/junqed/aimcp",
"Issues": "https://github.com/junqed/aimcp/issues",
"Repository": "https://github.com/junqed/aimcp"
},
"split_keywords": [
"ai",
" gitlab",
" ide",
" mcp",
" model-context-protocol",
" tools"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a1bd350a59c27941cab516ca9396d6db30e14ceb248bd815782a9386cb855f97",
"md5": "1379adc5ab927b283ab8e61866ed7df7",
"sha256": "4a5e648fc1e1b310e7f40572b442ccba3757331e1e24d9fc5d4b6da3da658d51"
},
"downloads": -1,
"filename": "airulermcp-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1379adc5ab927b283ab8e61866ed7df7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.13",
"size": 34791,
"upload_time": "2025-09-05T22:34:40",
"upload_time_iso_8601": "2025-09-05T22:34:40.728690Z",
"url": "https://files.pythonhosted.org/packages/a1/bd/350a59c27941cab516ca9396d6db30e14ceb248bd815782a9386cb855f97/airulermcp-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a326422a4ca180c65615650afd2129213927d4dc8daf81c6fadf18e0a2908d25",
"md5": "94bc53401e3a8b43a0b97e843d960053",
"sha256": "acb82ad6db2fcd01d3f9f7f11cc9e5f70f57310a9774978df299d7d52340ee5a"
},
"downloads": -1,
"filename": "airulermcp-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "94bc53401e3a8b43a0b97e843d960053",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.13",
"size": 67637,
"upload_time": "2025-09-05T22:34:42",
"upload_time_iso_8601": "2025-09-05T22:34:42.148140Z",
"url": "https://files.pythonhosted.org/packages/a3/26/422a4ca180c65615650afd2129213927d4dc8daf81c6fadf18e0a2908d25/airulermcp-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-05 22:34:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "junqed",
"github_project": "aimcp#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "airulermcp"
}