About Mcpstore
Mcpstore is an MCP server published by ip2a in the Commerce category: elegantly manage your MCP services.
The repository has 431 stars and 32 forks, with the last commit 2 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/ip2a/mcpstoreThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Mcpstore
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 4 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
1 check has not been run yet.
Releases
README
Why mcpstore
mcpstore is built with Rust for high performance and low overhead. Its architecture mirrors Kubernetes-style control plane / data plane: the control plane handles orchestration, while the data plane focuses on invocation. On resource-constrained hosts you can attach only the data plane and call already-shared MCP services with zero local maintenance. SDKs are available for embedding into applications and Agents.
Quick Start
npm install -g ip2a@mcpstore
or
curl -fsSL https://raw.githubusercontent.com/ip2a/mcpstore/main/install.sh | bash
Prefer code integration? → Use via SDK
CLI Usage
Manage MCP services and runtime state from the CLI. See Quick Start above for installation.
Add, connect, restart, or remove a service:
mcpstore add wiki https://example.com/mcp
mcpstore list
mcpstore connect wiki
mcpstore remove wiki
Inspect local config, or open the Web UI:
mcpstore config show
mcpstore web
Expose an HTTP API:
mcpstore api --host 127.0.0.1 --port 1820
Desktop App (Beta)
The GUI is the control plane: manage MCP services and tools, inspect parameters, and try invocations. Currently in Beta — download from GitHub Releases.
SDK Usage
Integrate mcpstore into your application via the Python SDK or Rust Lib.
Install
pip install mcpstore
Quick Start
Initialize a store:
from mcpstore import MCPStore
store = MCPStore.setup_store()
Use store.for_store() to manage MCP services and tools in the global scope.
Add your first service
store.for_store().add_service({
"mcpServers": {
"mcpstore_wiki": {
"url": "https://example.com/mcp"
}
}
})
store.for_store().wait_service("mcpstore_wiki")
Convert to LangChain tools and use them
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
tools = store.for_store().for_langchain().list_tools()
llm = ChatOpenAI(
temperature=0,
model="your-model",
api_key="sk-*****",
base_url="https://api.xxx.com",
)
agent = create_agent(model=llm, tools=tools, system_prompt="You are an assistant")
events = agent.invoke({
"messages": [{"role": "user", "content": "How do I add a service in mcpstore?"}]
})
print(events)
| Framework | Get tools |
|---|---|
| LangChain | tools = store.for_store().for_langchain().list_tools() |
| LangGraph | tools = store.for_store().for_langgraph().list_tools() |
| OpenAI | tools = store.for_store().for_openai().list_tools() |
| AutoGen | tools = store.for_store().for_autogen().list_tools() |
| CrewAI | tools = store.for_store().for_crewai().list_tools() |
| LlamaIndex | tools = store.for_store().for_llamaindex().list_tools() |
Group by Agent
Use for_agent(agent_id) to create an independent scope per Agent:
store.for_agent("agent1").add_service({
"name": "mcpstore_wiki",
"url": "https://example.com/mcp",
})
store.for_agent("agent2").add_service({
"name": "github",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
},
})
agent1_tools = store.for_agent("agent1").list_tools()
agent2_tools = store.for_agent("agent2").list_tools()
Install
cargo add mcpstore
Quick Start
use std::time::Duration;
use mcpstore::{McpConfig, MCPStore, Result, ServiceTarget};
#[tokio::main]
async fn main() -> Result<()> {
let store = MCPStore::setup(None)?;
store
.for_store()
.add_service(McpConfig::from_json_str(
r#"{"name":"mcpstore_wiki","url":"https://example.com/mcp"}"#,
)?)
.await?;
store
.for_store()
.wait_service(
ServiceTarget::ServiceName("mcpstore_wiki"),
Duration::from_secs(30),
)
.await?;
let tools = store.for_store().list_tools().await?;
println!("loaded tools: {}", tools.len());
Ok(())
}
| Action | Example |
|---|---|
| Add service | store.for_store().add_service(config) |
| Get service info | store.for_store().find_service("service_name").info() |
| Update service | store.for_store().update_service("service_name", new_config) |
| Restart service | store.for_store().restart_service("service_name") |
| Disconnect service | store.for_store().disconnect_service("service_name") |
| Remove service | store.for_store().remove_service(service_name="service_name") |
| List services | store.for_store().list_services() |
| List tools | store.for_store().list_tools() |
| List prompts in current scope | store.for_store().list_prompts() |
| Show config | store.for_store().show_config() |
| List agents | store.list_agents() |
Star History
Issues and suggestions are welcome via GitHub Issues.
README fetched from the repository 4 hours ago. The original is authoritative.